| Scroll Ignore | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
|
Emplacement des logs
Graphite version 0.9.10 ( Shinken < V02.08.02-RC009 )
Pour la version de Graphite installée par Shinken sur par les versions de Shinken antérieures à la version V02.08.02-RC009 sur des systèmes CentOS 7, les logs sont tous disponibles dans le dossier /var/log/graphite/ :
- /var/log/graphite/info.log,
- /var/log/graphite/exception.log,
- /var/log/graphite/graphite-webapp.access.log,
- /var/log/graphite/graphite-webapp.error.log.
Graphite version 1.1.8 ( Redhat 8, Alma 8, Shinken >= V02.08.02-RC009 )
Pour la version de Graphite installée par Shinken sur des systèmes Redhat 8 ou Alma 8, ou par des versions de Shinken supérieures ou égales à la V02.08.02-RC009 sur des systèmes CentOS 7, les logs sont disponibles dans les dossiers /var/log/graphite/ et /opt/graphite/storage/log/webapp/ :
- /opt/graphite/storage/log/webapp/info.log,
- /opt/graphite/storage/log/webapp/exception.log,
- /var/log/graphite/graphite-webapp.access.log,
- /var/log/graphite/graphite-webapp.error.log.
Chargement des données de l'inventaire pour faire la relation UUID ↔ nom
Récupération des données d'inventaire
Lorsqu'un outil externe ( comme Grafana ) veut accéder aux métriques, le worker Apache pour Graphite interrogé ( processus nommés "(wsgi:graphite) -DFOREGROUND" ) va consulter les serveurs d'inventaire des modules de métrologie Graphite et mettre en cache les relations UUID ↔ nom.
Les logs énumérés ci-dessous sont présents dans le fichier info.log
Liste des cas de figure nécessitant un chargement de l'inventaire
Une nouvelle configuration est poussée en production
Lorsqu'une nouvelle configuration est poussée en production, les données d'inventaire doivent être rechargées.
Quand un worker Apache pour Graphite détecte que son cache en mémoire n'est plus à jour, le log suivant est affiché :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:mm:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Resetting the cache because the invalidation file /opt/graphite/storage/whisper/.cacheinvalidation has changed, meaning a new configuration was pushed. |
Le worker Apache pour Graphite qui reçoit la mise à jour de configuration affiche également le log suivant lors de sa réponse au module de métrologie Graphite sur le Broker :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ NEW CONFIGURATION / MIGRATION ] [ RELAY ] [ALLOW RELAY=True] Giving back result to the module : {'server_ok': ['BROKER-SERVER'], 'error_count': XX, 'ok_count': XX, 'nb_migrated': XX, 'last_error': ''} |
Des données d'inventaire plus récentes sont présentes dans le cache local
Quand un worker Apache pour Graphite détecte que son cache en mémoire n'est plus à jour, le log suivant est affiché :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Resetting the cache because data file /dev/shm/shinken_apache/.shinken_apache__daemons__httpd_graphite__data__shinken_inventory.json has unread data |
Téléchargement de l'inventaire
Requête vers les serveurs d'inventaire des modules de métrologie Graphite
Lorsque l'inventaire doit être rechargé depuis les serveurs d'inventaire, un des workers d'Apache pour Graphite s'occupe de télécharger les mise à jour de l'inventaire. Quand tous les bouts de l'inventaire ont été récupérés depuis les différents serveurs qui le fournissent, il est enregistré dans le fichier de cache local en mémoire pour que tous les workers d'Apache pour Graphite puissent en disposer.
Pendant ce temps, les autres workers d'Apache pour Graphite utilisent l'ancienne version de l'inventaire pour continuer de répondre aux requêtes d'outils externes tels que Grafana par exemple.
| Info | ||
|---|---|---|
| ||
Lors du premier démarrage, quand il n'existe pas de précédente version de l'inventaire, les morceaux de l'inventaire sont mis à disposition des autres workers d'Apache pour Graphite dès leur réception. Ces derniers disposent alors d'un inventaire partiel jusqu'à ce que tous les serveurs d'inventaire aient répondu. Les serveurs d'inventaire sont questionnés séquentiellement dans l'ordre précisé par le paramètre URI du fichier de configuration /opt/graphite/conf/shinken_inventory.conf ( voir la page Grafana - v8.3.2 section Paramètres de connexion aux serveurs d'inventaire ) |
Paramètres d'accès aux serveurs d'inventaire des modules de métrologie Graphite
Le log suivant indique la liste des URL utilisées pour contacter les serveurs d'inventaire des modules de métrologie Graphite, ainsi que le timeout configuré pour les contacter :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] parameters : URI ['http://BROKER-SERVER:52000/inventory/'], timeout [10] |
Les données de l'inventaire ont été récupérées depuis un serveur d'inventaire d'un module de métrologie Graphite
Les logs suivants permettent de suivre la récupération des données de l'inventaire depuis le serveur d'inventaire d'un module de métrologie Graphite :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Updating inventory data from URL [ http://BROKER-SERVER:52000/inventory/ ] |
...
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] successfully updated inventory data with NN hosts / MM checks from URL [ http://BROKER-SERVER:52000/inventory/ ] in X.XXXs |
La récupération des données de l'inventaire termine
Lorsque la récupération des données de l'inventaire termine, le log suivant récapitule le nombre d'hôtes et de checks trouvés et le temps que cela a pris :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Update host/check mapping:: Total number of hosts/checks in mapping cache: NNN/MMM, Cache update took: X.XXXs |
Le serveur d'inventaire d'un module de métrologie Graphite n'est pas accessible
Le log suivant permet de constater qu'un serveur d'inventaire du module de métrologie Graphite n'est pas joignable ( ses données ne seront alors pas disponibles ) :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Unable to access URL [ http://BROKER-SERVER:52000/inventory/ ] after XX.XXXs with error [ ERROR_TEXT ] |
Récupération des données d'inventaire via MongoDB en solution de repli
Si aucun des serveurs d'inventaire des modules de métrologie Graphite n'est accessible, MongoDB est utilisé en solution de repli pour tenter de récupérer les données d'inventaire.
Utilisation de MongoDB en solution de repli
Le log suivant permet de constater que MongoDB est utilisé pour compenser l'indisponibilité des serveurs d'inventaire des modules de métrologie Graphite :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] Could not join Shinken to get inventory data, fallback to MongoDB |
Affichage des paramètres d'accès à MongoDB
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ INVENTORY CACHE UPDATE ] [ MONGO ] Reading mongodb parameters [('uri', 'mongodb://localhost/?w=1&fsync=false'), ('use_ssh_tunnel', '0'), ('ssh_user', 'shinken'), ('ssh_keyfile', '/opt/graphite/conf/id_rsa'), ('ssh_tunnel_timeout', '2'), ('database', 'shinken'), ('collection', 'metrology_inventory')] from /opt/graphite/conf/mongodb.conf |
Récupération des données d'inventaire avec MongoDB
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ MONGO ] Update host/check mapping:: got XXX new elements from date XX (and in X.XXXs)
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ MONGO ] Update host/check mapping:: Total number of hosts/checks in mapping cache from database: NNN/MMM |
Création du cache local avec les données d'inventaire récupérées
Lorsque les données de l'inventaire ont été récupérées, elles sont stockées dans un cache local, pour éviter de saturer le démon fournissant l'inventaire :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Update host/check mapping:: the inventory was stored in the memory cache file in X.XXXs |
Chargement des données d'inventaire depuis le cache local
Lorsque les données d'inventaire ont déjà été récupérées, le log suivant permet de voir que le worker Apache pour Graphite recharge les données depuis son fichier de cache local en mémoire :
| Code Block | ||||
|---|---|---|---|---|
| ||||
YYYY-MM-DD,HH:MM:SS.MSS :: [ APACHE(pid= PID) / GRAPHITE ] [ THREAD_ID ] [ INVENTORY CACHE UPDATE ] Update host/check mapping:: the inventory was loaded from memory cache file in X.XXXs ( including file read in X.XXXs, json parse in X.XXXs, dict update in X.XXXs ) |