tooltje/scriptje om bytes te parsen voor zpool monitoring

Pagina: 1
Acties:

  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Ola, ik wil mijn ZFS pools graphen in Cacti (dmv SNMP). Ik heb geen goede manier gevonden om dat goed via NET-SNMP te doen.. Ik zie wel dat snmpdf de invidiuele filesystems kan monitoren, maar ik wil juist de pools zien (die maken voor mij het duidelijkst wanneer ik schijven moet bijplempen).

Dus dan maar een scriptje schrijven.

De zpool list:

[angelo@hon-nas-01 ~]$ sudo zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 597G 568G 29.3G 95% ONLINE -

Als ik bijvoorbeeld slechts de size wil zien:

[angelo@hon-nas-01 ~]$ sudo zpool list -H -o size tank
597G

Dat werkt prima, maar nu zoek ik nog een simpele manier om deze value met suffix te converteren naar bytes.. Deze machine is een FreeBSD7.1 machine, en ik kan in bash duiken om een scriptje te schrijven wat die values parsed, maar misschien weet iemand of er een bestaand tooltje is die dit kan doen? Daar heb ik meer vertrouwen in dan in mijn bash eigen gescript :)

Ik zoek dus eigenlijk een tooltje doe het volgende doet.

code:
1
2
3
4
tooltje 234 -> 234
toolje 235K -> 240640
tooltje 34G -> 36507222016
etc

iemand suggesties?

Misschien ook maar een feature request maken bij OpenSolaris dat ze met een optie de value in bytes kunnen teruggeven, maar dat duurt waarschijnlijk nog wel een jaar voor dat weer in freebsd zit :(

edit: feature request gemaakt

[ Voor 3% gewijzigd door axis op 08-03-2009 16:13 ]

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 13:44

Kees

Serveradmin / BOFH / DoC
Ik vrees dat het zo specifiek is dat je er zelf iets voor moet verzinnen, bijvoorbeeld:
#!/bin/bash

input=`cat`
tgmk=${input:(-1)}
inputcl=`expr match "$input" '\([0-9]*\)'`

case $tgmk in
  "T")
        echo $[ $inputcl * 1024 * 1024 * 1024 * 1024 ]
        ;;
  "G")
        echo $[ $inputcl * 1024 * 1024 * 1024 ]
        ;;
  "M")
        echo $[ $inputcl * 1024 * 1024 ]
        ;;
  "K")
        echo $[ $inputcl * 1024 ]
        ;;
  default)
        echo $inputcl
        ;;
esac

Te gebruiken dmv een pipe, maar ook makkelijk om te schrijven naar een variable based iets :)
test$ cat input
597G
test$ cat input | ./parse.sh
641023868928

[ Voor 6% gewijzigd door Kees op 08-03-2009 17:03 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Erg nuttig is dat niet, tenzij je daadwerkelijk bytes krijgt. Nu kun je alsnog maar waardes in 1GB increments zien namelijk. Beter strip je gewoon die G eraf en zeg je 'de schaal is in gigabytes'.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • axis
  • Registratie: Juni 2000
  • Laatst online: 26-01-2023
Kees, thanks, daar kan ik zeker wat mee! Scriptje werkt perfect (ik moet alleen op BSD wel gexpr gebruiken ipv expr kwam ik achter na wat gezoek). Nu kan ik ieder geval in 1 oogopslag zien hoe de storage ervoor staat (dat kan natuurlijk altijd aan de hand van het percentage), maar nu kan ik het ook makkelijk terugzien over de afgelopen maand, etc..

Afbeeldingslocatie: http://files.hongens.nl/images/20090308_cacti_zpool.png

@CyBeR, je hebt gelijk, maar ongeveer is good enough voor nu.. Hopelijk is er iemand die mijn feature request oppikt en de bytes gewoon in het zpool list commando stopt, dan ben ik ook klaar, met nauwkeurige resultaten :)
En ik gebruik hetzelfde scriptje voor pools van 256M tot 5TB, dus dan is wat generieker wel fijn..

[ Voor 7% gewijzigd door axis op 08-03-2009 22:53 ]

Two advices for network troubleshooting.. learn to draw diagrams in Visio, and THINK IN LAYERS!