Passer au contenu principal

Exposition des métriques

Si vous utilisez ClickHouse Cloud, vous pouvez exposer des métriques à Prometheus à l’aide de l’intégration Prometheus.
ClickHouse peut exposer ses propres métriques afin que Prometheus puisse les collecter :
<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>

Section `<prometheus.handlers>` can be used to make more extended handlers.
This section is similar to [<http_handlers>](/concepts/features/interfaces/http) but works for prometheus protocols:

```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>
Paramètres :
NomPar défautDescription
portnonePort utilisé pour exposer le protocole de métriques.
endpoint/metricsEndpoint HTTP pour le scraping des métriques par le serveur Prometheus. Commence par /. Ne doit pas être utilisé avec la section <handlers>.
url / headers / methodnoneFiltres utilisés pour trouver un gestionnaire correspondant à une requête. Similaires aux champs portant les mêmes noms dans la section <http_handlers>.
metricstrueExpose les métriques de la table system.metrics.
asynchronous_metricstrueExpose les valeurs actuelles des métriques de la table system.asynchronous_metrics.
eventstrueExpose les métriques de la table system.events.
errorstrueExpose le nombre d’erreurs, par code d’erreur, survenues depuis le dernier redémarrage du serveur. Ces informations peuvent également être obtenues à partir de system.errors.
histogramstrueExpose les métriques d’histogramme de system.histogram_metrics
dimensional_metricstrueExpose les métriques dimensionnelles de system.dimensional_metrics
Vérifiez (remplacez 127.0.0.1 par l’adresse IP ou le hostname de votre serveur ClickHouse) :
curl 127.0.0.1:9363/metrics

Protocole remote-write

ClickHouse prend en charge le protocole remote-write. Les données sont reçues via ce protocole et écrites dans une table TimeSeries (qui doit être créée au préalable).
<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>
Paramètres :
NameDefaultDescription
portaucunPort d’écoute du protocole remote-write.
url / headers / methodaucunFiltres utilisés pour trouver un gestionnaire correspondant à une requête. Semblables aux champs du même nom dans la section <http_handlers>.
tableaucunNom d’une table TimeSeries dans laquelle écrire les données reçues via le protocole remote-write. Ce nom peut aussi contenir celui d’une base de données.
databaseaucunNom de la base de données où se trouve la table spécifiée dans le paramètre table, si elle n’est pas indiquée dans le paramètre table.

Protocole remote-read

ClickHouse prend en charge le protocole remote-read. Les données sont lues à partir d’une table TimeSeries et envoyées via ce protocole.
<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>
Paramètres :
NomPar défautDescription
portaucunPort utilisé pour exposer le protocole remote-read.
url / headers / methodaucunFiltres utilisés pour trouver un gestionnaire correspondant à une requête. Similaires aux champs portant les mêmes noms dans la section <http_handlers>.
tableaucunNom d’une table TimeSeries à partir de laquelle lire les données à envoyer via le protocole remote-read. Ce nom peut aussi inclure celui d’une base de données.
databaseaucunNom de la base de données où se trouve la table spécifiée dans le paramètre table si elle n’est pas indiquée dans le paramètre table.

Configuration pour plusieurs protocoles

Plusieurs protocoles peuvent être spécifiés au même endroit :
<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>
Dernière modification le 29 juin 2026