Omeganoc : visualiser l'état de vos systèmes
Omeganoc : visualiser l'état de vos systèmes jppOmeganoc est un logiciel français, cocorico, qui associé à Shinken et à ses sondes permet :
- de conserver l'historique des données de mesure
- d'afficher des tableaux de bord graphiques du plus bel effet.
Note 2017 : Malheureusement ce logiciel ne semble plus maintenu et la dernière version connue est la 0.93. Il vaut mieux aujourd'hui utiliser Grafana/InfluxDB, à voir ici.
La partie stockage utilise la base de données "whisper", analogue dans son principe au très connu RRD, qui utilise un démon spécifique nommé carbon-cache. Cette base est alimentée directement par l'intermédiaire du module "Livestatus" de Shinken et exploitée par deux outils spécifiques à Omeganoc :
- Hokuto qui gère l'interface graphique :
- Nanto qui gère une partie "prévisions" à partir des données stockées.
L'installation est assez complexe, surtout par le nombre de dépendances "inconnues". Nanto utilise "R" pour établir ses prévisions ... et nécessite, lui aussi, un certain nombre de dépendances, pas toujours évidentes.
Omeganoc : ajustements
Omeganoc : ajustements jppLa documentation est assez spartiate et comme le stockage des données est réalisé par "Graphite" et la base de données "Whisper" (semblable dans son principe à RRD), il faut configurer convenablement la rétention par défaut.
Le fichier /opt/graphite/conf/storage-schémas.conf doit impérativement être modifié car avec ces paramètres les données ne sont conservées qu'un jour. Comme je m'intéresse aux pointes de consommation j'ai forcé la méthode d'aggrégation à "max", et mis une conservation par défaut à 60 secondes pendant 30 jours, puis 180s pendant 90j et 540s pendant 365j. Cela donne :
[default_1min_for_1day] pattern = .* retentions = 60s:30d,180s:90d,540s:365d aggregationMethod = max |
Cela donne une bonne base et il est toujours possible par la suite de modifier ces paramètres fichiers par fichiers. Il est en effet inutile de conserver minute par minute le volume disque utilisé, l'utilitaire "whisper-resize.py" permet de modifier les paramètres fichier par fichier :
FILE=mon_fichier.wsp
whisper-resize.py --aggregationMethod=max $FILE 60s:15d 180s:90d 540s:365d
Les fichiers de données sont placés dans des répertoires par "machine" dans l'arborescence "/opt/graphite/storage/whisper". Chaque plugin donne lieu à un répertoire contenant les fichiers de données, par exemple :
drwxr-xr-x 2 root root 4096 janv. 29 20:29 Cpu
drwxr-xr-x 2 root root 4096 févr. 23 23:03 D_
drwxr-xr-x 2 root root 4096 févr. 23 23:04 D_boot
drwxr-xr-x 2 root root 4096 janv. 29 20:29 __HOST__
drwxr-xr-x 2 root root 4096 janv. 29 20:29 Load
drwxr-xr-x 2 root root 4096 févr. 20 11:49 Memory
drwxr-xr-x 2 root root 4096 janv. 29 20:29 Niceth0
drwxr-xr-x 2 root root 4096 janv. 29 20:29 Smtp
drwxr-xr-x 2 root root 4096 janv. 29 20:29 TimeSync
Le répertoire "D_" (partition "/") contient ici deux fichiers :
_Pctused.wsp
Sizeused.wsp
qui contiennent le % utilisé de la partition et la taille utilisée.
Autre sujet "qui fâche", mais on s'y fait, il faut éviter comme la peste les séparateurs style "-" (tiret) dans les noms de machines ou de services ... car l'interface graphique ne les montre pas (absence de ces machines/services dans les boites de choix) ... cela devrait être corrigé dans une prochaine version.
Omeganoc : ajustements (2)
Omeganoc : ajustements (2) jppL'affichage réalisé "en direct" par Hokuto ne montre pas une chose très intéressante/amusante : il est possible de faire calculer des prévisions par le module "Nanto" qui s'affichent comme les données de mesure, presque, elles sont grisées et font de petits panaches du plus bel effet.
Nanto est réalisé en "R", ce qui m'a donné l'occasion de rentrer un peu dans ce système de calcul pour réussir à la faire tourner. Cette fonctionnalité est plus ou moins expérimentale, mais un peu "coton" à installer.
Au premier essai "Nanto" refuse de se lancer :
File "/usr/local/nanto/service.py", line 34, in <module> from lockfile.pidlockfile import PIDLockFile ImportError: No module named pidlockfile |
Simple probleme de version entre les modules "lockfile" et "python-daemon"
Je désinstalle et réinstalle les deux dans les versions suivantes :
python-daemon 2.1.0
lockfile-0.12.2
Ensuite copier ...../omeganoc/nanto/etc/nanto.cfg dans /etc/nanto.cfg
Après cette petite cure le process "nanto" démarre, mais il lui manque des tas de choses :
ImportError: No module named rpy2.rinterface
Pas de "R" non plus !
Cela se résout par "apt-get install python-rpy2" qui charge tout ce qui semble nécessaire (entre autres les packages "R") :
bzip2-doc cdbs gfortran gfortran-4.9 libblas-dev libbz2-dev libgfortran-4.9-dev libjpeg-dev libjpeg62-turbo-dev liblapack-dev liblzma-dev libncurses5-dev libpcre3-dev libpng12-dev libreadline-dev libreadline6-dev libtcl8.5 libtinfo-dev libtk8.5 r-base-core r-base-dev r-cran-boot r-cran-class r-cran-cluster r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-lattice r-cran-mass r-cran-matrix r-cran-mgcv r-cran-nlme |
soit 47Mo d'archives.
Auxquels il faut ajouter "r-cran-segmented" ? et "r-cran-fimport" ? ainsi que r-cran-nnet r-cran-rpart r-cran-spatial r-cran-survival r-doc-html r-recommended ...
En modifiant le fichier de config "/etc/nanto/cfg" et en décommentant le "debug_worker" on peut déclencher un calcul immédiat et non en attendant l'horaire planifié.
J'obtient une nouvelle erreur :
ERROR - An error occured while executing the R script "/usr/local/nanto/timewindow.r": Error in library("forecast") : there is no package called ‘forecast’ Malgré cette erreur le programme continue et calcule plein de trucs (selon le log) avec toutefois de nouveaux messages d'erreur : An exception occured while computing the timewindow predictions for component gwadsl.__HOST__.pl: global name 'save_error' is not defined |
Dans quel paquet Debian se trouve cette librairie ?
"apt-get install r-cran-fimport"
qui installe en outre :
lynx lynx-cur r-cran-fimport r-cran-timedate r-cran-timeseries
Cette installation ne fournit pas la librairie "forecast" car les messages d'erreur sont toujours présents !
Une recherche donne la possibilité que ces paquets soient disponibles grâce à l'archive : "http://cran.univ-paris1.fr/" (ou lyon1.fr), ajouter dans votre "sources.list" :
deb http://cran.univ-paris1.fr/bin/linux/debian jessie-cran3/
Le message sur la librairie "forecast" est toujours présent, il faut installer le paquet ? On lance "R" :
R R version 3.1.1 (2014-07-10) -- "Sock it to Me" Copyright (C) 2014 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) .... Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. install.packages("forecasting") Installing package into ‘/usr/local/lib/R/site-library’ (as ‘lib’ is unspecified) --- Please select a CRAN mirror for use in this session --- |
------ cela ouvre une fenêtre pour choisir le serveur CRAN, ici on choisit "France (Lyon 1)"
package ‘forecasting’ is not available (for R version 3.1.1) The downloaded source packages are in |
On ne sauvegarde pas le "workspace", On reteste le lancement de "nanto" et cette fois cela a l'air de mieux fonctionner, le service se lance et lance immédiatement le calcul. Le log ne présente plus de message d'erreur et on peut penser que le calcul est réussi !
Toutefois quelques messages d'erreur sont présents sur quelques catégories :
016-01-13 17:38:49,496 - root - DEBUG - [nanto:timewindow] Found 0 data points for node filtre.NetworkUsage.br0_in_octet.1452616033 2016-01-13 17:38:49,496 - root - INFO - [nanto:timewindow] Skipped time series on filtre.NetworkUsage.br0_in_octet.1452616033: not enough data (0 points) 2016-01-13 17:38:49,496 - root - WARNING - [nanto:timewindow] An exception occured while computing the timewindow predictions for component filtre.NetworkUsage.br0_in_octet.1452616033: global name 'save_error' is not defined 2016-01-13 17:38:49,496 - root - DEBUG - [nanto:timewindow] Exception details: Traceback (most recent call last): File "/usr/local/nanto/timewindow_worker.py", line 61, in internal_run success = self.__go(c, checkinterval) File "/usr/local/nanto/timewindow_worker.py", line 94, in __go save_error(target, "There is not enough data to have make accurate predictions") NameError: global name 'save_error' is not defined |
Remarque :
Cela consomme pas mal de CPU : 50 à 98% de ma VM (en monoprocesseur).
Le volume de la base de données sqlite "/var/lib/shinken/nanto.db" augmente sérieusement et dépasse 1,5 mégaoctet sur mon petit test ne comportant que 8 machines et environ 30 services.
Dans mon cas le calcul a duré de : 17:37:47 à 17:54:34 soit environ 17 minutes.
La consommation mémoire reste très raisonnable : moins de 450M hors buffers et cache, environ 896M de mémoire devraient suffire largement dans mon cas.
Test avec 1024Mo de mémoire et 2 CPU.
Remarques :
1) Nanto n'utilise qu'un seul processeur !
2) Consommation mémoire < 1024Mo y compris buffers et cache.
3) Durée du traitement :
19:21:07 à 19:37:35, 1050 secondes soit un peu plus de 17 minutes
21:37:41 à 21:53:11, 930 secondes soit un peu plus de 15 minutes.
Charger aussi "apt-get install libopenblas-base " pour augmenter les performances en multithread; cela n'est pas évident, même avec deux processeurs attribués à la MV. En fait avec 1 processeur et 1024Mo de mémoire tout se passe bien et le fichier "nanto.db" s'est stabilisé à moins de 300Ko.
Omeganoc : quelques graphes
Omeganoc : quelques graphes jppNote 2022 : ces graphiques sont aussi beaux que ceux de Grafana, mais Omeganoc n'est plus, paix à son âme, c'est dommage c'était un produit intéressant et agréable à utiliser.
Pour égayer un peu mes propos quelques graphiques présentés par Omeganoc, la partie "calculée" est sur la droite.
Un graphe simple de l'usage CPU sur 24 heures :
![]() |
A noter les possibilités :
- Modifier les limites de dates affichées, dernières 24 heures, mois en cours, derniers 30 jours ... ou des zones de dates précises avec calendrier cliquable
- Afficher en linéaire ou logarithmique
- Afficher MAX/MIN/AVG
- Zoom sur une zone avec le roulette de souris
La zone hachurée à droite correspond aux prévisions calculées par Nanto.
Un graphe logarithmique d'utilisation réseau :
![]() |
Zoom sur l'utilisation CPU/mémoire vers 12h51 :
![]() |
On peut remarques l'alerte (rond rouge) pour utilisation du CPU qu'il suffit de cliquer pour avoir plus d'informations : heure, message ...