Managed Service for Prometheus expone URL de API HTTP que permiten consultar los datos de monitoreo desde fuera de la consola de Alibaba Cloud. A continuación se describen dos casos de uso comunes:
Grafana autogestionado: agregue la URL de API HTTP como origen de datos de Prometheus para visualizar las métricas en su propia instancia de Grafana.
Aplicaciones personalizadas: invoque directamente la API HTTP compatible con Prometheus para recuperar las métricas de forma programática.
Autenticación
Managed Service for Prometheus admite dos versiones de instancia y cada una utiliza un método de autenticación distinto.
|
Versión de la instancia |
Método de autenticación |
Credenciales |
|
Prometheus V1 |
Basada en token (opcional) |
Token de autenticación generado en la consola |
|
Prometheus V2 |
Basic auth (obligatorio) |
AccessKey ID y AccessKey secret de su cuenta; el usuario de RAM asociado debe tener el permiso |
En Prometheus V2, el acceso a los datos requiere tanto el AccessKey ID como el AccessKey secret de su cuenta. Además, el usuario de RAM asociado debe contar con el system permission AliyunPrometheusMetricReadAccess o AliyunCloudMonitorFullAccess.
Requisitos previos
Antes de empezar, compruebe que cuenta con lo siguiente:
-
Una instancia de Prometheus conectada. Para consultar las instrucciones de configuración, consulte:
(Para Grafana) Una instancia de Grafana autogestionada con acceso de administrador.
(Para Prometheus V2) Un par de AccessKey para su cuenta, y el usuario de RAM asociado debe tener los permisos obligatorios.
Obtención de la URL de API HTTP
Inicie sesión en la consola de CloudMonitor.
En el panel de navegación izquierdo, elija Managed Service for Prometheus > Instances.
En la barra de navegación superior, seleccione la región donde reside su instancia de Prometheus.
Busque su instancia de Prometheus y haga clic en Settings dentro de la columna Actions.
-
En la pestaña Settings, copie la URL de API HTTP.

Utilice la URL pública si su instancia de Grafana o su aplicación se encuentra fuera de la red interna de Alibaba Cloud.
Utilice la URL interna si su instancia de Grafana o su aplicación se ejecuta dentro de la misma región de Alibaba Cloud y puede acceder a los endpoint internos.
(Solo para Prometheus V1) Haga clic en Generate Token para crear un token de autenticación. Guarde este token para usarlo más adelante.
En una instancia de Prometheus V1, después de generar un token, debe incluirlo al configurar el origen de datos en Grafana. Sin el token, Grafana no puede leer los datos de monitoreo de la instancia.
Configuración de un origen de datos en Grafana autogestionado
Agregar el origen de datos
Inicie sesión en su instancia de Grafana como administrador.
-
Vaya a Connections > Data sources.
Este menú solo es visible para los administradores de Grafana. En Grafana 8 y versiones anteriores, vaya a Configuration > Data sources . El menú Connections está disponible en Grafana 9 y versiones posteriores.
Haga clic en + Add data source y luego seleccione Prometheus.
En el campo Name, introduzca un nombre descriptivo para el origen de datos.
En el campo Prometheus server URL (dentro de la sección HTTP), pegue la URL de API HTTP que copió anteriormente.
Configurar la autenticación
Siga los pasos correspondientes a la versión de su instancia de Prometheus.
Prometheus V1
Si generó un token, agréguelo como encabezado HTTP personalizado:
En la sección Custom HTTP Headers, haga clic en + Add header.
Establezca Header en
Authorization.Establezca Value con el token de autenticación.

Prometheus V2
Active Basic auth.
Establezca User con su AccessKey ID.
Establezca Password con su AccessKey secret.

Guardar y probar
Haga clic en Save & test. Un mensaje de éxito confirma que Grafana puede comunicarse con el origen de datos de Prometheus.
Comprobación del origen de datos en Grafana
En Grafana, vaya a Dashboards y haga clic en New > New dashboard.
Haga clic en + Add visualization y seleccione el origen de datos que configuró.
En la página Edit Panel, abra la pestaña Query. En la sección A, introduzca el nombre de una métrica en el campo Metrics (por ejemplo,
arms_prometheus_target_interval_length_seconds_sum) y configure los Label filters según sea necesario.Haga clic en Run queries.
Si se muestra una gráfica con datos de métricas, el origen de datos funciona correctamente. Si no aparece ninguna gráfica, compruebe que la URL de la API o el token sean válidos y que el origen de datos contenga información de monitoreo. Para obtener más ayuda, consulte Solución de problemas.
Consulta programática de la API HTTP
Los siguientes ejemplos utilizan el endpoint /api/v1/query para consultas instantáneas. Para consultas por rango (/api/v1/query_range), metadatos de series y otros endpoint, consulte la referencia de la API HTTP de 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'
Reemplace los siguientes marcadores de posición con los valores reales:
|
Marcador de posición |
Descripción |
Ejemplo |
|
|
La URL de API HTTP de la pestaña Settings |
|
|
|
El token de autenticación generado en la consola |
|
También puede invocar la API desde Python mediante la 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']}")
Reemplace token con el token de autenticación generado en step 1 y api_url con su URL de 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'
Reemplace los siguientes marcadores de posición con los valores reales:
|
Marcador de posición |
Descripción |
Ejemplo |
|
|
La URL de API HTTP de la pestaña Settings |
|
|
|
El AccessKey ID de su cuenta |
|
|
|
El AccessKey secret de su cuenta |
|
La opción-ucodifica automáticamente el AccessKey ID y el AccessKey secret como un encabezado Base64Authorization: Basic.
Además de curl, puede invocar la API con la biblioteca requests de Python y 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())
Reemplace ak_id y ak_secret con el AccessKey ID y el AccessKey secret de su cuenta. También sustituya la URL de API HTTP en api_url por la que obtuvo en Get the HTTP API URL. La API también admite la autenticación STS; en ese caso, el formato del secreto es {secret}${STS Token}. Para obtener más información, consulte What is STS?.
Parámetros de consulta
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Expresión PromQL que se va a evaluar. |
|
|
No |
Marca de tiempo de evaluación (marca de tiempo Unix o RFC 3339). De manera predeterminada, toma la hora actual del servidor. |
|
|
No |
Tiempo de espera de la evaluación en milisegundos. |
Solución de problemas
|
Síntoma |
Posible causa |
Solución |
|
HTTP 401 Unauthorized |
Credenciales no válidas o faltantes |
Compruebe el token (V1) o el par de AccessKey (V2). Genérelos de nuevo si caducaron. |
|
HTTP 403 Forbidden |
Permisos insuficientes |
Otorgue al usuario de RAM el permiso |
|
Tiempo de espera de conexión agotado |
Red inaccesible |
Si Grafana se ejecuta fuera de Alibaba Cloud, utilice la URL de API HTTP pública. Si se ejecuta dentro de la misma región, utilice la URL interna. |
|
Sin datos en la gráfica de Grafana |
No hay datos incorporados para la métrica consultada |
Confirme que la instancia de Prometheus recopila activamente los targets y que el nombre de la métrica es correcto. |
Temas relacionados
Referencia de la API HTTP de Prometheus: documentación completa de la API para los endpoint de consulta, incluidas las consultas por rango (
/api/v1/query_range), las consultas de etiquetas y los metadatos de series.Crear un panel de Grafana: construya paneles con el origen de datos conectado.