Exposer les métriques du serveur ClickHouse
Si vous utilisez ClickHouse Cloud, vous pouvez exposer des métriques à Prometheus à l’aide de l’intégration Prometheus.
<prometheus.handlers> peut être utilisée pour créer des gestionnaires plus étendus sur le même port.
Cette section est similaire à <http_handlers>, mais fonctionne pour les protocoles Prometheus :
Vérifiez l’endpoint :
API HTTP Prometheus et PromQL
TimeSeries. Un gestionnaire prend en charge l’écriture distante, la lecture distante, les requêtes PromQL instantanées et les requêtes PromQL sur une plage.
Prérequis
allow_experimental_time_series_table pour l’utilisateur qui crée la table et y accède :
TimeSeries :
allow_experimental_time_series_table dans le profil de l’utilisateur de l’API.
Configurer l’API Prometheus
<defaults/> conserve les gestionnaires intégrés pour les endpoints tels que /ping et les requêtes SQL. Le préfixe ci-dessus expose ces endpoints via un seul gestionnaire :
L’exemple ne spécifie pas
database ni table dans le gestionnaire. Chaque requête doit fournir le paramètre de requête table. Elle peut également fournir database, utiliser un nom de table qualifié tel que prometheus.metrics ou omettre la base de données afin d’utiliser default. Un même gestionnaire peut ainsi desservir plusieurs tables TimeSeries.
Pour utiliser une table fixe pour toutes les requêtes, configurez-la dans le gestionnaire :
Ingérer des métriques via écriture distante
prometheus.metrics.
Pour regrouper les données issues de nombreuses requêtes d’écriture distante concurrentes en un nombre réduit de parties, activez les insertions asynchrones en ajoutant le paramètre async_insert à l’URL (ou en l’activant dans le profil utilisateur) :
TimeSeries, indépendamment du paramètre wait_for_async_insert : le protocole d’écriture distante considère comme durable toute écriture dont réception a été accusée. Si l’écriture échoue, la requête renvoie une erreur et Prometheus la réessaie.
Interroger avec PromQL
promql et les fonctions de table.
Grafana
/api/v1 :
/api/v1/query ou /api/v1/query_range à cette URL de base et ajoute customQueryParameters à chaque requête.
Seuls les endpoints de requête
/api/v1/query et /api/v1/query_range, ainsi que les endpoints de métadonnées /api/v1/series, /api/v1/labels et /api/v1/metadata, sont implémentés. /api/v1/series nécessite au moins un sélecteur de séries match[], prend en charge les paramètres facultatifs start, end et limit, et renvoie l’union des séries correspondant à chaque sélecteur. /api/v1/labels accepte les mêmes paramètres, match[] étant facultatif, et renvoie les noms de libellés triés des séries correspondantes (ou de toutes les séries lorsqu’aucun sélecteur n’est fourni). L’endpoint de valeurs de libellés (/api/v1/label/<name>/values), qu’une source de données Prometheus dans Grafana utilise pour parcourir les libellés, les variables de modèle et l’autocomplétion du générateur de requêtes, n’est pas implémenté et renvoie une erreur. Écrivez les expressions PromQL en mode code plutôt que d’utiliser le générateur de requêtes.Points d’entrée SQL
promql ainsi que les fonctions de table prometheusQuery et prometheusQueryRange.
Exécutez directement des requêtes PromQL avec clickhouse-client :
Interroger les métadonnées des métriques
/prometheus/api/v1/metadata renvoie les métadonnées des métriques stockées dans la table cible Metrics de la table TimeSeries : le type, le texte d’aide et l’unité de chaque famille de métriques. Il prend en charge les paramètres Prometheus suivants dans la chaîne de requête de l’URL :
La table cible
Metrics par défaut est une ReplacingMergeTree ordonnée par nom de famille de métriques : elle conserve l’entrée de métadonnées écrite le plus récemment pour chaque famille de métriques. Plusieurs entrées par famille ne sont renvoyées que tant que la table cible les stocke — avant la fusion de ses parts, ou lorsque la table est définie avec un engine qui les conserve.
Lire les métriques via lecture distante
/prometheus/api/v1/read.
Configurez un serveur Prometheus pour lire les données de la même table TimeSeries :