Vim Online

Car les fichiers textes éparpillés de partout, ça devient usant ô_Ô

Outils pour utilisateurs

Outils du site


pub_zone:archives:2006

Archives 2006

Statistiques RRDtool

But : Obtenir ces graphiques (FIXME : Lien HS).

Note : Fonctionne avec RRDtool >= 1.2x

Ce script permet de récupérer la charge (Load average) moyenne du serveur toute les 5 minutes, et d'inscrire ces valeurs dans une base RRDtool. De ces données, je génère 4 graphiques :

  • Statistique sur 24h
  • Statistique sur 7 jours
  • Statistique sur 30 jours
  • Statistique sur 1 an

Pour connaître le principe de base du fonctionnement de RRDtool, je vous conseille de lire l'article édité par Laurent COUSTET.

Tout d'abord il faut définir la base RRDtool :

  • La base RRDtool se nommera /root/rrdtool/localhost_load.rrd
  • On veut récupérer les valeurs de la charge CPU toutes les 5min (ce me semble correcte pour avoir un bon rapport précision / quantité de donnée)
  • Dans cette base, on va n'avoir besoin que d'une DS1) qui correspondra à la charge CPU et que l'on nommera load
  • La DS sera de type GAUGE pour relever les valeurs tel quel, sans traitement particulier
  • Le délai maxi entre 2 mise à jours va être de 600sec (ce qui correspond à 2 fois la durée de polling choisi, donc 2*5min)
  • La valeur mini des données DS ne descendra pas en dessous de 0 (un Load Average <0 est impossible)
  • La valeur maxi quand à elle est inconnue. Une valeur inconnue avec RRDtool se note U.

Définitions des RRA

Sachant que le polling sera de 5 min, et que l'on veut garder les 5 min de précision, on garde le coefficient de 1.
On aura 4 RRA2), soit une par graphique.

  • Pour obtenir les 24h, on va donc avoir besoin de 24h / (5min * 1) → (24*60) / 5 = 288 (288 points de mesure sur 24h donc)
  • Pour 7 jours avec une donnée toutes les 30min → (7j * 24h * 60m) / (30min*1) = 336
  • Pour 30 jours avec une donnée toutes les 2h (120min) → (30j * 24h * 60m) / (120min*1) = 360
  • Pour 1 an avec une donnée toutes les 12h (720min) → (365j * 24h * 60m) / (720min*1) = 730

Avec toutes ces informations, on va pouvoir créer la base :

rrdtool create /root/rrdtool/localhost_load.rrd \
DS:load:GAUGE:600:0:U \
RRA:AVERAGE:0.5:1:288 \
RRA:AVERAGE:0.5:6:336 \
RRA:AVERAGE:0.5:24:360 \
RRA:AVERAGE:0.5:144:730

Une fois la base crée, il faut la remplir (maintenant que l'on a fait le plus dur, on ne va pas s'arrêter là)…

Récupération des valeurs

Pour cela j'utilise un script perso :

rrdtool_collect_cpuLA.sh
#!/bin/bash
 
# Mise à jour le 18/02/2006
# Par Ludovic DROUARD sous licence GPL évidemment :)
# https://drouard.eu/
 
################################################
# Config
RRDSOURCE="/root/rrdtool/localhost_load.rrd"
 
################################################
 
# Récupération des valeurs
LOAD=`cat /proc/loadavg | awk '{print $2}'`
 
# Inscription de ces valeurs dans la base
/usr/bin/rrdtool update $RRDSOURCE N:$LOAD

Génération des graphs

Pour cela j'utilise un autre script perso :

rrdtool_graph_cpuLA.sh
#!/bin/bash
 
# Date MAJ : 11/02/2006
# Par Ludovic DROUARD sous licence GPL évidemment :)
# https://drouard.eu/
 
################################################
# Config
RRDSOURCE="/root/rrdtool/localhost_load.rrd"
GRAPH="/var/www/localhost/htdocs/rrdtool/load"
GRAPHTITLE="Charge CPU (Load Average) sur serveur mono-processeur"
DATE_MAJ=`date '+%-d %B %Y - %H\:%M'`
 
# Note : Pour le "flamming", je me suis
# inspiré du travail de Laurent COUSTET (http://ed.zehome.com)
################################################
 
