O Managed Service for Prometheus disponibiliza URLs de API HTTP que permitem consultar dados de monitoramento fora do console da Alibaba Cloud. Dois casos de uso comuns:
Grafana autogerenciado: adicione a URL da API HTTP como fonte de dados do Prometheus para visualizar métricas na sua instância do Grafana.
Aplicações personalizadas: chame a API HTTP compatível com Prometheus diretamente para recuperar métricas programaticamente.
Autenticação
O Managed Service for Prometheus oferece duas versões de instância, cada uma com um método de autenticação diferente.
|
Versão da instância |
Método de autenticação |
Credenciais |
|
Prometheus V1 |
Baseado em token (opcional) |
Token de autenticação gerado no console |
|
Prometheus V2 |
Basic auth (obrigatório) |
AccessKey ID e AccessKey secret da conta; o usuário RAM associado deve ter a permissão |
No Prometheus V2, o acesso aos dados exige o AccessKey ID e o AccessKey secret da conta. Além disso, o usuário RAM associado deve ter a permissão do sistema AliyunPrometheusMetricReadAccess ou AliyunCloudMonitorFullAccess.
Pré-requisitos
Antes de começar, verifique se você tem:
-
Uma instância do Prometheus conectada. Para instruções de configuração, consulte:
(Para Grafana) Uma instância do Grafana autogerenciada com acesso de administrador.
(Para Prometheus V2) Um par de AccessKeys da conta e as permissões necessárias no usuário RAM associado.
Obtenha a URL da API HTTP
Faça login no console do CloudMonitor.
No painel de navegação à esquerda, escolha Managed Service for Prometheus > Instances.
Na barra de navegação superior, selecione a região onde a instância do Prometheus está localizada.
Localize a instância do Prometheus e clique em Settings na coluna Actions.
-
Na aba Settings, copie a URL da API HTTP.

Use a URL pública se a instância do Grafana ou a aplicação estiver fora da rede interna da Alibaba Cloud.
Use a URL interna se a instância do Grafana ou a aplicação estiver na mesma região da Alibaba Cloud e puder acessar endpoints internos.
(Apenas Prometheus V1) Clique em Generate Token para criar um token de autenticação. Salve este token para uso posterior.
Em instâncias do Prometheus V1, após gerar o token, inclua-o ao configurar a fonte de dados no Grafana. Sem o token, o Grafana não consegue ler os dados de monitoramento da instância.
Configure uma fonte de dados no Grafana autogerenciado
Adicione a fonte de dados
Faça login na instância do Grafana como administrador.
-
Acesse Connections > Data sources.
Este menu é visível apenas para administradores do Grafana. No Grafana 8 e versões anteriores, acesse Configuration > Data sources . O menu Connections está disponível no Grafana 9 e versões posteriores.
Clique em + Add data source e selecione Prometheus.
No campo Name, insira um nome descritivo para a fonte de dados.
No campo Prometheus server URL (na seção HTTP), cole a URL da API HTTP copiada anteriormente.
Configure a autenticação
Siga as etapas correspondentes à versão da instância do Prometheus.
Prometheus V1
Se você gerou um token, adicione-o como cabeçalho HTTP personalizado:
Na seção Custom HTTP Headers, clique em + Add header.
Defina Header como
Authorization.Defina Value como o token de autenticação.

Prometheus V2
Ative Basic auth.
Defina User como seu AccessKey ID.
Defina Password como seu AccessKey secret.

