O Managed Service for Prometheus disponibiliza URLs de API HTTP que permitem consultar dados de monitoramento fora do console do Alibaba Cloud. Dois casos de uso comuns:
Grafana autogerenciado: Adicione a URL da API HTTP como uma fonte de dados do Prometheus para visualizar métricas em sua própria instância do Grafana.
Aplicações personalizadas: Chame diretamente a API HTTP compatível com Prometheus para recuperar métricas programaticamente.
Autenticação
O Managed Service for Prometheus oferece suporte a 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 sua conta; o usuário RAM associado deve ter a permissão |
Para o Prometheus V2, o acesso aos dados exige tanto o AccessKey ID quanto o AccessKey secret da sua conta, e o usuário RAM associado deve possuir a AliyunPrometheusMetricReadAccess ou AliyunCloudMonitorFullAccess system permission.
Pré-requisitos
Antes de começar, certifique-se de que você possui:
-
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 para sua conta, sendo que o usuário RAM associado deve ter as permissões necessárias
Obtenha a URL da API HTTP
Faça logon 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 sua instância do Prometheus está localizada.
Localize sua instância do Prometheus e clique em Settings na coluna Actions.
-
Na aba Settings, copie a URL da API HTTP.

Utilize a URL pública se sua instância do Grafana ou aplicação estiver fora da rede interna do Alibaba Cloud.
Utilize a URL interna se sua instância do Grafana ou aplicação estiver executando na mesma região do 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.
Para uma instância do Prometheus V1, após gerar um token, você deve incluí-lo ao configurar a fonte de dados do Grafana. Sem o token, o Grafana não consegue ler os dados de monitoramento da instância.
Configure uma fonte de dados do Grafana autogerenciada
Adicione a fonte de dados
Faça logon na sua instância do Grafana como administrador.
-
Navegue até 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 sua instância do Prometheus.
Prometheus V1
Caso tenha gerado um token, adicione-o como um 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 a opção Basic auth.
Preencha User com seu AccessKey ID.
Preencha Password com seu AccessKey secret.

Salve e teste
Clique em Save & test. Uma mensagem de sucesso confirma que o Grafana consegue alcançar 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, digite 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 está 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 utilizam 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 placeholders pelos valores reais:
|
Placeholder |
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 utilizando 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 em step 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 placeholders pelos valores reais:
|
Placeholder |
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çalhoAuthorization: Basicem Base64.
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 sua conta, e substitua a URL da API HTTP em api_url pela URL obtida em Get the HTTP API URL. A API também suporta autenticação STS, caso em que 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 |
Timeout 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 |
|
Connection timeout |
Rede inacessível |
Se o Grafana estiver fora do Alibaba Cloud, use a URL pública da API HTTP. Se estiver na mesma região, utilize 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 dos targets 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 labels e metadados de sériesCriar um dashboard do Grafana -- Crie dashboards utilizando a fonte de dados conectada