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/db sont correles avec les depassements db/disco anterieurs sur la meme sonde et journalises avec un indice [RCA]. 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](/integration/integration-with-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](/integration/integration-with-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](/integration/integration-with-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](/integration/integration-with-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 | 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/.

Traductions