Clickhouse
Avant de commencerâ
- Dans la plupart des cas, vous enverrez les donnĂ©es depuis le serveur central. Il est Ă©galement possible de les envoyer depuis un serveur distant ou un collecteur (par exemple si vous voulez Ă©viter que le serveur central ne reprĂ©sente un point de dĂ©faillance unique, ou bien si vous ĂȘtes un MSP et vous installez le stream connector sur un collecteur ou un serveur distant dans l'infratructure de votre client).
- Par défaut, le stream connector Clickhouse envoie des métriques des évÚnements Broker host_status et service_status. Ces métriques sont contenues dans le champ perf_data des évÚnements. Le format des évÚnements est décrit ici.
- Ces évÚnements sont envoyés à chaque contrÎle sur l'hÎte ou le service. Des paramÚtres dédiés vous permettent de ne pas envoyer certains évÚnements.
PrĂ©requisâ
- L'interface HTTP Clickhouse doit ĂȘtre activĂ©e. (Documentation Clickhouse).
- Vous devez disposer d'un utilisateur valide (et de son mot de passe), qui puisse effectuer des INSERT dans la table désirée.
- Vous devez créer une table dans Clickhouse qui recevra les données en provenance de Centreon. Voici le schéma de la table (vous pouvez changer les noms de la base de données et de la table : elles sont toutes les deux configurables dans le stream connector).
SchĂ©ma de table standardâ
Voici le schéma par défaut à utiliser.
CREATE TABLE centreon_stream.metrics
(
host String,
service String,
metric_id String,
metric_name String,
metric_unit String,
metric_value Decimal,
metric_min Decimal,
metric_max Decimal,
timestamp DateTime,
hostgroups Array(String)
)
ENGINE = MergeTree()
PRIMARY KEY (timestamp, host, service, metric_name, metric_id)
SchĂ©ma de table alternatifâ
Attention : n'utilisez ce schéma que si vous voulez absolument récupérer le metric_id interne de Centreon. Cela entraßne la perte de nombreuses possibilités, telles que l'accÚs aux unités des métriques, à leur min, max...
Pour utiliser ce schéma, reportez-vous à la documentation du paramÚtre use_deprecated_metric_system ci-dessous (étape 6 de la procédure Configurer le stream connector dans Centreon).
CREATE TABLE centreon_stream.metrics
(
host String,
service String,
metric_id BIGINT,
metric_name String,
metric_value Decimal,
timestamp DateTime,
hostgroups Array(String)
)
ENGINE = MergeTree()
PRIMARY KEY (timestamp, host, service, metric_name, metric_id)
Installationâ
Faites l'installation sur le serveur qui enverra les données à Clickhouse (serveur central, serveur distant, collecteur).
- Alma / RHEL / Oracle Linux 8
- Alma / RHEL / Oracle Linux 9
- Debian_11
-
Connectez-vous en tant que
root
en utilisant votre client SSH préféré. -
Installez le dépÎt Epel.
dnf install epel-release
- Installez les modules lua Centreon.
dnf install centreon-stream-connectors-lib
- Téléchargez le stream connector Clickhouse :
wget -O /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua https://raw.githubusercontent.com/centreon/centreon-stream-connector-scripts/develop/centreon-certified/clickhouse/clickhouse-metrics-apiv2.lua
chmod 644 /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua
-
Connectez-vous en tant que
root
en utilisant votre client SSH préféré. -
Installez le dépÎt Epel.
dnf install epel-release
- Installez les modules lua Centreon.
dnf install centreon-stream-connectors-lib
- Téléchargez le stream connector Clickhouse :
wget -O /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua https://raw.githubusercontent.com/centreon/centreon-stream-connector-scripts/develop/centreon-certified/clickhouse/clickhouse-metrics-apiv2.lua
chmod 644 /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua
-
Connectez-vous en tant que
root
en utilisant votre client SSH préféré. -
Installez les modules lua Centreon.
dnf install centreon-stream-connectors-lib
- Téléchargez le stream connector Clickhouse :
wget -O /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua https://raw.githubusercontent.com/centreon/centreon-stream-connector-scripts/develop/centreon-certified/clickhouse/clickhouse-metrics-apiv2.lua
chmod 644 /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua
Configurer votre Ă©quipement Clickhouseâ
Vous devrez paramĂ©trer votre Ă©quipement Clickhouse pour qu'il puisse recevoir des donnĂ©es de la part de Centreon. Reportez-vous Ă la documentation Clickhouse. Assurez-vous que Clickhouse puisse recevoir les donnĂ©es envoyĂ©es par Centreon : les flux ne doivent pas ĂȘtre bloquĂ©s par la configuration de Clickhouse ou par un Ă©quipement de sĂ©curitĂ©.
Configurer le stream connector dans Centreonâ
- Sur votre serveur central, allez Ă la page Configuration > Collecteurs > Configuration de Centreon Broker.
- Cliquez sur central-broker-master (ou sur la configuration du Broker correspondant si les évÚnements seront envoyés par un serveur distant ou un collecteur).
- Dans l'onglet Output, sélectionnez Generic - Stream connector dans la liste, puis cliquez sur Ajouter. Un nouvel output apparaßt dans la liste.
- Remplissez les champs de la maniĂšre suivante :
Champ | Valeur |
---|---|
Name | Clickhouse metrics |
Path | /usr/share/centreon-broker/lua/clickhouse-metrics-apiv2.lua |
Filter category | Neb |
- Pour permettre à Centreon de se connecter à votre équipement Clickhouse, remplissez les paramÚtres obligatoires suivants. La premiÚre entrée existe déjà . Cliquez sur le lien +Add a new entry en-dessous du tableau Filter category pour en ajouter un autre.
Type | Nom | Explication | Exemple |
---|---|---|---|
string | user | Utilisateur Clickhouse Ă utiliser | centreon |
string | password | Mot de passe de cet utilisateur | centreon |
string | http_server_url | Adresse du serveur Clickhouse (inclure le protocole et le port) | https://myclickhouse.local:8123 |
- Renseignez les paramÚtres optionnels désirés (en utilisant le lien +Add a new entry) :
Type | Nom | Explication | Valeur par défaut |
---|---|---|---|
string | clickhouse_database | Nom de la base de données dans laquelle la table désirée est stockée | centreon_stream |
string | clickhouse_table | Table dans laquelle les métriques sont écrites | metrics |
number | use_deprecated_metric_system | Si la valeur est 1, le schéma de table alternatif sera utilisé | 0 |
-
Utilisez les paramÚtres optionnels du stream connector pour filtrer ou adapter les données que vous voulez que Centreon envoie à Clickhouse.
-
Redémarrez centengine sur tous les collecteurs :
systemctl restart centengine
Clickhouse reçoit maintenant des données de Centreon. Pour tester le bon fonctionnement de l'intégration, voir Commandes curl : tester le stream connector.
Filtrer ou adapter les donnĂ©es que vous voulez envoyer Ă Clickhouseâ
Tous les stream connectors ont un jeu de paramÚtres optionnels qui vous permettent de filtrer les données que vous enverrez à votre équipement Clickhouse, de reformater les données, de définir un proxy...
Chaque paramÚtre optionnel a une valeur par défaut, qui est indiquée dans la documentation correspondante.
-
Pour surcharger la valeur par défaut d'un paramÚtre, cliquez sur le lien +Add a new entry en-dessous du tableau Filter category, afin d'ajouter un paramÚtre personnalisé. Par exemple, si vous ne voulez envoyer à Clickhouse que les évÚnements traités par un collecteur nommé "poller-1", entrez :
type = string
name = accepted_pollers
value = poller-1 -
Pour le stream connector Clickhouse, les données suivantes surchargent toujours les valeurs par défaut (il n'est pas nécessaire de les redéfinir dans l'interface).
Type | Nom | Valeur par défaut pour le stream connector | Notes |
---|---|---|---|
string | accepted_categories | neb | |
string | accepted_elements | host_status,service_status | |
string | max_buffer_size | 1000 | Baissez cette valeur jusqu'à environ 100 si vous avez moins de 10 000 services. Si vous effectuez des opérations de dépannage avec les paramÚtres log_curl_commands et/ou send_data_test, vous pouvez baisser cette valeur en-dessous de 10. |
number | hard_only | 0 | |
number | enable_host_status_dedup | 0 | |
number | enable_service_status_dedup | 0 |
Event bulkingâ
Ce stream connector est compatible avec l'event bulking. Cela signifie qu'il est capable d'envoyer plus d'un évÚnement lors de chaque appel à l'API REST Spunk.
Pour utiliser cette fonctionnalité, vous devez ajouter le paramÚtre max_buffer_size à la configuration de votre stream connector.
Format des Ă©vĂšnementsâ
Ce stream connector envoie des évÚnements au format suivant :
ĂvĂšnement service_statusâ
INSERT INTO centreon_stream.metrics (host, timestamp, metric_name, metric_value, service, hostgroups, metric_id, metric_unit, metric_min, metric_max) VALUES ('central_1',1702910747,'rtmin',0.005,'Ping',['hg'],'10-8-rtmin','ms',,),('central_1',1702910747,'rta',0.061,'Ping',['hg'],'10-8-rta','ms',0.0,),('central_1',1702910747,'pl',0.0,'Ping',['hg'],'10-8-pl','%',0.0,100.0)
ĂvĂšnement host_statusâ
INSERT INTO centreon_stream.metrics (host, timestamp, metric_name, metric_value, service, hostgroups, metric_id, metric_unit, metric_min, metric_max) VALUES ('central_3',1702910932,'rtmin',0.0,'Ping',['hg'],'12-10-rtmin','ms',,),('central_3',1702910932,'rta',0.0,'Ping',['hg'],'12-10-rta','ms',0.0,),('central_3',1702910932,'pl',100.0,'Ping',['hg'],'12-10-pl','%',0.0,100.0)
RĂ©sultat dans Clickhouseâ
ââhostâââââŹâserviceââŹâmetric_nameââŹâmetric_unitââŹâmetric_valueââŹâmetric_minââŹâmetric_maxââŹâââââââââââtimestampââŹâhostgroupsââââââââââââââ
â central â â pl â % â 0 â 0 â 100 â 2023-11-27 14:23:31 â ['hg_1','hg_2','hg_3'] â
â central â â rta â ms â 0.052 â 0 â 0 â 2023-11-27 14:23:31 â ['hg_1','hg_2','hg_3'] â
â central â â rtmax â ms â 0.052 â 0 â 0 â 2023-11-27 14:23:31 â ['hg_1','hg_2','hg_3'] â
â central â â rtmin â ms â 0.052 â 0 â 0 â 2023-11-27 14:23:31 â ['hg_1','hg_2','hg_3'] â
â central â Ping â pl â % â 0 â 0 â 100 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â pl â % â 0 â 0 â 100 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â rta â ms â 0.013 â 0 â 0 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â rta â ms â 0.013 â 0 â 0 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â rtmax â ms â 0.049 â 0 â 0 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â rtmax â ms â 0.049 â 0 â 0 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â rtmin â ms â 0.004 â 0 â 0 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â Ping â rtmin â ms â 0.004 â 0 â 0 â 2023-11-27 14:26:51 â ['hg_1','hg_2','hg_3'] â
â central â â pl â % â 0 â 0 â 100 â 2023-11-27 14:28:11 â ['hg_1','hg_2','hg_3'] â
â central â â rta â ms â 0.027 â 0 â 0 â 2023-11-27 14:28:11 â ['hg_1','hg_2','hg_3'] â
â central â â rtmax â ms â 0.027 â 0 â 0 â 2023-11-27 14:28:11 â ['hg_1','hg_2','hg_3'] â
â central â â rtmin â ms â 0.027 â 0 â 0 â 2023-11-27 14:28:11 â ['hg_1','hg_2','hg_3'] â
âââââââââââŽââââââââââŽââââââââââââââŽââââââââââââââŽâââââââââââââââŽâââââââââââââŽâââââââââââââŽââââââââââââââââââââââŽâââââââââââââââââââââââââ
Format d'Ă©vĂšnements personnalisĂ©sâ
Il n'est pas possible de changer le format des évÚnements pour les stream connectors orientés métriques. Vous ne pouvez donc pas envoyer d'autres évÚnements Broker contenant des données de performance.
Commandes Curl : tester le stream connectorâ
Envoyer des Ă©vĂšnementsâ
Si vous voulez tester que les évÚnements sont envoyés correctement à Clickhouse :
- Connectez-vous au serveur que vous avez configuré pour envoyer les évÚnements à Clickhouse (le serveur central, un serveur distant ou un collecteur).
- Exécutez la commande suivante :
curl -X POST -H 'X-ClickHouse-User: <user>' -H 'X-ClickHouse-Key: <password>' '<http_server_url>' -d 'INSERT INTO <clickhouse_database>.<clickhouse_table> (host, timestamp, metric_name, metric_value, service, hostgroups, metric_id, metric_unit, metric_min, metric_max) VALUES ('central_2',1702910872,'rtmin',0.0,'Ping',['hg'],'11-9-rtmin','ms',,),('central_2',1702910872,'rta',0.0,'Ping',['hg'],'11-9-rta','ms',0.0,),('central_2',1702910872,'pl',100.0,'Ping',['hg'],'11-9-pl','%',0.0,100.0)'
Remplacez tous les
<xxxx>
dans la commande ci-dessus par la valeur correcte. Par exemple,<clickhouse_database>
pourra ĂȘtre remplacĂ© par centreon_stream.
- Vérifiez que l'évÚnement a bien été reçu par Clickhouse.