Templates ZFS pour cacti

Nous avons enfin terminé le fignolage des tous les graphs cacti dont nous nous servons pour la supervision de nos appliances Nexenta, il était donc temps d’en faire profiter la communauté !

Tout comme pour notre post sur le monitoring smart, le tout se fait uniquement dans le fichier snmpd.conf sans script annexe. Pour rappel, l’édition de la config snmp sous nexenta se fait via la nmc avec la commande suivante :

setup network service snmp-agent edit-settings snmpd.conf

Pour chaque graphique, il faudra ajouter une ou plusieurs lignes à la config snmp et importer le template dans cacti.

extend .1.3.6.1.4.1.2021.85 arc_meta_max /bin/bash -c "echo ::arc | mdb -k| grep arc_meta_max|tr -cd '[:digit:]'"
extend .1.3.6.1.4.1.2021.85 arc_meta_used /bin/bash -c "echo ::arc | mdb -k| grep arc_meta_used|tr -cd '[:digit:]'"
extend .1.3.6.1.4.1.2021.85 arc_size /bin/bash -c "echo ::arc | mdb -k| grep -w size|tr -cd '[:digit:]'"
extend .1.3.6.1.4.1.2021.85 arc_meta_limit /bin/bash -c "echo ::arc | mdb -k| grep arc_meta_limit|tr -cd '[:digit:]'"
extend .1.3.6.1.4.1.2021.85 arc_meta_c_max /bin/bash -c "echo ::arc | mdb -k| grep c_max|tr -cd '[:digit:]'"

Graph template à importer dans cacti : ZFS – ARC Usage

extend .1.3.6.1.4.1.2021.89 arc_hits /bin/bash -c "kstat -p ::arcstats:hits| cut -s -f 2"
extend .1.3.6.1.4.1.2021.89 arc_misses /bin/bash -c "kstat -p ::arcstats:misses| cut -s -f 2"

Graph template à importer dans cacti : ZFS – ARC Stats

extend .1.3.6.1.4.1.2021.89 arc_l2_hits /bin/bash -c "kstat -p ::arcstats:l2_hits| cut -s -f 2"
extend .1.3.6.1.4.1.2021.89 arc_l2_misses /bin/bash -c "kstat -p ::arcstats:l2_misses| cut -s -f 2"

Graph template à importer dans cacti : ZFS – L2ARC Stats

extend .1.3.6.1.4.1.2021.90 vopstats_zfs_nread /bin/bash -c "kstat -p ::vopstats_zfs:nread | cut -s -f 2"
extend .1.3.6.1.4.1.2021.90 vopstats_zfs_nwrite /bin/bash -c "kstat -p ::vopstats_zfs:nwrite | cut -s -f 2

Graph template à importer dans cacti : ZFS – VFS IOPS

extend .1.3.6.1.4.1.2021.90 vopstats_zfs_read_bytes /bin/bash -c "kstat -p ::vopstats_zfs:read_bytes | cut -s -f 2"
extend .1.3.6.1.4.1.2021.90 vopstats_zfs_write_bytes /bin/bash -c "kstat -p ::vopstats_zfs:write_bytes | cut -s -f 2"

Graph template à importer dans cacti : ZFS – VFS Throughput

extend .1.3.6.1.4.1.2021.88 zpool_name /bin/bash -c "zpool list -H -o name"
extend .1.3.6.1.4.1.2021.88 zpool_snap /bin/bash -c "zpool list -Ho name|for zpool in `xargs`;do zfs get -rHp -o value usedbysnapshots $zpool|awk -F: '{sum+=$1} END{print sum}';done"
extend .1.3.6.1.4.1.2021.88 zpool_used /bin/bash -c "zpool list -Ho name|xargs zfs get -Hp -o value used"
extend .1.3.6.1.4.1.2021.88 zpool_data_used /bin/bash -c "zpool list -Ho name|for zpool in `xargs`;do snap=`zfs get -rHp -o value usedbysnapshots $zpool|awk -F: '{sum+=$1} END{print sum}'`;pool=`zfs get -Hp -o value used $zpool`; echo $pool $snap|awk '{print (\$1-\$2);}';done"
extend .1.3.6.1.4.1.2021.88 zpool_available /bin/bash -c "zpool list -Ho name|xargs zfs get -Hp -o value available"
extend .1.3.6.1.4.1.2021.88 zpool_capacity /bin/bash -c "zpool list -H -o capacity|cut -d % -f 1"

Script à copier dans le répertoire ”/resource/snmp_queries/” : ZFS – zpool usage
Graph template à importer dans cacti : ZFS – zpool usage
Ce dernier graph est similaire à celui que nous avions posté il y a quelques temps mais permet de distinguer la consommation des data de celle des snapshot.

