TimeSeries. Un handler gestiona la escritura remota, la lectura remota, las consultas PromQL instantáneas y las consultas PromQL de rango.
Para exponer las propias métricas de ClickHouse y que un servidor de Prometheus las recopile, consulta el endpoint de métricas de Prometheus.
Requisitos previos
Los pasos de configuración difieren entre ClickHouse Cloud y ClickHouse autogestionado. Siga la sección correspondiente a su Implementación.ClickHouse Cloud
La compatibilidad con PromQL en ClickHouse Cloud está en private preview. Los servicios que participan en la private preview ya tienen configurado el SETTING
enable_time_series_table y los API endpoints de Prometheus. El resto de los servicios de ClickHouse Cloud no cuentan con esta configuración, y no es posible habilitar la feature por cuenta propia en dichos servicios. La sentencia SET enable_time_series_table y la configuración http_handlers de las secciones siguientes se aplican a Implementaciones autogestionadas.Autogestionado: habilite el SETTING TimeSeries
Habilite el SETTINGenable_time_series_table para el usuario que crea la tabla y accede a ella:
enable_time_series_table en el perfil del usuario de la API.
Autogestionado: configure los endpoints de la API de Prometheus
Configure un handler enrutado por prefijo en el puerto HTTP principal de ClickHouse:<defaults/> conserva los handler integrados para endpoints como /ping y para solicitudes SQL. El prefijo anterior expone estos endpoints mediante un único handler:
El ejemplo omite
database y table del handler. Cada solicitud debe incluir el parámetro de consulta table (excepto /format_query, que solo analiza la expresión PromQL indicada y no necesita una tabla). También puede incluir database, usar un nombre de tabla completo como prometheus.metrics u omitir la base de datos para usar default. Esto permite que un único handler atienda varias tablas TimeSeries.
Para usar una tabla fija en todas las solicitudes, configúrela en el handler:
Cree una tabla TimeSeries
Cree una base de datos y una tablaTimeSeries:
Ingeste métricas mediante escritura remota
ClickHouse admite el protocolo de escritura remota de Prometheus. Configure Prometheus para que escriba en el handler:prometheus.metrics.
Para agrupar los datos de muchas solicitudes simultáneas de escritura remota en menos partes, habilite las inserciones asíncronas añadiendo la configuración async_insert a la URL (o habilitándola en el perfil de usuario):
TimeSeries, independientemente de la configuración de wait_for_async_insert: el protocolo de escritura remota considera duradera una escritura confirmada. Si el vaciado falla, la solicitud devuelve un error y Prometheus la reintenta.
Consultas con PromQL
Utilice el endpoint de consulta instantánea para evaluar una expresión de PromQL en un momento dado:--get, curl envía los parámetros como application/x-www-form-urlencoded mediante POST:
sum by (job) (http_requests_total{code="200"}) / 2. Este endpoint no evalúa la expresión, por lo que no necesita los parámetros database ni table.
Consulte las funcionalidades de PromQL compatibles para obtener la lista de funciones y operadores de agregación que utilizan la API HTTP, el dialecto promql y las funciones de tabla.
Grafana
Configure una fuente de datos de Prometheus con una URL base que termine antes de/api/v1:
/api/v1/query o /api/v1/query_range a esta URL base y añade customQueryParameters a cada solicitud.
Con httpMethod: POST, Grafana envía los parámetros de consulta en el cuerpo de la solicitud. ClickHouse lee el cuerpo de la solicitud y la cadena de consulta de la URL, por lo que customQueryParameters sigue aplicándose. Use POST para expresiones PromQL largas, ya que una URL tiene un límite de longitud.
Solo están implementados los endpoints de consulta
/api/v1/query, /api/v1/query_range y /api/v1/format_query y los endpoints de metadatos /api/v1/series, /api/v1/labels, /api/v1/label/<name>/values y /api/v1/metadata. /api/v1/series requiere al menos un selector de series match[], admite los parámetros opcionales start, end y limit, y devuelve la unión de las series coincidentes con cada selector. /api/v1/labels acepta los mismos parámetros, con match[] como opcional, y devuelve los nombres de etiquetas ordenados de las series coincidentes (o de todas las series cuando no se proporcionan selectores). /api/v1/label/<name>/values acepta los mismos parámetros que /api/v1/labels y devuelve los valores ordenados de una etiqueta, donde <name> puede usar opcionalmente el escapado U__... de Prometheus para nombres de etiquetas que contienen caracteres fuera de [a-zA-Z0-9_]. Estos endpoints cubren lo que utiliza un origen de datos de Prometheus en Grafana para explorar etiquetas, variables de plantilla y el autocompletado del constructor de consultas.Puntos de entrada de SQL
ClickHouse utiliza el mismo convertidor de PromQL para la API HTTP, el dialectopromql y las funciones de tabla prometheusQuery y prometheusQueryRange.
Ejecute PromQL directamente con clickhouse-client:
Consultar metadatos de métricas
El endpoint/prometheus/api/v1/metadata devuelve los metadatos de las métricas almacenados en la tabla de destino Metrics de la tabla TimeSeries: el tipo, el texto de ayuda y la unidad de cada familia de métricas. Admite los siguientes parámetros de Prometheus en la cadena de consulta de la URL:
La tabla de destino
Metrics predeterminada es una ReplacingMergeTree ordenada por el nombre de la familia de métricas: conserva la entrada de metadatos escrita más recientemente para cada familia de métricas. Solo se devuelven varias entradas por familia mientras la tabla de destino las almacene: antes de que se fusionen sus partes o cuando la tabla se define con un motor que las conserva.
Leer métricas mediante lectura remota
ClickHouse admite el protocolo de lectura remota de Prometheus en/prometheus/api/v1/read.
Configure un servidor Prometheus para que lea de la misma tabla TimeSeries: