Configuration de l'Integrator

La configuration de l’Integrator couvre l’identite du service, le dimensionnement du pool de workers, toutes les cibles d’integration (InfluxDB, Splunk, Elastic, Kafka, Zabbix, Canopsis, ServiceNow, GLPI, Jira), les canaux de notification et l’export de donnees.

Astuce : inutile d’ecrire ce fichier a la main — l’assistant de configuration des composants genere un integrator.json pret a l’emploi a partir de quelques questions guidees.

Configuration du service (integrator.json)

Ce fichier doit se trouver dans le meme repertoire que l’executable.

Exemple minimal

{
  "name": "integrator1",
  "port": "8052",
  "logLevel": "info"
}

Exemple complet

{
  "name": "integrator1",
  "ip": "",
  "port": "8052",
  "location": "Datacenter-1",
  "description": "Main data integration hub",
  "logLevel": "info",
  "nbworker": "4",
  "queuesize": "10000",
  "backupInterval": "24",
  "nbDaysBackup": "336",
  "maxBackups": "5",
  "maxSize": "10",
  "maxAge": "28",
  "logCompress": "true",
  "send2CSVEnabled": "false",
  "send2JSONEnabled": "false",
  "influxDBEnabled": "false",
  "splunkEnabled": "false",
  "elasticEnabled": "false",
  "kafkaEnabled": "false",
  "zabbixEnabled": "false",
  "canopsisEnabled": "false",
  "serviceNowEnabled": "false",
  "glpiEnabled": "false",
  "jiraEnabled": "false",
  "smtpEnabled": "false"
}

Reference des parametres

Identite et reseau

Champ Type Description Defaut
name string Identifiant unique de l’integrator requis
ip string Adresse IP de liaison (vide = toutes les interfaces) ""
port string Port TCP pour l’API REST "8052"
location string Etiquette de localisation geographique/logique ""
description string Description libre ""

Pool de workers

Champ Type Description Defaut
nbworker string Nombre de goroutines worker traitant la file de taches "4"
queuesize string Nombre maximum de taches dans la file avant suppression "10000"
notifBufferSize string Nombre max de notifications echouees conservees sur disque pour reprise (la plus ancienne supprimee si plein) "500"
Guide de dimensionnement : Pour les environnements a fort volume (>1000 moniteurs), augmentez nbworker a 8-16 et queuesize a 50000+. Chaque worker traite les taches sequentiellement, donc plus de workers = plus de parallelisme.

Gestion des donnees

Champ Type Description Defaut
backupInterval int Heures entre les sauvegardes automatiques du magasin cle-valeur 24
nbDaysBackup int Jours de conservation des fichiers de sauvegarde 336

Journalisation

Champ Type Description Defaut
logLevel string debug, info, warn, error "info"
maxBackups int Fichiers journaux en rotation a conserver 5
maxSize int Taille max du fichier journal (Mo) 10
maxAge int Age max du fichier journal (jours) 28
logCompress string Compresser les journaux en rotation "true"

Moteur de correlation

Champ Type Description Defaut
correlationEnabled string Active la correlation de cause racine inter-agents "false"
correlationWindowMinutes string Minutes de recherche d’un depassement amont "10"
Optionnel. Le moteur de correlation est desactive par defaut. Une fois active, les depassements des moniteurs url/api/tcp/db/ping/nslookup sont correles avec les depassements amont anterieurs rattachables au meme hote et qui precedent reellement la panne, et l’evenement est enrichi d’un objet rca (en plus de l’indice [RCA] dans le journal). Le lien peut traverser les sondes lorsqu’il provient d’un Sentinel Agent tournant sur l’hote cible (rattachement declared ou address) — jamais sur la seule identite de sonde. Un moniteur deja en panne avant le depassement du candidat n’en devient jamais le symptome. Voir Integrator — Moteur de correlation inter-agents pour le modele complet. Les deux champs peuvent aussi etre pousses en direct depuis l’interface Webserver sans redemarrer le service.

Cibles d’integration

Champ Description
influxDBEnabled "true" pour activer
influxDBVersion "1.x", "2.x", ou "3.x"
influxDBServer Nom d’hote du serveur InfluxDB
influxDBPort Port du serveur InfluxDB (ex. : "8086")
influxDBIndex Nom de la base de donnees (v1.x)
influxDBOrg Organisation (v2.x/v3.x)
influxDBBucket Nom du bucket (v2.x/v3.x)
influxDBToken Jeton d’authentification (v2.x/v3.x)
influxDBUser Nom d’utilisateur (authentification basique v1.x)
influxDBPwd Mot de passe (authentification basique v1.x)
influxDBSSL "true" pour une connexion HTTPS

Voir Integration avec InfluxDB pour les instructions de configuration.

Champ Description
splunkEnabled "true" pour activer
splunkCollectorServer Nom d’hote du serveur Splunk HEC
splunkCollectorPort Port HEC (defaut : "8088")
splunkAuthorizationToken Jeton d’autorisation HEC
splunkIndex Index Splunk cible
splunkSSL "true" pour HTTPS

Voir Integration avec Splunk pour les instructions de configuration.

Champ Description
elasticEnabled "true" pour activer
elasticServer Nom d’hote du serveur Elasticsearch
elasticPort Port du serveur (defaut : "9200")
elasticUser Nom d’utilisateur pour l’authentification basique
elasticPwd Mot de passe pour l’authentification basique
elasticSSL "true" pour HTTPS

Voir Integration avec Elastic pour les instructions de configuration.

Champ Description
kafkaEnabled "true" pour activer
kafkaBrokers Adresses des brokers separees par des virgules (ex. : "broker1:9092,broker2:9092")
kafkaTopic Nom du topic cible
kafkaTLS "true" pour les connexions TLS
kafkaCAFile Chemin vers le fichier de certificat CA
kafkaCertFile Chemin vers le certificat client
kafkaKeyFile Chemin vers la cle privee du client
kafkaSASLMechanism Mecanisme SASL : "PLAIN", "SCRAM-SHA256", "SCRAM-SHA512"
kafkaSASLUser Nom d’utilisateur SASL
kafkaSASLPwd Mot de passe SASL
Champ Description
zabbixEnabled "true" pour activer
zabbixServer Nom d’hote du serveur Zabbix
zabbixPort Port de l’API Zabbix
zabbixAuthType "userPwd" ou "token"
zabbixUser Nom d’utilisateur (lorsque authType est "userPwd")
zabbixPwd Mot de passe (lorsque authType est "userPwd")
zabbixToken Jeton API (lorsque authType est "token")
zabbixVersion Version de Zabbix (ex. : "6.x")
zabbixSSL "true" pour HTTPS

Voir Integration avec Zabbix pour les instructions de configuration.

Champ Description
canopsisEnabled "true" pour activer
canopsisServer Nom d’hote du serveur Canopsis
canopsisPort Port du serveur
canopsisUser Nom d’utilisateur
canopsisPwd Mot de passe
canopsisSSL "true" pour HTTPS
Champ Description
serviceNowEnabled "true" pour activer
serviceNowServer Hote de l’instance ServiceNow (ex. dev12345.service-now.com)
serviceNowPort Port serveur (en general 443)
serviceNowUser Utilisateur d’integration
serviceNowPwd Mot de passe
serviceNowSSL "true" pour HTTPS
serviceNowResolvedState Valeur state de l’incident a la resolution automatique (defaut 6 = Resolu)
serviceNowCloseCode close_code defini a la resolution automatique (defaut Resolved by caller)
serviceNowAutoResolve "true" (defaut) pour resoudre automatiquement au retablissement. Un incident pris en charge par un humain (attribue / au-dela de Nouveau) n’est jamais cloture automatiquement — une note de travail de retablissement est ajoutee a la place
serviceNowGraceSeconds Fenetre d’amortissement (anti-flapping) en secondes avant l’ouverture d’un incident a la panne. Si le moniteur se retablit dans cette fenetre, le flap est supprime et aucun incident n’est cree. Defaut 0 = ouverture immediate
serviceNowIncidentScope Nombre d’incidents que vaut une panne. "all" (defaut) = un incident par moniteur en depassement. "root" = un evenement rattache par le moteur RCA a une defaillance amont anterieure n’ouvre aucun incident propre ; il est publie en note de travail sur l’incident de la cause racine. Necessite correlationEnabled — sans correlation rien n’est un symptome et chaque evenement ouvre toujours son propre incident

Ouvre un incident a la panne et le resout automatiquement au retablissement, correle par correlation_id.

Champ Description
glpiEnabled "true" pour activer
glpiServer Hote GLPI (ex. glpi.example.com)
glpiPort Port serveur (en general 443)
glpiUser Utilisateur d’integration
glpiPwd Mot de passe
glpiAppToken App-Token du client API (laisser vide si le client API GLPI n’en a pas)
glpiSSL "true" pour HTTPS
glpiSolvedStatus Statut du ticket a la resolution automatique (defaut 5 = Resolu ; 6 = Clos)
glpiAutoResolve "true" (defaut) pour resoudre automatiquement au retablissement. Un ticket pris en charge par un humain (attribue / en cours / en attente) n’est jamais cloture automatiquement — un suivi de retablissement est ajoute a la place
glpiGraceSeconds Fenetre d’amortissement (anti-flapping) en secondes avant l’ouverture d’un ticket a la panne. Si le moniteur se retablit dans cette fenetre, le flap est supprime et aucun ticket n’est cree. Defaut 0 = ouverture immediate

Ouvre un ticket a la panne et le resout automatiquement au retablissement, correle par une cle embarquee dans le titre du ticket.

Champ Description
jiraEnabled "true" pour activer
jiraServer Hote Jira Cloud (ex. your-domain.atlassian.net)
jiraPort Port serveur (en general 443)
jiraUser Email du compte (utilisateur Basic auth)
jiraPwd Jeton d’API (mot de passe Basic auth)
jiraSSL "true" pour HTTPS
jiraProjectKey Cle du projet cible (ex. OPS) ou les demandes sont creees
jiraIssueType Type de demande pour les demandes creees (defaut Bug)
jiraResolveTransition Nom de la transition de workflow utilisee pour la resolution automatique (defaut Done)
jiraAutoResolve "true" (defaut) pour resoudre automatiquement au retablissement. Une demande prise en charge par un humain (attribuee / en cours) n’est jamais cloturee automatiquement — un commentaire de retablissement est ajoute a la place
jiraGraceSeconds Fenetre d’amortissement (anti-flapping) en secondes avant l’ouverture d’une demande a la panne. Un retablissement dans la fenetre supprime le flap (aucune demande). Defaut 0 = ouverture immediate

Ouvre une demande a la panne et la resout automatiquement (via une transition de workflow) au retablissement, correlee par un label retrouve en JQL.


Export de donnees

Champ Type Description Defaut
send2CSVEnabled string Exporter les donnees en fichiers CSV dans data/ "false"
send2JSONEnabled string Exporter les donnees en fichiers JSON dans data/ "false"

Parametres de notification

Champ Description
smtpEnabled "true" pour activer les notifications par email
smtpServerName Nom d’hote du serveur SMTP
smtpPort Port SMTP (25, 465, 587)
smtpUsername Nom d’utilisateur SMTP
smtpPwd Mot de passe SMTP (stocke chiffre)
smtpTLS "true" pour TLS
Champ Description
slackChannel Canal de notification par defaut
slackToken Jeton de bot (stocke chiffre)
Champ Description
teamsWebhook URL du webhook entrant (stocke chiffre)
Champ Description
pagerDutyAPIKey Cle API pour la creation d’incidents (stockee chiffree)
Champ Description
emailOnF Envoyer un email en cas d’echec
emailOnSC Envoyer un email en cas de changement de statut
slackOnF Envoyer sur Slack en cas d’echec
slackOnSC Envoyer sur Slack en cas de changement de statut
teamsOnF Envoyer sur Teams en cas d’echec
teamsOnSC Envoyer sur Teams en cas de changement de statut
pdOnF Envoyer sur PagerDuty en cas d’echec
pdOnSC Envoyer sur PagerDuty en cas de changement de statut
scriptOnF Executer un script en cas d’echec
scriptOnSC Executer un script en cas de changement de statut

Notes de securite

Tous les champs sensibles (mots de passe, jetons, cles API, webhooks) sont :

  1. Chiffres au repos avec AES-256-GCM avant le stockage dans le magasin cle-valeur integre
  2. Jamais journalises en clair – masques dans la sortie de debogage
  3. Proteges par mutex pour un acces thread-safe lors des mises a jour de configuration

La cle de chiffrement est generee lors de l’installation et stockee dans le repertoire config/sec/.

Secret interne des composants (_sharedInternal)

La cle _sharedInternal definit le mot de passe du compte machine interne adminMNS utilise pour l’authentification API entre composants (l’Integrateur l’utilise pour se connecter au Webserver, et le Webserver l’utilise pour piloter l’Integrateur). Elle doit etre identique dans la configuration de chaque composant (monitor.json, webserver.json, integrator.json, discovery_agent.json) ; une non-correspondance fait echouer des actions comme Enable et Push Settings avec une erreur bcrypt. Lorsqu’elle est vide, adminMNS n’est pas cree (fail-closed). Voir Secret interne des composants pour les details et la rotation.

Traductions