extend .1.3.6.1.4.1.2021.84 busy /bin/bash -c "iostat -xrn 1 3|grep -E 'c2t'|grep -vE c2t15d0|tail -\$((\$(paste -d= <(iostat -x | tail -n +3 | awk '{print \$1}') <(iostat -nx | tail -n +3 | awk '{print \"/dev/dsk/\"\$11}')|grep -E 'c2t'|grep -vE c2t15d0|wc -l)*2))| awk -F',' 'BEGIN { n=0; sum=0; } { n++; sum += \$(NF-1); } END { printf (\"%.2f\",sum / n); }'|awk '{ printf (\"%d\", (\$1 > 100) ? 0 : \$1); }'"

Graph template à importer dans cacti : ZFS – disk busy
Ce graph est expérimentale et spécifique dans la mesure où il représente la charge estimée des disk filtrés par les differents grep de la commande, à ajuster en fonction de la cible. Le scénario cible idéal est un système avec un seul zpool (mis à part celui du système). Dans notre exemple, nous avons limité à tous les disques dont les noms commencent par “c2t” et exclu “c2t15d0″ (hot spare dans ce cas).

Tags:

16 Responses to “Templates ZFS pour cacti”

  1. Il manque maintenant juste un joli tutorial sur comment monter un filer ZFS de A à Z avec les tips & tricks qui vont bien pour son homelab !

  2. on va faire ça à la sortie de nexenta 4.0 ou freenas 8.3 :)

  3. Super !
    J’ai juste du changer le CF TYPE du template “ZFS – VFS IOPS” de LAST à AVERAGE pour ne plus avoir d’erreurs, et ça roule !
    A coté de ça je note toutes les modifs que je fais à mon nexenta (en VM pour le moment en attendant un HP N40L qui devrait arriver très prochainement:) ):
    - ajout iozone
    - ajout lcdproc (pour mettre un LCD dans l’emplacement 5″1/4, juste devant un disque pour l’OS)
    - monitoring cacti (zfs + SMART)

    Autre chose à rajouter que j’aurais oublié ?

  4. J’oubliais.
    Dans le template “ZFS – Disk Busy” il y a un problème dans le XML: la 6ème ligne en partant du bas (Invalid round robin archive.) empêche l’import du template.

    Voili.

  5. L’xml est corrigé, merci pour le feedback.
    c’est une bonne idée le lcdproc, je vais peut etre resortir mon vieux crystalfontz :)

  6. LCDProc done (curses et CfontzPacket) :

    +——————–+
    ¦## SYSTEM UPTIME ##+¦
    ¦ nexenta01 ¦
    ¦ 2 days 02:05:24 ¦
    ¦ SunOS 5.11 ¦
    +——————–+

    Reste à porter les commandes utilisées dans l’agent SNMP pour cacti vers un joli client perl pour LCDProc :)

  7. Hi,

    Can’t get the disk busy script to work.
    Can you post a snippet of the sample output? So i can try to recreate?

    Thanks!

  8. Hi peter, the output is an integer between 0 and 100 that would represent the zpool load so you have to filter the vdevs zpool members only.

  9. getting partial results (cacti 0.88), what am i missing?

    07/06/2014 06:04:44 PM – CMDPHP: Poller[0] Host[20] DS[181] WARNING: Result from SNMP not valid. Partial Result: U
    07/06/2014 06:04:44 PM – CMDPHP: Poller[0] Host[20] DS[181] SNMP: v2: 192.168.1.199, dsname: zfs_arc_misses, oid: UCD-SNMP-MIB::ucdavis.89.3.1.1.10.97.114.99.95.109.105.115.115.101.115, output: U

  10. what do you get with snmpwalk?

  11. Peter Sun Says:
    October 30th, 2014 at 5:23

    OS: Solaris 11.2
    zpool_sanp and zpool_data_used return nothing, I have to put them in bash scripts. but zpool_data_used reports:

    awk: syntax error near line 1
    awk: illegal statement near line 1
    awk: syntax error near line 1
    awk: illegal statement near line 1

    any suggestion?

    sorry for typing in English.

  12. Peter Sun Says:
    October 30th, 2014 at 5:24

    Hi,
    I try using gawk and remove backslash before $1, and it works.

  13. Thanks for the feed back peter

  14. [...] [...]

  15. Hi,

    I tried your scripts, they are good, now only one problem, I can’t see IOPS graph.

    the error message is :
    ERROR: the RRD does not contain an RRA matching the chosen CF

    after googling, I change the IOPS template, change “(zfs_vfs_io_reads): Reads:” and “(zfs_vfs_io_writes): Writes:” from LAST to AVERAGE, and I get the graph.

  16. thanks for sharing

Leave a Reply