# Pour info :
# 86400 ( 24h * 60 m * 60s )
# 604800 ( 7j * 24h * 60m * 60s )
# 2592000 ( 30j * 24h * 60m * 60s )
# 31536000 ( 365j * 24h * 60m * 60s )
 
for i in -86400 -604800 -2592000 -31536000
do
  if $i == -86400
  then
    GRAPH2="${GRAPH}-jour.png"
  fi
  if $i == -604800
  then
    GRAPH2="${GRAPH}-semaine.png"
  fi
  if $i == -2592000
  then
    GRAPH2="${GRAPH}-mois.png"
  fi
  if $i == -31536000
  then
    GRAPH2="${GRAPH}-annee.png"
  fi
 
  /usr/bin/rrdtool graph "${GRAPH2}" \
  --start ${i} \
  --vertical-label "Charge CPU" \
  --title "${GRAPHTITLE}" \
  --width 500 \
  --height 150 \
  --lower-limit 0 \
  --units-exponent 0 \
  --slope-mode \
  --imgformat PNG \
  --font-render-mode normal \
  --color CANVAS#000000 \
  --color BACK#101010 \
  --color FONT#ffffdf \
  --color MGRID#337fbf \
  --color GRID#615900 \
  --color ARROW#ff0099 \
  --color SHADEA#000000 \
  --color SHADEB#000000 \
  DEF:load=${RRDSOURCE}:load:AVERAGE \
  VDEF:load_max=load,MAXIMUM \
  VDEF:load_avg=load,AVERAGE \
  VDEF:load_last=load,LAST \
  CDEF:load_flaming1=load,40,*,100,/ \
  CDEF:load_flaming2=load,5,*,100,/ \
  LINE1:1#c81818 \
  COMMENT:"\n" \
  COMMENT:"Charge CPU \:\t\tMaximum\tMoyenne\tActuelle\n" \
  AREA:load_flaming1#ffff5f:"Load Average " \
  AREA:load_flaming2#fffc51::STACK \
  AREA:load_flaming2#fff651::STACK \
  AREA:load_flaming2#fff046::STACK \
  AREA:load_flaming2#ffe95f::STACK \
  AREA:load_flaming2#ffd237::STACK \
  AREA:load_flaming2#ffc832::STACK \
  AREA:load_flaming2#ffbe2d::STACK \
  AREA:load_flaming2#ffaa23::STACK \
  AREA:load_flaming2#ff9619::STACK \
  AREA:load_flaming2#ff841e::STACK \
  AREA:load_flaming2#ff841e::STACK \
  AREA:load_flaming2#ff6600::STACK \
  GPRINT:load_max:"\t%1.1lf" \
  GPRINT:load_avg:"\t%1.1lf" \
  GPRINT:load_last:"\t%1.1lf\n" \
  COMMENT:"\n" \
  COMMENT:"${DATE_MAJ}\r"
done

Le mot de la fin

Enfin, il ne reste qu'a planifier les tâches dans la crontab en rajoutant les lignes (par exemple) :

# CPU polling 5 Min / Graph 30 Min
*/5 * * * *  /root/scripts/rrdtool_collect_cpuLA.sh >/dev/null 2>&1
*/30 * * * * /root/scripts/rrdtool_graph_cpuLA.sh >/dev/null 2>&1

Et voilà! Sur ce, j'irais bien boire une petite binch3)

Gentoo : Lirc 0.8pre1

Et voilà, Lirc en sortie en version 0.8pre1 (Stable) sous Gentoo Linux.

Cette version assure la compatibilité avec les kernels 2.6.14 et >. Par contre, les devices ont changé, maintenant, le device /dev/lirc0 a été visiblement remplacé par /dev/lirc/0 Pour prendre en compte cette nouvelle configuration sous la Gentoo Linux, modifiez le fichier /etc/conf.d/lircd :

vi /etc/conf.d/lircd

Et remplacez la ligne

LIRCD_OPTS="-d /dev/lirc0"

par :

LIRCD_OPTS="-d /dev/lirc/0"
1)
Data Source
2)
Round Robin Archive
3)
Une bière quoi ;)
pub_zone/archives/2006.txt · Dernière modification: 06:03 28/04/2014 par Ludovic Drouard