Salve e teste
Clique em Save & test. Uma mensagem de sucesso confirma que o Grafana consegue acessar a fonte de dados do Prometheus.
Verifique a fonte de dados no Grafana
No Grafana, acesse Dashboards e clique em New > New dashboard.
Clique em + Add visualization e selecione a fonte de dados configurada.
Na página Edit Panel, abra a aba Query. Na seção A, insira o nome de uma métrica no campo Metrics (por exemplo,
arms_prometheus_target_interval_length_seconds_sum) e configure os Label filters conforme necessário.Clique em Run queries.
Se um gráfico for renderizado com dados de métricas, a fonte de dados estará funcionando corretamente. Caso nenhum gráfico apareça, verifique se a URL da API ou o token são válidos e se a fonte de dados possui informações de monitoramento. Para obter ajuda adicional, consulte Solução de problemas.
Consulte a API HTTP programaticamente
Os exemplos abaixo usam o endpoint /api/v1/query para consultas instantâneas. Para consultas de intervalo (/api/v1/query_range), metadados de séries e outros endpoints, consulte a referência da API HTTP do Prometheus.
Prometheus V1
curl -G '<your-http-api-url>/api/v1/query' \
-H 'Authorization: <your-token>' \
-H 'Accept: application/json' \
--data-urlencode 'query=arms_prometheus_target_interval_length_seconds_sum' \
--data-urlencode 'time=1635302655' \
--data-urlencode 'timeout=1000'
Substitua os seguintes espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
A URL da API HTTP obtida na aba Settings |
|
|
|
O token de autenticação gerado no console |
|
Também é possível chamar a API via Python usando a biblioteca requests:
import requests
token = "your-token"
api_url = "https://your-prometheus-api-url"
response = requests.get(
f"{api_url}/api/v1/query",
params={"query": "up"},
headers={"Authorization": f"Bearer {token}"}
)
data = response.json()
for result in data["data"]["result"]:
print(f"Metric: {result['metric']}")
print(f"Value: {result['value']}")
Substitua token pelo token de autenticação gerado na etapa 1 e api_url pela sua URL da API HTTP.
Prometheus V2
curl -G '<your-http-api-url>/api/v1/query' \
-u '<your-accesskey-id>:<your-accesskey-secret>' \
-H 'Accept: application/json' \
--data-urlencode 'query=arms_prometheus_target_interval_length_seconds_sum' \
--data-urlencode 'time=1635302655' \
--data-urlencode 'timeout=1000'
Substitua os seguintes espaços reservados pelos valores reais:
|
Espaço reservado |
Descrição |
Exemplo |
|
|
A URL da API HTTP obtida na aba Settings |
|
|
|
O AccessKey ID da sua conta |
|
|
|
O AccessKey secret da sua conta |
|
A flag-ucodifica automaticamente o AccessKey ID e o AccessKey secret como um cabeçalho Base64Authorization: Basic.
Além do curl, você pode chamar a API com a biblioteca Python requests usando Basic Auth:
import requests
import time
# Obtain the HTTP API URL from the console.
api_url = 'http://cn-hangzhou.arms.aliyuncs.com:9090/api/v1/prometheus/{token}/{user_id}/{cluster_id}/{region}'
# Use the AccessKey ID as the username and the AccessKey secret as the password.
ak_id = 'your_access_key_id'
ak_secret = 'your_access_key_secret'
# Query a metric.
resp = requests.get(f'{api_url}/api/v1/query', params={'query': 'up'}, auth=(ak_id, ak_secret))
print(resp.json())
# Range query (the last 1 hour).
end = int(time.time())
start = end - 3600
resp = requests.get(f'{api_url}/api/v1/query_range', params={'query': 'up', 'start': start, 'end': end, 'step': '60s'}, auth=(ak_id, ak_secret))
print(resp.json())
Substitua ak_id e ak_secret pelo AccessKey ID e AccessKey secret da conta. Substitua também a URL da API HTTP em api_url pela URL obtida em Obtenha a URL da API HTTP. A API também suporta autenticação STS; nesse caso, o formato do segredo é {secret}${STS Token}. Para mais informações, consulte What is STS?.
Parâmetros de consulta
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
Expressão PromQL a ser avaliada |
|
|
Não |
Timestamp de avaliação (timestamp Unix ou RFC 3339). O padrão é a hora atual do servidor |
|
|
Não |
Tempo limite de avaliação em milissegundos |
Solução de problemas
|
Sintoma |
Causa possível |
Solução |
|
HTTP 401 Unauthorized |
Credenciais inválidas ou ausentes |
Verifique o token (V1) ou o par de AccessKeys (V2). Gere novamente se estiverem expirados. |
|
HTTP 403 Forbidden |
Permissões insuficientes |
Conceda ao usuário RAM a permissão |
|
Tempo limite de conexão |
Rede inacessível |
Se o Grafana estiver fora da Alibaba Cloud, use a URL pública da API HTTP. Se estiver na mesma região, use a URL interna. |
|
Sem dados no gráfico do Grafana |
Nenhum dado ingerido para a métrica consultada |
Confirme se a instância do Prometheus está coletando ativamente os alvos e se o nome da métrica está correto. |
Tópicos relacionados
Referência da API HTTP do Prometheus -- Documentação completa da API para endpoints de consulta, incluindo consultas de intervalo (
/api/v1/query_range), consultas de rótulos e metadados de séries.Criar um painel do Grafana -- Crie painéis usando a fonte de dados conectada.