Hlavní navigace

MRTG - grafické prehľady (4)

Milan Gigel 11. 10. 2001

V minulých častiach miniseriálu o MRTG sme si čo to povedali o inštalácii a konfigurovaní tohoto nástroja pre sledovanie trafficu, dnes si ukážeme na pár príkladoch, ako môžeme spracovávať ľubovoľné dáta v časovom rade.

Ako ste si iste všimli, súčasťou distribúcie mrtg je rozsiahla škála skriptov v adresári contrib, takže si na modeli ukážeme, akým spôsobom môžeme vstupné dáta MRTG predávať.

1. SNMP

SNMP sme využili pre zber dát o trafficu, avšak pri nakonfigurovaní snmpd na linuxe môžeme pri znalosti OID, alebo jeho prechádzaní – napríklad nejakým MIB browserom – priamo zadať ručne do konfiguračného suboru OID hodnotu a tým docieliť sledovanie inej veličiny, napríklad vyťaženia procesora. Nasledujúci príklad demonštruje sledovanie tejto veličiny v praxi.

  Title[^]: Vyťaženie CPU
  Pagetop[^]: <H1> Vyťaženie CPU
  Target[cpu]:1.3.6.1.2.1.25.3.3.1.2.1&1.3.6.1.2.1.25.3.3.1.2.1:public@localhost
  Maxbytes[cpu]:100
  Unscaled[cpu]:ymwd
  ShortLegend[cpu]:%
  Options[cpu]:gauge

Maxbytes hodnota určuje maximálnu hodnotu, ktorá samozrejme je 100. V spojení s parametrom Unscaled:ynwd nám spôsobí to, že v grafe je stále na osi Y maximom hodnota 100 a nedochádza k škálovaniu veľkosti grafu, čo zvýši prehľad o aktuálnom vyťažení. Options:gauge je veľmi dôležitým parametrom. Špecifikuje, že hodnota znamená aktuálny stav a nie kumulovanú hodnotu v časovom rade. Ak by nebola špecifikovaná, mrtg by pri každom čítaní vstupnej hodnoty odčítalo predchádzajúcu hodnotu od aktuálnej a výslednú hodnotu by považovalo za hodnotu, ktorú chceme v grafe zobraziť.

Častým príkladom takéhoto použitia je grafické znázorňovaní hodnôt z prevádzky proxy daemona SQUID, ktorý má integrovaný snmp engine, ktorý nám poskytuje aktuálne hodnoty o stave, využití, dns requestoch… K tomuto sa ale môžeme vrátiť neskôr.

2. Užívateľské skripty

V minulých častiach sme si ukázali, že ako target môžeme špecifikovať ľubovoľný skript, ktorý na stdout poskytne hodnoty. Ukážeme si to na modeli showdisk od Stevena Micallefa. Myslím, že to bude najlepší príklad, pretože zahŕňa zber dát prostredníctvom jednoduchého skriptu s možnosťou zberu dát z viacerých linuxových strojov. Takže hor sa na to.

Na stroji, z ktorého budeme zbierať dáta o obsadenosti jednostivých partícií si umiestnime skript na zber dát s názvom showdisk.pl , ktorý môže vyzerať nasledovne:

  #!/usr/bin/perl
  foreach $_ (`df -k | grep -v "Filesystem"`)
  {
    ($device, $size, $used, $free, $percent, $mount) = split(/\s+/);
    chop($percent);
    print "$percent\n";
  }

Výstupom skriptu sú percentuálne využitia jednotlivých partícií, každá na samostatnom riadku.

Teraz si prostredníctvom daemona inetd aktivujeme skript na nejakom porte. V súbore /etc/services si zriadime na voľnom porte tcp službu s názvom df napríklad na 9047, nastavíme prístupové práva pre určenú ip adresu v /etc/hosts.allow a urobíme si záznam do /etc/inetd.conf

  df  stream  tcp  nowait  root  /usr/sbin/tcpd /sbin/showdisk.pl

Tým máme sprístupnený skript pre čítanie výstupu zo špecifikovaného stroja na ktorom nám beží mrtg, z ktorého jednoducho prostredníctvom telnetu zistíme aktuálnu hodnotu.

Teraz si na stroji s mrtg pripravíme skript, ktorý poskytne dáta pre grafické spracovanie. Dáme mu názov getdisk.pl:

  #!/usr/bin/perl
  use Net::Telnet;
  $hostname = $ARGV[0];
  $disk_no=$ARGV[1];
  $port = 9047
  $i=0;
  if (!defined($disk_no)) {$disk_no=1;}
  $t= new Net::Telnet ( Host =>$hostname, Port => $port);
  $t->open("$hostname");
  while ($i ne $disk_no) {
    $data = $t->getline(Timeout=>40);
    $i++;
    print $data,0,"\n" if $i eq $disk_no;
  }

Vstupnými parametrami skriptu sú hostname stroja, z ktorého sa má zber realizovať a poradové čislo partície. Výstupom je hodnota percentuálneho využitia danej partície sformátovaná pre mrtg.

Teraz už len stačí v konfiguračnom súbore si nadefinovať cieľ a možnosti nasledovne:

  Target[disk]: `/usr/local/mrtg-2/getdisk.pl xxx.xxx.xxx.xxx 1`
  Title[disk]: Obsadenosť root partície na xxx.xxx.xxx.xxx.
  Maxbytes[disk]: 100
  Suppress[disk]:y
  LegendI[disk]: % využitých
  LegendO[disk]:
  Legend1[disk]: % využitých
  Legend2[disk]:
  Options[disk]:gauge

Výsledným grafom bude priebeh využitia prvej partície na stroji xxx.xxx.xxx.xxx. Urobíme si teda záznamy pre ďalšie partície tým že zmeníme názov targetu a druhý parameter skriptu na 2,3,4.....

Analogickým spôsobom si na klientskej strane môžeme urobiť skript na zber ľubovoľných iných dát, ako napríklad vyťaženia procesoru (kvoli čítaniu jednej veličiny predsa nemusíme spojazdňovať snmp) napr:

  #!/bin/sh
  top b -n 2 | grep "CPU state" tail -1 | awk '{print substr($9,1,2)}'
  echo 0

Teraz je už iba na nás, či nás budú zaujímať pre tvorbu grafu veličiny získané napríklad prostredníctvom LM_SENSORS, externých meterologických zariadení, počet prihlásených userov na dialup uzle, hodnoty získané z logových súborov. Jednoduchým spôsobom si upravíme skript a hor sa do grafovania.

Nabudúce si povieme niečo o mocnom nástroji pre tvorbu grafov z prevádzky squidu prostredníctvom mrtg.

Našli jste v článku chybu?

12. 10. 2001 13:01

MTa (neregistrovaný)

MRTG vyuzivam jiz nekolik let, presto jsem v clancich objevil nekolik uzitecnych parametru, o kterych jsem nevedel. Stalo by asi za to v nekterem z dalsich pokracovani uvest MIB promenne nekterych dulezitych promennych aktivnich prvku spolu s priklady Options[_] treba pro chybovost linky, CPU, teploty, a pod.

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Lupa.cz: E-shopy: jen sleva už nestačí

E-shopy: jen sleva už nestačí

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Jak koupit Mikuláše a nenaletět

Jak koupit Mikuláše a nenaletět

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...