Saltar al contenido principal

Exponer métricas

Si usas ClickHouse Cloud, puedes exponer métricas a Prometheus con la integración de Prometheus.
ClickHouse puede exponer sus propias métricas para que Prometheus las recopile:
<prometheus>
    <port>9363</port>
    <endpoint>/metrics</endpoint>
    <metrics>true</metrics>
    <asynchronous_metrics>true</asynchronous_metrics>
    <events>true</events>
    <errors>true</errors>
    <histograms>true</histograms>
    <dimensional_metrics>true</dimensional_metrics>
</prometheus>

La sección `<prometheus.handlers>` puede utilizarse para definir manejadores más avanzados.
Esta sección es similar a [<http_handlers>](/concepts/features/interfaces/http), pero funciona con protocolos de Prometheus:

```xml
<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/metrics</url>
            <handler>
                <type>expose_metrics</type>
                <metrics>true</metrics>
                <asynchronous_metrics>true</asynchronous_metrics>
                <events>true</events>
                <errors>true</errors>
                <histograms>true</histograms>
                <dimensional_metrics>true</dimensional_metrics>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>
Configuración:
NombrePredeterminadoDescripción
portningunoPuerto en el que se expone el protocolo de métricas.
endpoint/metricsEndpoint HTTP para que el servidor Prometheus recopile métricas. Empieza por /. No debe usarse con la sección <handlers>.
url / headers / methodningunoFiltros utilizados para encontrar un manejador que coincida con una solicitud. Son similares a los campos con los mismos nombres de la sección <http_handlers>.
metricstrueExpone métricas de la tabla system.metrics.
asynchronous_metricstrueExpone los valores actuales de las métricas de la tabla system.asynchronous_metrics.
eventstrueExpone métricas de la tabla system.events.
errorstrueExpone la cantidad de errores por código de error ocurridos desde el último reinicio del servidor. Esta información también puede obtenerse de system.errors.
histogramstrueExpone métricas de histograma de system.histogram_metrics
dimensional_metricstrueExpone métricas dimensionales de system.dimensional_metrics
Compruebe (reemplace 127.0.0.1 por la dirección IP o el hostname de su servidor ClickHouse):
curl 127.0.0.1:9363/metrics

Protocolo remote-write

ClickHouse admite el protocolo remote-write. Los datos se reciben a través de este protocolo y se escriben en una tabla TimeSeries (que debe crearse previamente).
<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/write</url>
            <handler>
                <type>remote_write</type>
                <database>db_name</database>
                <table>time_series_table</table>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>
Configuración:
NameDefaultDescription
portningunoPuerto para servir el protocolo remote-write.
url / headers / methodningunoFiltros utilizados para encontrar un manejador coincidente para una solicitud. Similar a los campos con los mismos nombres en la sección <http_handlers>.
tableningunoEl nombre de una tabla de TimeSeries en la que escribir los datos recibidos por el protocolo remote-write. Este nombre también puede contener opcionalmente el nombre de una base de datos.
databaseningunoEl nombre de una base de datos donde se encuentra la tabla especificada en la configuración table, si no está especificada en la configuración table.

Protocolo remote-read

ClickHouse admite el protocolo remote-read. Los datos se leen de una tabla TimeSeries y se envían mediante este protocolo.
<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/read</url>
            <handler>
                <type>remote_read</type>
                <database>db_name</database>
                <table>time_series_table</table>
            </handler>
        </my_rule_1>
    </handlers>
</prometheus>
Configuración:
NameDefaultDescription
portnonePuerto en el que se sirve el protocolo remote-read.
url / headers / methodnoneFiltros usados para encontrar un manejador que coincida con una solicitud. Similar a los campos con los mismos nombres en la sección <http_handlers>.
tablenoneEl nombre de una tabla TimeSeries de la que leer datos para enviarlos mediante el protocolo remote-read. Este nombre también puede incluir opcionalmente el nombre de una base de datos.
databasenoneEl nombre de la base de datos en la que se encuentra la tabla especificada en la opción table, si no se especifica en la propia opción table.

Configuración para varios protocolos

Se pueden especificar varios protocolos a la vez en un mismo lugar:
<prometheus>
    <port>9363</port>
    <handlers>
        <my_rule_1>
            <url>/metrics</url>
            <handler>
                <type>expose_metrics</type>
                <metrics>true</metrics>
                <asynchronous_metrics>true</asynchronous_metrics>
                <events>true</events>
                <errors>true</errors>
                <histograms>true</histograms>
                <dimensional_metrics>true</dimensional_metrics>
            </handler>
        </my_rule_1>
        <my_rule_2>
            <url>/write</url>
            <handler>
                <type>remote_write</type>
                <table>db_name.time_series_table</table>
            </handler>
        </my_rule_2>
        <my_rule_3>
            <url>/read</url>
            <handler>
                <type>remote_read</type>
                <table>db_name.time_series_table</table>
            </handler>
        </my_rule_3>
    </handlers>
</prometheus>
Última modificación el 10 de junio de 2026