Cette documentation vise à expliquer la structure et les différentes parties du fichier de configuration JSON d'un agent Kabeen. Ce fichier de configuration est utilisé pour définir les systèmes, les moniteurs et les points de terminaison (endpoints) que l'agent doit gérer.
Structure du fichier de configuration
Le fichier de configuration JSON est composé des sections principales suivantes :
UUID : Identifiant unique de la configuration.
Systèmes : Liste des systèmes (Linux, Windows, IBM i) surveillés.
Moniteurs : Liste des moniteurs configurés pour surveiller divers aspects des systèmes.
Points de Terminaison (Endpoints) : Liste des points de terminaison pour la collecte et l'envoi des données.
Groupes de Modèles de Moniteurs : Groupes de modèles de moniteurs préconfigurés.
UUID
Chaque configuration a un identifiant unique (UUID) qui permet de la distinguer des autres configurations.
"uuid": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
Systèmes
Les systèmes sont classés en trois catégories : linuxSystems, windowsSystems, et ibmiSystems. Chaque système a des attributs comme l'adresse, le nom d'utilisateur, le mot de passe, et des métadonnées spécifiques.
Ces systèmes correspondent aux éléments que l'agent mesurera.
Exemple de système IBM i :
{
"name": "IBMI_SYSTEM"
"address": "10.0.0.1",
"password": "ENCRYPTEDPASSWORD",
"securedConnection": false,
"uuid": "yyyyyy-yyyy-yyyy-yyyy-yyyyyyyy",
"username": "KAPSUL_ACCOUNT",
"metadata": {
"LPAR_NAME": "IBMI01",
"MONITOR_GROUP": "zzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzz",
"ENCRYPTED_PASSWORD": "YES",
"COMPANY_ID": "MY_COMPANY"
}
Moniteurs
Les moniteurs surveillent divers aspects des systèmes. Chaque moniteur a des attributs comme metadata
, arguments
, systemUUID
, className
, monitorName
, et uuid
.
Exemple de moniteur SQL :
{
"uuid": "mmmmmmm-mmmm-mmmm-mmmm-mmmmmmmmmmmm",
"monitorName": "MONITOR_SQL01",
"className": "capsule.actors.monitors.managed.ibmi.SqlSingleResultMonitor",
"systemUUID": "yyyyyy-yyyy-yyyy-yyyy-yyyyyyyy",
"metadata": {
"MONITOR_GROUP_FROM": "MONITOR_GROUP01",
"MONITOR_TEMPLATE_ID": "zzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzz"
},
"arguments": {
"queries": {
"test_sql | gauge | test_sql": "SELECT count(*) FROM TABLE users"
},
"disableSqlValidation": true
},
}
Points de Terminaison (Endpoints)
Les points de terminaison sont utilisés pour envoyer les données collectées par les moniteurs vers des destinations spécifiques comme Elasticsearch, Prometheus ou des fichiers.
Exemple de point de terminaison Elasticsearch
{
"uuid": "eeeeeee-eeee-eeee-eeee-eeeeeeeeee",
"endpointName": "Elasticsearch",
"metadata": null,
"className": "capsule.actors.endpoints.managed.ElasticSearchEndpoint",
"arguments": {
"url": "http://elasticsearch-cluster.domain.com:9200",
"authentication": "admin",
"indexName": "monitoring"
}
}
Configuration générale de l'Agent
Détail de la configuration
include "application"
: inclus la configuration de base de l'agent.agentUUID
: identifiant unique de l'agent au format UUIDlang
: langue des données transmisent par l'agent (fr | en)
Configuration de l'interface HTTP
Gestion des paramètre de l'interface HTTP (utilisation de SSL, port, clés d'authentifications ...)
httpInterface {
bindAddress = "0.0.0.0"
bindPort = 8662
apiKeys = [
{
key = "changeme"
admin = true
},
{
key = "changeme"
admin = false
}
]
ssl {
enabled = true
keystorePath = "keystore.local.jks" // required if enabled = true, default to "keystore.local.jks"
keystorePass = "changeme" // required if enabled = true
}
}
bindAddress
: Adresse local de l'agent. Correspond généralement à l'IP de la carte réseaux à utiliser ou ``0.0.0.0`` si toutes les cartes sont concernées.
apiKeys
: Tableau contenant un couple (clé / droit) de clé d'API. Les clés d'API sont utilisés comme identifiant de communication avec l'agent.
Deux cas d'utilisation :
la configuration de l'agent en activant le mode administration ``admin=true``. Les fonctionnalités de configuration sont accessibles en utilisant cette clé, dont l'accès à l'interface web de configuration.
la communication avec l'agent depuis un système de supervision de type actuator (Centreon, Prometheus). Dans ce cas, il est conseiller de multiplier les clés par système de ne pas activer le mode admin.
ssl
: activation du chiffrage SSL pour la communication des systèmes de supervision vers l'agent (Centreon, Prometheus ...).
Pour l'activer:
Mettre ``enable=true``
Préciser le chemin du fichier JKS (Java Keystore) : ``keystorePath = "path/to/keystore"``
Préciser le mot de passe pour ouvrir le Keystore : ``keystorePass = "changeme"``
Configuration des connexions aux serveurs IBMi
Gestion des connexions par système IBMi
ibmi {
poolMaxConnections = 10
dbPoolMaxConnections = 10
}
poolMaxConnections
: Nombre de connexion maximal par pool de commandes.
dbPoolMaxConnections
: Nombre de connexion maximal par pool de base de données (DB2).