Les précisions de stockages
Graphite, comme toute les bases de métrologie, stocke ses données avec diverses précisions: plus les données sont éloignées, moins elles sont précises, et ce afin de gagner en performance et surtout espace disque.
A noter que chaque métrique (par exemple cpu_idle sur le check Cpu de l'hôte serveur-1) aura sont propre fichier .wsp présent dans /opt/graphite/storage/whisper (dans un sous répertoire HOST-UUID/CHECK-UUID).
Définition des précisions de stockage
La définition des différentes précisions se font via le fichier /opt/graphite/conf/storage-schemas.conf.
Il va s'organiser en bloc. Chacun va avoir:
- pattern: une règle d'expression régulière d'application du bloc.
- Attention: vu que les métriques sont stockés sous forme de uuid dans Graphite, seuls les noms de métriques seront utilisables ici, pas les noms d'hôtes ou de checks
- priority: une priorité d'application du bloc, plus la valeur est haute, moins il est prioritaire
- retentions: une règle de rétention: suite de couple précision:durée, qui donne la précision d'un point, et la durée de stockage pour cette précision.
Précision livrée par défaut à partir de la v02.06.02
La précision livrée par défaut depuis la 02.06.02 est la suivante:
| Code Block | ||
|---|---|---|
| ||
[ma_precision] pattern = .* retentions = 60s:7d,300s:30d,1800s:180d,86400s:547d |
Va appliquer pour tous les métriques la règle de stockage suivante:
- un point toutes les 60s, sur 7 jours
- un point toutes les 5min, sur 30 jours
- un point par 30min, sur 3 mois
- un point par jour, sur 1 an et demi
A noter qu'un point coûte 12 octets:
- 4 pour la date ( taille d'un int32 )
- 8 pour la valeur ( taille d'un double64 )
Ici un fichier créé avec cette rétention aura donc la taille:
- 60s:7d:
- nombres de points: 7 j * 86400s / 60s = 10080 points
- taille= 12o * 10080 = 120ko
- 300s:30d:
- nombre de points : 30 j*86400 / 300s = 8640 points
- taille = 12o * 8640 = 101Ko
- 1800s:180d:
- nombre de points : 180 j * 86400 / 1800s = 8640points
- taille = 12o * 8640 = 101Ko
- 86400s:547d
- nombre de points : 547 j * 86400 / 86400s = 547 points
- taille = 12o * 547 = 6Ko
Soit une Taille totale = 328Ko, par métrique pressente sur le disque (le fichier .wsp).
| Info | ||
|---|---|---|
| ||
Attention: il est important de noter que la précision d'un fichier de métrique est prise en compte à la création du fichier. Ainsi, un changement de la configuration de Graphite ne va pas redimensionner tous les métriques présents, mais seulement les nouveaux fichiers créés. |
Précision livrée par défaut AVANT la v02.06.02
La précision livrée par défaut avant la 02.06.02 était la suivante:
| Code Block | ||
|---|---|---|
| ||
[ma_precision] pattern = .* retentions = 60s:7d,300s:30d,3600s:180d,86400s:650d |
Va appliquer pour tous les métriques la règle de stockage suivante:
- un point toutes les 60s, sur 7 jours
- un point toutes les 5min, sur 30 jours
- un point par heure, sur 6 mois
- un point par jour, sur 2 ans
A noter qu'un point coûte 12 octets:
- 4 pour la date ( taille d'un int32 )
- 8 pour la valeur ( taille d'un double64 )
Ici un fichier créé avec cette rétention aura donc la taille:
- 60s:7d:
- nombres de points: 7 j * 86400s / 60s = 10080 points
- taille= 12o * 10080 = 120ko
- 300s:30d:
- nombre de points : 30 j*86400 / 300s = 8640 points
- taille = 12o * 8640 = 103Ko
- 3600s:180d:
- nombre de points : 180 j * 86400 / 3600s = 4320points
- taille = 12o * 4320 = 52Ko
- 86400s:650d
- nombre de points : 650 j * 86400 / 86400s = 650 points
- taille = 12o * 650 = 8Ko
Soit une Taille totale = 283Ko, par métrique pressente sur le disque (le fichier .wsp).
| Info | ||
|---|---|---|
| ||
Attention: il est important de noter que la précision d'un fichier de métrique est prise en compte à la création du fichier. Ainsi, un changement de la configuration de Graphite ne va pas redimensionner tous les métriques présents, mais seulement les nouveaux fichiers créés. |
| Info | ||
|---|---|---|
| ||
Attention: il est important de noter que la précision n'est pas modifiée lors d'une mise à jour de Shinken Enterprise. |
Précision spécifique à un hôte
Il est possible de modifier la précision spécifiquement à un ou plusieurs hôtes.
Il faut ajouter un bloc dans le fichier storage-schemas.conf
| Code Block | ||
|---|---|---|
| ||
[specifique]
pattern = b6f742865f074584a605d31116833f3d.*.*
retentions = 1m:1h,5m:2h,1h:30d,1d:1y,8640m:3y |
Le paramètre pattern est découpé comme suit : ID HOTE.ID CHECK.NOM DU METRIQUE
| Warning |
|---|
Le pattern doit être l'ID créé par Shinken |
Dans notre exemple, tous les checks et tous les métriques de checks de l'hôte "shinken" (ID : b6f742865f074584a605d31116833f3d) obtiennent la rétention "specifique"
| Info | ||
|---|---|---|
| ||
Attention: il est important de noter que la précision d'un fichier de métrique est prise en compte à la création du fichier. Ainsi, un changement de la configuration de Graphite ne va pas redimensionner tous les métriques présents, mais seulement les nouveaux fichiers créés. |
Une fois le fichier créé, pour avoir confirmation de la bonne prise en compte de ce nouveau bloc, dans le fichier /opt/graphite/storage/log/carbon-cache/carbon-cache-a/creates.log vous aurez les lignes suivantes :
| Code Block |
|---|
29/06/2021 16:41:44 :: new metric b6f742865f074584a605d31116833f3d.92182da3c28c5193c0e36b4a68b5e896.connexion_time matched schema specifique
29/06/2021 16:41:44 :: new metric b6f742865f074584a605d31116833f3d.92182da3c28c5193c0e36b4a68b5e896.connexion_time matched aggregation schema default_average
29/06/2021 16:41:44 :: creating database file /opt/graphite/storage/whisper/b6f742865f074584a605d31116833f3d/92182da3c28c5193c0e36b4a68b5e896/connexion_time.wsp (archive=[(60, 60), (300, 24), (3600, 720), (86400, 365), (518400, 182)] xff=0.01 agg=average) |
En cas d'erreur
Si vous avez cette erreur au redémarrage de carbon-cache c'est que la configuration d'un fichier n'est pas bonne :
| Code Block |
|---|
/etc/init.d/carbon-cache restart
Stopping carbon-cache... [FAILED]
Starting carbon-cache...Traceback (most recent call last):
File "/opt/graphite/bin/carbon-cache.py", line 30, in <module>
run_twistd_plugin(__file__)
File "/opt/graphite/lib/carbon/util.py", line 92, in run_twistd_plugin
runApp(config)
File "/usr/lib64/python2.7/site-packages/twisted/scripts/twistd.py", line 23, in runApp
_SomeApplicationRunner(config).run()
File "/usr/lib64/python2.7/site-packages/twisted/application/app.py", line 411, in run
self.application = self.createOrGetApplication()
File "/usr/lib64/python2.7/site-packages/twisted/application/app.py", line 489, in createOrGetApplication
ser = plg.makeService(self.config.subOptions)
File "/opt/graphite/lib/twisted/plugins/carbon_cache_plugin.py", line 21, in makeService
return service.createCacheService(options)
File "/opt/graphite/lib/carbon/service.py", line 127, in createCacheService
from carbon.writer import WriterService
File "/opt/graphite/lib/carbon/writer.py", line 34, in <module>
schemas = loadStorageSchemas()
File "/opt/graphite/lib/carbon/storage.py", line 139, in loadStorageSchemas
except InvalidConfiguration, e:
NameError: global name 'InvalidConfiguration' is not defined |