Le module Graphite-Perfdata permet d'envoyer et de stocker les métriques dans un serveur Graphite ( via Carbon ).
Pour faciliter la consultation des métriques avec des outils externes à Shinken, le module fournit une API qui permet de récupérer les relations UUID ↔ nom :
Pour assurer la transition vers ces mécanismes sans interruption de service, le module stocke également l'inventaire en base de données.
Les modules de type "graphite_perfdata" sont des modules qui doivent être activés sur un démon de type "broker" qu'on appellera le démon.
broker" ), et ajouter dans le paramètre modules, le nom du module de type "graphite_perfdata"."graphite_perfdata"."broker" ( voir la page Le Broker ).graphite_perfdata" par royaume.graphite_perfdata".Pour prendre en compte le changement de configuration, il faut redémarrer l'Arbiter :
service shinken-arbiter restart |
L'exemple suivant :
"Graphite-Perfdata", "broker-master",dont la configuration est dans le fichier /etc/shinken/brokers/broker-master.cfg.Modification dans le fichier du module /etc/shinken/brokers/broker-master.cfg :
define broker {
[...]
modules Module 1, Module 2, Module 3, Graphite-Perfdata
[...]
} |
Puis redémarrage de l'Arbiter
service shinken-arbiter restart |
Pour pouvoir configurer un module de type "graphite_perfdata", il faut faire un nouveau fichier de configuration grâce au fichier d'exemple fourni par défaut.
Mon-Module-Graphite-Perfdata".Mon-Module-Graphite-Perfdata" par le nom qui a été choisi.Copier le fichier de définition du module d'exemple : /etc/shinken-user-example/configuration/daemons/brokers/modules/graphite_perfdata/graphite_perfdata-example.cfg dans le répertoire de définition des modules /etc/shinken/modules/ .
( Exemple : /etc/shinken/modules/graphite-perfdata__Mon-Module-Graphite-Perfdata.cfg )
|
Il faut vérifier que le fichier appartienne à l'utilisateur shinken et qu'il possède le droit d'édition. Si ce n'est pas le cas, il faut effectuer les commandes suivantes :
chown -R shinken:shinken /etc/shinken/modules/graphite-perfdata__Mon-Module-Graphite-Perfdata.cfg chmod u+w /etc/shinken/modules/graphite-perfdata__Mon-Module-Graphite-Perfdata.cfg |
On change le nom du module en "Mon-Module-Graphite-Perfdata" dans le fichier /etc/shinken/modules/graphite-perfdata__Mon-Module-Graphite-Perfdata.cfg
...
# ─── Module name [ Must be unique ] [ MANDATORY ] ───
# ─── ───
module_name Mon-Module-Graphite-Perfdata
...
|
Ensuite, il faut ajouter le nouveau module dans le démon de type "broker" correspondant.
Dans notre exemple, on ajoute le module "Mon-Module-Graphite-Perfdata" au démon "broker-master" définie dans le fichier /etc/shinken/brokers/broker-master.cfg
define module {
[...]
modules Module 1, Module 2, Module 3, Mon-Module-Graphite-Perfdata
[...]
} |
Puis pour finir, il faut redémarrer l'Arbiter pour que le Broker puisse prendre en compte ce nouveau module.
service shinken-arbiter restart |
La configuration du module se trouve par défaut dans le fichier /etc/shinken/modules/graphite.cfg
#================================================================================
# Graphite-Perfdata
#================================================================================
# Daemons that can load this module:
# - broker (to save sla information into a mongodb database)
# This module send metrics into a graphite (carbon) server
#================================================================================
define module {
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ────────────────────────────────────── MODULE IDENTITY ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── Module name [ Must be unique ] [ MANDATORY ] ───
# ─── ───
module_name Graphite-Perfdata
# ─── Module type [ Do not edit ] [ MANDATORY ] ───
# ─── ───
module_type graphite_perfdata
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ────────────────────────────────────── STORED METRICS ─────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── Restrict stored metrics ───
# ─── You can specify a list of realms whose metrics will be managed ───
# ───
# Default : empty => ( Store metrics from all realms and all sub realms ) ───
# ... : list of realms => ( format is realm names, coma separated ) ───
# ─── Example : East, West ───
# ───
# broker__module_graphite_perfdata__realm_store_only
# ─── Store Warning Threshold ───
# ───
# Default : Enable => 1 ( warning threshold will be stored as well as its metric value ) ───
# ... : Disable => 0 ( warning threshold will not be be stored ) ───
# ─── ───
# broker__module_graphite_perfdata__store_warning_threshold 1
# ─── Store Error Threshold ───
# ───
# Default : Enable => 1 ( error threshold will be stored as well as its metric value ) ───
# ... : Disable => 0 ( error threshold will not be be stored ) ───
# ─── ───
# broker__module_graphite_perfdata__store_error_threshold 1
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ────────────────────────────────────── NETWORK TIMEOUT ────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─── Connect Timeout ───
# ───
# Default : 4 ( seconds ) ───
# ─── ───
# broker__module_graphite_perfdata__connect_timeout 4
# ─── Send Timeout ───
# ───
# Default : 4 ( seconds ) ───
# ─── ───
# broker__module_graphite_perfdata__send_timeout 4
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ──────────────────────────────────────── METRIC SEND ──────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ──────────── Metrology server parameters ──────────────────────────────────────────────────────────── #
# ─── Graphite writer ( carbon ) address ───
# ─── IP address or FQDN of carbon-cache or carbon-relay instance to send metrics to ───
# ───
# Default : localhost ───
# ─── ───
# broker__module_graphite_perfdata__writer__host localhost
# ─── Graphite writer ( carbon ) port ───
# ─── tcp port of carbon-cache or carbon-relay instance to send metrics to ───
# ───
# Default : 2003 ───
# ─── ───
# broker__module_graphite_perfdata__writer__port 2003
# ────────────────── Resources Usage ────────────────────────────────────────────────────────────────── #
# ─── Number of workers ───
# ─── This module will use workers in the Broker, each worker will manage a shard of all hosts/checks. ───
# ─── This parameter is used by the Broker to set the number of workers. ───
# ─── Each worker will use one CPU, which will balance the metrology processing load among CPUs. ───
# ───
# Default : 1 ───
# ─── ───
# broker__module_graphite_perfdata__writer__nb_workers 1
# ─── Pending metrics count limit ───
# ─── Maximal number of pending metrics to be sent the module keeps, before discarding new ones ───
# ─── This parameter makes it possible to limit memory size needed by each worker of this module ───
# ───
# Default : 0 => Limit is disabled ( all data is kept ) ───
# ─── ───
# broker__module_graphite_perfdata__writer__pending_nb_limit 0
# ───────────────── Batch mode tuning ───────────────────────────────────────────────────────────────── #
# ─── Batch send interval ───
# ─── Delay, in seconds, between batch send. ───
# ─── In the meantime, metrics accumulate for the next batch. ───
# ─── This parameter makes it possible to avoid excessive solicitations of metrology server, ───
# ─── and to group metrology server writes. ───
# ───
# Default : 10 ───
# ... : 0 => Disable batch mode ( metrics are sent when module receives them ) ───
# ─── ───
# broker__module_graphite_perfdata__writer__send_interval 10
# ─── Batch send trigger ───
# ─── Number of pending metrics that triggers an immediate batch send (without waiting next interval) ───
# ─── This parameter makes it possible to avoid sending too large blocks to metrology server, ───
# ─── as well as consuming too much memory on the worker's module by keeping a lot of data pending. ───
# ───
# Default : 20 ───
# ... : 0 => Disable trigger ───
# ─── ───
# broker__module_graphite_perfdata__writer__pending_nb_trigger 20
# ┌─────────────────────────────────────────────────────────────────────────────────────────────────────┐ #
# │ ───────────────────────────────────────── INVENTORY ───────────────────────────────────────── │ #
# └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ #
# ─────────────────── Inventory push ────────────────────────────────────────────────────────────────── #
# ─── Activate inventory push on configuration reload ───
# ───
# Default : Enable => 1 ───
# ... : Disable => 0 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_push__enable 1
# ─── URL where inventory push is sent ───
# ───
# Default : http://localhost/migrate ───
# ... : port can be defined in URL if needed ( http://localhost:80/migrate ) ───
# ─── ───
# broker__module_graphite_perfdata__inventory_push__url http://localhost/migrate
# ─── Batch size ───
# ─── When pushing inventory to metrology server, split data to be sent in requests sending ───
# ─── only this number of elements each time ───
# ───
# Default : 5000 ───
# ... : 0 ( Push whole inventory in one request ) ───
# ─── ───
# broker__module_graphite_perfdata__inventory_push__batch_size 5000
# ────────────────── Inventory Server ───────────────────────────────────────────────────────────────── #
# ─── Activate inventory server ───
# ───
# Default : Enable => 1 ───
# ... : Disable => 0 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_server__enable 1
# ─── Listen address of inventory server ───
# ───
# Default : 127.0.0.1 => listen on loopback interface ───
# ... : 0.0.0.0 => listen on all interfaces ───
# ... : IP or FQDN => listen on this address only ───
# ─── ───
# broker__module_graphite_perfdata__inventory_server__address 127.0.0.1
# ─── Listen port of inventory server ───
# ───
# Default : 52000 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_server__port 52000
# ─── Activate SSL ───
# ───
# ... : Enable => 1 ───
# Default : Disable => 0 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_server__use_ssl 0
# ─── Certificate file ───
# ───
# Default : /etc/shinken/certs/server.cert ───
# ─── ───
# broker__module_graphite_perfdata__inventory_server__ssl_cert /etc/shinken/certs/server.cert
# ─── Certificate key file ───
# ───
# Default : /etc/shinken/certs/server.key ───
# ─── ───
# broker__module_graphite_perfdata__inventory_server__ssl_key /etc/shinken/certs/server.key
# ──────────────── Inventory in MongoDB ─────────────────────────────────────────────────────────────── #
# ─── Store inventory data in MongoDB ───
# ─── Deprecated way for metrology server to get inventory data ───
# ───
# Default : Enable => 1 ───
# ... : Disable => 0 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__enable 1
# ─── MongoDB server URL ───
# ───
# Default : mongodb://localhost/?w=1&fsync=false ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__uri mongodb://localhost/?w=1&fsync=false
# ─── MongoDB database ───
# ───
# Default : shinken ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__name shinken
# ─── username/password to authenticate to MongoDB. ───
# ─── Both parameters must be provided for authentication to function correctly. ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__username
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__password
# ─── MongoDB replica set ───
# ───
# Default : ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__replica_set
# ─── MongoDB collection ───
# ───
# Default : metrology_inventory ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__collection metrology_inventory
# ─────────────────── SSH tunneling ─────────────────────────────────────────────────────────────────── #
# ─── Secure MongoDB access with SSH tunnel ───
# ───
# ... : Enable => 1 ───
# Default : Disable => 0 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__use_ssh_tunnel 0
# ─── SSH user to connect to ───
# ───
# Default : shinken ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__ssh_user shinken
# ─── SSH key file used for authentication ───
# ───
# Default : ~shinken/.ssh/id_rsa ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__ssh_keyfile ~shinken/.ssh/id_rsa
# ─── SSH tunnel timeout ───
# ───
# Default : 10 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__ssh_tunnel_timeout 10
# ─────────────── MongoDB auto reconnect ────────────────────────────────────────────────────────────── #
# ─── Retry number, after connection loss, before failing with an error ───
# ───
# Default : 5 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__retry_connection_X_times_before_considering_an_error 5
# ─── Delay between retries, after connection loss ───
# ───
# Default : 5 ───
# ─── ───
# broker__module_graphite_perfdata__inventory_mongo__database__wait_X_seconds_before_reconnect 5
# ─── NOTE: Change these values only if you have a MongoDB cluster and you change the ───
# ─── heartbeatTimeoutSecs of your MongoDB replica set ───
# ─── The value of mongodb_retention__database__wait_X_seconds_before_reconnect * ───
# ─── mongodb_retention__database__retry_connection_X_times_before_considering_an_error must be ───
# ─── higher than heartbeatTimeoutSecs in the rs.conf(); of your MongoDB replica set. ───
} |
Il est possible de définir plusieurs instances de module de type Graphite-Perfdata dans l'architecture Shinken.
|
|
|
|
|
|
Si aucun outil externe n'est utilisé pour consulter les métriques ( Grafana par exemple ), Graphite n'aura pas besoin de l'inventaire de Shinken. Le serveur fournissant les données d'inventaire peut alors être désactivé. |
|
Ce schéma détaille les flux réseaux associés aux deux sections de configuration qui suivent.
|
|
|
En plus d'envoyer les données d'inventaire au serveur Graphite, ce module peut également stocker ces données en base de données.
Cela permet au serveur Graphite d'accéder à ces informations si l'accès au serveur fournissant les données d'inventaire n'est pas encore autorisé ou configuré ( voir la page Grafana - v8.3.2 section "Paramètres de connexion aux serveurs d'inventaire" ) .
Ce mode de fonctionnement est voué à disparaître, au profit d'un accès au serveur fournissant directement les données d'inventaire.
Si les serveurs de stockage des métriques ( carbon-cache ) sont tous configurés et autorisés à se connecter au serveur fournissant les données d'inventaire, le stockage de l'inventaire dans MongoDB peut être désactivé. |
|
|
|
Il est possible de récupérer l'état du module avec la commande suivante :
shinken-healthcheck |
( voir la page suivante pour la description des messages de retour de la commande Shinken-healthcheck - Vérifier le bon fonctionnement de Shinken Entreprise )
Il existe une série de vérifications à réaliser afin de tester l'accès à la base Graphite, qui comprend :
( voir la page suivant pour la description de comment réaliser ces vérifications Base de métrologie ( Graphite ) )