Toon posts:

Data invoer in RRD met regexp

Pagina: 1
Acties:

Verwijderd

Topicstarter
Sinds kort wordt er op mijn werk gebruik van Nagios gemaakt om de status van servers bij te houden. Mij is gevraagd de gebruikte schijfruimte te visualiseren met grafieken. Nu heb ik een geschikte kandidaat gevonden in SMIstat. Deze genereert grafieken vanuit RRD databases. De invoer gaat op basis van een string waarop een regular expression wordt losgelaten. Een tijdje terug hebben jullie me hier mee weten te helpen, dus ik hoop dat dat nu ook het geval is.

Ik heb dus de volgende string die wordt gegenereerd door Nagios.

C:\ Used Space=9,20Gb;8,20;9,22;0.00;10,25

Nu wil ik de waarde 9,20 invoeren in de RRD database. Het liefst heb ik het zo dat er een waarde in megabytes (de waarde * 1024 dus) uitkomt. Wat voor expressie zou ik hiervoor kunnen gebruiken?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Heb je zelf geen enkel idee? De expressie zelf stelt weinig voor; je zoekt een stukje tekst dat eerst een of meerdere cijfers bevat, dan een komma, dan weer één of meerdere cijfers en dan een stukje tekst (Tb/Gb/Mb/Kb/b). Van dit stukje tekst heb je alleen het stuk met de cijfers nodig, dus dat wordt een beetje knutselen met haakjes. Hoe je vervolgens die waarde vermenigvuldigt zul je zelf ook wel weten. :)

Anyhow: wat heb je zelf al geprobeerd?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • edeboeck
  • Registratie: Maart 2005
  • Laatst online: 16-02 12:21

edeboeck

mie noow noooothing ...

Het kan zelfs misschien nog eenvoudiger (?): alles tussen "=" en het eerste teken dat geen cijfer of komma is. Dan heb je de waarde en de eenheid is ook eenvoudig te achterhalen, zeker omdat de mogelijkheden beperkt zijn.

Is er een bepaalde reden waarom je per se met regexp wil werken (ik vind dit nergens terug in je TS)? Akkoord het is (toch imho) sneller dan werken met stringfuncties, maar scheelt het werkelijk zoveel?

Tip:
Anyhow: wat heb je zelf al geprobeerd?
offtopic:
zou het anyway kunnen zijn? ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

edeboeck schreef op maandag 24 april 2006 @ 15:11:
Het kan zelfs misschien nog eenvoudiger (?): alles tussen "=" en het eerste teken dat geen cijfer of komma is. Dan heb je de waarde en de eenheid is ook eenvoudig te achterhalen, zeker omdat de mogelijkheden beperkt zijn.
Klopt ook wel. Er zijn meerdere wegen die naar Rome leiden. Ik zou de voorkeur aan mijn voorstel geven, omdat je dan aan de regexp zelf kunt aflezen wat er eigenlijk voor data terugkomt. Maar dat is uiteraard persoonlijk. ;)
offtopic:
zou het anyway kunnen zijn? ;)
an·y·how
adv.

1. In whatever way or manner; however

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
-NMe- schreef op maandag 24 april 2006 @ 15:03:

Anyhow: wat heb je zelf al geprobeerd?
Mja....ik had de volgende string, nu voor CPU gebruik.

10 min avg Load=0%;80;95;0;100 60 min avg Load=0%;80;95;0;100 1440 min avg Load=0%;80;95;0;100

Daar wilde ik het eerste percentage van terugkrijgen. Dat is gelukt met de volgende expressie

/10 min avg Load\=([0-9]+)\%/

Dit is ook niet het probleem, dit zijn integerwaardes. Ik ben een complete noob met deze dingen dus ik dacht dat ik de "10 min avg Load" kon vervangen met "Used Space" en "%" met "GB". Dan worden de waardes wel uitgelezen maar geeft de database een fout dat er geen floats worden geaccepteerd. Dus ik wilde de waarde via een regexp met 1024 vermenigvuldigen zodat het wél een integer is, of is dit wel een hele rare gedachtengang.

Ik had iig gehoopt dat jullie me konden helpen.

[ Voor 4% gewijzigd door Verwijderd op 24-04-2006 15:28 ]


  • Oezie Woezie
  • Registratie: December 1999
  • Niet online

Oezie Woezie

Pim. is de beste

Verwijderd schreef op maandag 24 april 2006 @ 15:27:
[...]

Dan worden de waardes wel uitgelezen maar geeft de database een fout dat er geen floats worden geaccepteerd.

Ik had iig gehoopt dat jullie me konden helpen.
hoe heb je de rrdfile aangemaakt(ervan uit gaande dat je rrdtool gebruikt) gauge kan namelijk wel commagetallen maar counters en derives niet, en 9,20 is geen float 9.20 wel.

een mooi Tshirt met Pim. is de beste enzo


Verwijderd

Topicstarter
Oezie Woezie schreef op maandag 24 april 2006 @ 18:35:
[...]


hoe heb je de rrdfile aangemaakt(ervan uit gaande dat je rrdtool gebruikt) gauge kan namelijk wel commagetallen maar counters en derives niet, en 9,20 is geen float 9.20 wel.
Ja ik maak idd gebruik van rddtool en van een gauge. Die 9,20 slikt 'ie echter niet maar geeft een fout (tail ,20). Hoe ik de db precies heb aangemaakt weet ik zo niet, morgen zal ik alles even posten.

Verwijderd

Topicstarter
Okee, ik heb de volgende RRD database. Deze worden aangemaakt door SMIstat, een frontend wizard achtig programma.

Data sources:

DS:cpu:GAUGE:480:U:U
DS:diskc:GAUGE:480:U:U
DS:mem:GAUGE:480:U:U

Archives:

RRA:AVERAGE:0.5:1:16
RRA:AVERAGE:0.5:360:1
RRA:AVERAGE:0.5:2520:1
RRA:AVERAGE:0.5:10800:1

De datainvoer vindt plaats door regular expressions die worden losgelaten op de volgende strings:

10 min avg Load=50%;80;95;0;100 60 min avg Load=65%;80;95;0;100 1440 min avg Load=38%;80;95;0;100
C:\ Used Space=2,53Gb;9,60;10,80;0.00;12,00
Memory usage=377,86Mb;6019,68;6772,14;0.00;7524,60

Bij de eerste string gebruik de volgende regex:

/10 min avg Load\=(\d+)\%/

Dit werkt prima, de waarden worden in de database gezet en afgebeeld in een grafiek. Als ik dezelfde regex (wel aangepast op de string natuurlijk, 10 min avg load en % vervangen door memory usage en Mb) loslaat op de andere strings, dan zegt RRD:

No matching regexp found for these arguments

Ik heb het idee dat het iets te maken heeft met de komma, hierboven werd dat echter tegengesproken.

Wat voor regexes kan ik gebruiken om de data van de twee onderste (mem en disk) strings in te voeren?

  • Romeo_
  • Registratie: Februari 2003
  • Laatst online: 20-10-2025
Wat jij wilt doet cacti al.
Wij gebruiken naast nagios ook cacti voor soortgelijke doeleinden als jij die beschreven hebt.
link : http://www.cacti.net/
Pagina: 1