ot mitio(7-06-2005)

reiting (35)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane


Malko vissh pilotazh - izgrazhdane na statistika s Cacti i RRDtool (za nachinaeshti)
edna stranitsa na Universitetskiiat Izchislitelen TSentur



 Sudurzhanie:

1.Uvod
2.TSel
3.Instalatsiia
4. Suzdavane na obekt ustroisvto.
5. Suzdavane na 'Date Input Methods'.
6. Suzdavane na 'Data Templates'.
7. Suzdavane na 'Data Sources'.
8 Suzdavane na 'Graph Management'.
9. Zaklyuchenie.
10.Prepratki



1. Uvod
     "Know your network!"
Tazi statiia niama za tsel da ubezhdava chitateliat v nuzhdata ot statistika. TSelta e da se izlozhi konkretna vuzmozhnost za kolektsionirane i vizualizirane na statisticheski danni svurzani s vashata mrezha.
- Dobre, no zashto tochno Cacti?
Cacti e pulno, grafichno reshenie, koeto kolektsionira i vizualizira danni. Produkta eopen source i e pod GNU litsenz. Momentnata versiia na produkta e 0.8.6d (april 26th, 2005). Izpolzva se uspeshno ot reditsa universiteti i institutsii sred koito Purdue University i Space Science and Engineering Lab - Montana State University. Tazi programa e prilozhena i funtsionira i v Sofiiskiiat Universitet.
Goliamoto preimushtestvo na Cacti idva ot izpolzvaneto na RRDtool (Round Robin Database). V deistvitelnost Cacti e samo web baziran frontend na RRDtool.
Za po-neturpelivite predlagam da razgledat screenshots na Cacti.
- A, zashto puk RRDtool? Ne mozhe li MRTG?
RRDtool e naslednik na MRTG. Mnozina opredeliat RRD kato "industry standard data logging and graphing application". V deistvitelnost tova e sistema, koiato suhraniava i vizualizira vremevi danni. RRD tablitsite suhraniavat dannite v mnogo kompakten format, koito ne se uvelichava vuv vremeto.
Za po-neturpelivite predlagam da razgledat gallery na RRDtools. Prepratkata e kum starata versiia nasaita, no tam ima mnogo po-dobri primeri. tuk, tuk, tuk i tuk.
- Zashto da cheta tazi statiia? Ne mozhe li direktno da si procheta dokumentatsiiata na produktite?
Mozhe. Dazhe e preporuchitelno ;). V kraia na statiiata ima prepratki s povecheto informatsiia. TSelta obache mi e da predostavia na chitatelia raboteshto reshenie, bazirano na moia opit sgornite programi :).
Sudurzhanie

2. TSel
 
         TSelta mi e da nasocha vnimanieto na chitateliat vurhu produktite Cacti i RRDtool i vuzmozhnostite koito te predlagat. V statiiata shte se predstavi, kakto spomenah, konkretno reshenie za vizualizirane nastatisticheski danni svurzani s vashata mrezha - primerno golemina trafik. 
- Za kogo e prednaznachena statiiata?
Osnovnata target grupa, sa administratorite, koito niamat opit v izgrazhdaneto na statistika i ili ne sa se zanimavali s Cacti. A ot ostanalite koito veche sa se borili s gornite dva produkta ochakvam silna gradivna kritika. :)
Sudurzhanie

3. Instalatsiia
          Neobhodimi paketi: httpd php php-mysql php-snmp mysql mysql-server net-snmp rrdtool.
Za tezi ot vas koito polzvat Fedora, radostna vest e nalichieto na kompiliran RPM paket za Cact (ot sektsiiata za download v ofitsialniiat sait na Cacti (sha1 md5) ili ot repositorito na DAG (dsa sha1 md5 gpg))
Za instaltsiia shte izpolzvame yum :
# yum install cacti rrdtool 

Ostava da se suzdade baza danni na cacti v MySQL :
 # mysqladmin --user=root create cacti 
# mysql cacti # mysql --user=root mysql
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'somepassword';
mysql> flush privileges;

Nastroika na konfiguratsionniiat fail /var/www/cacti/include/config.php :
 $database_default = "cacti"; 
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "somepassword";

Ako ste instalirali cacti ot RPM, to sobstvenika na /var/www/cacti/{log,rrd} direktoriite e potrebiteliat cacti. Ako tova ne e taka, to triabva da ruchno da zadadete sobstvenika na tezi direktorii.
I posledno ostana da se ukazhe periodut ot vreme, prez koito cacti shte subira statisticheskite danni. Za tselta triabva da se dobavi v /etc/crontab sledniiat red :
Ostava da otidete na http://VASHIQT-SERVER/cacti/ i da produlzhite s instalatsiiata.
 */1 * * * * cacti php /var/www/cacti/poller.php > /dev/null 2 > &1 

Po tozi nachin ukazvame statistika da se subira vsiaka minuta.
Sudurzhanie

4. Suzdavane na obekt ustroistvo.
            Veche instalirali Cacti, zapochvame realnata rabota :).
Purvoto neshto, koeto shte napravim e suzdavaneto na devices. Otivame na menyuto v liavo Devices i sled tova na Add. Formata na populvane e neshto to vida na:

filling devices form(natisti za da se ugolemi)

Zabelezhete, che ako vupreki vuzmozhnostta za 'Host Template' Linux Router, za izvlichane na SNMP informatsiia ot nashiiat Linux-ski survur, shte izberem Generic SNMP-enabled Host.
Tova koeto e drazneshto (za men) e ne tolkova lipsata na realizatsiia na snmpv3, kolkoto lipsata na vuzmozhnost da ukazesh che ne iskash snmpv1 ili snmpv2. Tova obache se zaobikalia, kato poleto 'SNMP Community' se ostavi prazno.

Sudurzhanie

5. Suzdavane na 'Date Input Methods'.
            Opredeleno tova e nai-tezhkata zadacha, koiato triabva da napravim. Vupreki sushtestvuvashtata dokumentatsiia, chovek mozhe da si zagubi ne malko chasove dokato suzdade tochniiat Input Methods.
            I taka, otivame na menyuto v liavo Date Input Methods i sled tova na Add. Formata na populvane e neshto to vida na:

filling dataInputMethod form(natisti za da se ugolemi)

Tova koeto budi interes e poleto Input Type, i po spetsialno optsiite 'Script/Command' (koiato shte izpolzvame sega) i 'Script - Script Server (PHP)' (po danni na avtorite, izpolzvaneto mu drastichno uskoriava izpulnenieto na skriptovete).
Vnimanie! Triabva da se vnimava za sintaksisa na poleto 'Input String':
 bash <path_cacti>/scripts/snmpv3_data.sh <ipAddress> <securityName> <authKey> <privKey> <interface>
           

Purvata promenliva ('bash') ukazva komandata koiato shte izpulni nashiiat skript. Mozhe tova da e perl, php i drugi. e premenliva, vrushtashta fizicheskiiat put na programata (za RPM reshenieto, toi e: /var/www/cacti). Sledvashtite promenlivi (zabelezhete che sa zagradenie v ) se zadavat kato parametri na skripta vi, v posledovatelnostta koiato ste ukazali.
Sled kato dadete 'Create', stranitsata vi prenasochva kum sebe si, no s vuzmozhnostda vuvezhdate informatsiia za vhodiashtite i izhodiashti promenlivi. Tova stava s natiskane na Add na sutvetnata sektsiia (Input Fields ili Output Fields).
Za sintaksisa na Input Fields niama da se spirame. Samo shte otbelezha, che veroiatno bi vi bilo interesno vuzmozhnostta za zadavane na 'Regular Expression Match'.
Vnimanie! Otnovo triabva da oburnem vnimanie na sledvashtoto : Output Fields. Vazhene sintaksisa na output-a ot nashiiat skript. Ako skripta ni vrushta samo edna promenliva, to vrushtaniiat rezultata triabva da bude v sledniiat format:
 <value_1>
           

Samo stoinost (bez ). Kogato obache iskame da vizualizirame poveche danni,imam dva izbora - ili da napravim mnogo skriptove (eventualno i Date Input Methods) ili da napishem nashiiat skript taka, che da vrushta poveche ot edna stoinost. Za tova obache triabva da spazim sledniiat sintaksis:
 <fieldname_1>:<value_1> <fieldname_2>:<value_2> ... <fieldname_n>:<value_n>
           

Udachen primer ima v dokumentatsiiata na Cacti. Da kazhem che imame skript koito vrushta 3 promenlivi: 1min, 5min i 10min (da rechem za otchitane na natovarenost). Izhodut koito triabva da vrushta skriptani, triabva da e v sledniiat vid:
 1min:0.40 5min:0.32 10min:0.01
           

Eto sega i koda na snmpv3_data.sh:
 #!/bin/bash
 
 # $1 - ipAddress
 # $2 - securityName
 # $3 - authKey
 # $4 - privKey
 # $5 - interface
 
 dateInOctets=`/usr/bin/snmpwalk -v 3 -n '' -u $2 -a MD5 -A $3 -x DES -X $4  -l authPriv $1 IF-MIB::ifInOctets |cut -d" " -f 4`
 dateOutOctets=`/usr/bin/snmpwalk -v 3 -n '' -u $2 -a MD5 -A $3 -x DES -X $4  -l authPriv $1 IF-MIB::ifOutOctets| cut -d" " -f 4`
 
 inOctets=0
 outOctets=0
 
 for Int in ${5} ; do
         curInt=0
         for i in ${dateInOctets} ; do
                 curInt=`expr ${curInt} + 1`
                 if [ ${curInt} -eq ${Int} ] ; then
                         inOctets=`expr ${inOctets} + ${i}`
                 fi
         done
         curInt=0
        for i in ${dateOutOctets} ; do
                 curInt=`expr ${curInt} + 1`
                 if [ ${curInt} -eq ${Int} ] ; then
                         outOctets=`expr ${outOctets} + ${i}`
                 fi
         done
 done
 
 echo  "inOctets:${inOctets} outOctets:${outOctets}"
 
 # maded by Mitio Matanov
 # Wed May 25 00:28:32 EEST 2005
 
           

Zabelezhete, che tozi skript izpulniava zaiavkite kum snmp agenta v rezhim (securityLevel - optsiiata '-l') v authPriv (authenticated and encrypted). Neshtoto, koeto go niama realizirano v Cacti (za sega :)), i koeto ni kara da izpolzvame vunshen (nash) skript za izvlichane na informatsiiata.
Sushto taka vmesto IF-MIB::ifOutOctets, mozhe da izpolzvate IF-MIB::ifHCOutOctets koeto e 64-bit-otva versiia na ifOutOctets - po tozi nachin se izbiagva prevurtaneto na broiacha. (Tova prevurtane obache ne vliia po nikakuv nachin na zapisite v RRD bazata danni, tui kato ot RRDtool sa predvideli sushtestvuvaneto na podobni, nezhelani, danni i te se ignorirat (t.e. ne se vzimat v predvid))

Sudurzhanie

6. Suzdavane na 'Data Templates'.
            Veche preborili se s Data Input Methods, izpili po edno kafe ili bira, produlzhavame napred :).
Triabva da suzdadem Date Tempalte, koito izpolzva nashiiat Data Input Method. Date Template vsushtnost e obrazetsut, koito shte izpolzvame pri suzdavane na RRD bazite ot danni.

Ot menyuto v liavo Date Tempalte izbirame na Add. Formata na populvane e neshto ot vida na:

filling dataTemplate  form(natisti za da se ugolemi)

Niama mnogo interesni poleta, no vse pak zasluzhava si da se kazhe po niakoia duma. :). Pod vsiako pole, koeto populvame, ima checkbox buton. Ako iskame v suzdavaneto na bazata ot danni da imame vuzmozhnost da redaktirame tova pole, to triabva da otmetnem checkbox-a.
Drugoto interesno e optsiiata 'Step'. Tova e stupkata, prez koiato shte se vika Data Input Method-a (t.e. vremeto mezhdu dva updates). Izmerva se v sekundi.
Interesno e i poleto Heartbeat. Tova e optsiia idvashta ot RRDtool - maksimalnoto kolichestvo vreme (v sekundi) koeto triabva da mine mezhdu dva updates, predi dannite da se opredeliat kato 'unknown' (ili 'nan', kakto mozhe da se sreshtne). Preporuchva se da e dvoino poveche ot 'Step'.
Sledvashtata vazhna obshtiia, tova e Data Source Type. CHrez neia okazvame kak Cacti (poskoro RRDtool-sut, koito Cacti izpolzva) shte tretitra postupvashtite danni. Vuzmozhnite stoinosti sa GAUGE, COUNTER, DERIVE, ABSOLUTE. Tuk niamame vuzmozhnost da izpolzvame realiziraniiat v RRDtool COMPUTE . Za nashite tseli shte izpolzvame 'data source type'-ut COUNTER. Pri nego se otchita razlikata mezhdu poslednite dve stoinosti. Primerno za vreme x imame stoinost 100000000, a za vreme x+60 100500000, to v bazata danni shte se zapishe za vremeto x+60 stoinostta 500000 (razlikata). Poveche informatsiia otnostno 'data source type' triabva se prochete ot dokumentatsiiata na RRDtool za rrdcreate. Polezna e i 'How to measure' sektsiiata v sushtiiat dokument.
I... posledno za tazi sektsiia - poleto Associated RRA's. Blagodarenie na tezi arhivi (archives), goleminata RRD faila ne zavisi ot broia na zapisite v nego :). Tuk mnogo, ama naistina mnogo kratko shte kazha kakvo e RRA (round robin archives). Arhivut RRD se sustoi ot niakolko RRA redove (RRA lines). Vseki ot tezi redove pazi informatsiia za AVERAGE, MIN, MAX ili LAST za konkretna promenliva (data-sources (DS)) za konkretno vreme.
Primeren RRA red mozhe da sudurzha 120 AVERAGE stoinosti, za period - poslednata sedmitsa.
Po podrazbirane Cacti predlaga samo 4 tipa RRAs: 'Daily (5 Minute Average)', 'Weekly (30 Minute Average)', 'Monthly (2 Hour Average)' i 'Yearly (1 Day Average).
Za da suzademe svoi RRA template, otivame na 'Data Sources', 'RRAs', 'Add'. Eto primeren RRA, koito da sudurzha informatsiia za ezheminutni danni za poslednite 2 chasa:
filling RRA form(natisti za da se ugolemi)

Sudurzhanie

7. Suzdavane na 'Data Sources'.
            Heh. Ima vie oshte chetete. Bravo, bravo! Radostnata vest, e che trudnata chast mina.Ot tuk natatuk sa samo izpolzvane na gotovite veche obraztsi (templates). 
Otivame na 'Data Sources', 'Add'.
Za poleto 'Selected Data Template' izbirame imeto na template-ut koito napravihme v prednata sektsiia (Ako tochno ste sledvali primernite grafiki, tova e 'UCC SNMPv3 Data').
A za 'Host' izbirame template-a na suzdaden ot nas v sektsiia 4. (Ako pak sme sledvali grafikite, to tova e 'GW FNPP'). Zabelezhete, che po podrazbirane imame Localhost (127.0.0.1)
Sled 'Create' produlzhavame s populvaneto na neobhodimata informatsiia. Vizhte edinprimer za 'Data Sources':
filling dataSources form(natisti za da se ugolemi)

Tui kato poletata authKey, privKey i securityName ne e nebohodimo ;) da sa publichno dostoianie, sum slozhil kartinka otgore :).
Tuk ima niakolko interesni momenti. Takuv e promenlivite koito se izpolzvat. |host_description| e stoinostta na promenlivata ukazana v Description-a poleto na Host-a (sektsiia 4).
Promenlivata puk ukazva putiat do bazite danni (tova e /rra (spetsialno v kompiliraniiat RPM direktoriiat e /var/www/cacti/rra).
Sushto taka e polezno da se znae, che sled kato suzdadete 'Data Sources', vednaga se suzdava rrd fail, koito obache e prazen (prazen obache ne oznachava, che e s golemina 0. Kakto kazah po-gore, bazata danni RRD ostava postoianna vuv vremeto, dori i kogato niama danni v neia). Edva sled 2 update-a shte imeme niakakva informatsiia ( 'data source type'-ut COUNTER iziskva pone 2 stoinosti :)). Taka che edva sled 2-3 minuti shte imaterealni danni :).
Za test, mozhe da provrite ot konzola sustoianito na faila:
 # rrdtool fetch /var/www/cacti/rra/gw_fnpp_inoctets_50.rrd AVERAGE --start -5minutes 
                       outOctets            inOctets
 1117629540: 1.6399165710e+03 3.7027214253e+03
 1117629600: 1.3154775956e+03 5.1096389090e+03
 1117629660: 7.4422540984e+02 2.6793845883e+03
 1117629720: 1.9597743077e+03 2.2392041400e+04
 1117629780: 4.1897202825e+03 6.3886155621e+04
 1117629840: nan nan

Zabelezhete, che za vremeto 1117629840 (purvata stoinost na posledniiat red) e vremeto (seconds since the Unix Epoch) prez koeto se ochakva da e sledvashtiiat update. Logichno nie vse oshte niamame danniza tozi period i zatova stoinostta e 'nan'.
Poveche informatsiia otnostno izpolzvaneto na rrdtool fetch, mozhe da namerite v dokumentatsiiata za rrdfetch.
Sudurzhanie

8 Suzdavane na 'Graph Management'.
           I... Haide da vizualizirame dannite. 'Graph Management', 'Add'. Tuk niama nishto trudno ili oburkvashto, taka, che napravo kum primera: 
filling graphManagement form(natisti za da se ugolemi)

Interesno obache bi vi bilo da vidite URL-to vuv vashiiat brauzer. Triabva da e neshtoot vida na:
  http://VASHIQT-SERVER/cacti/graphs.php?action=graph_edit&id=44
           

Interesuva vi id-to na grafikata (v tozi primer tova e '44'). S negova pomosht imate dostup do vsichki grafiki svurzani s tova id:
  http://VASHIQT-SERVER/cacti/graphs.php?local_graph_id=44&rra_id=all
           

Zabelezhete che tova sa 6 grafiki - po edna za vseki 'Associated RRA' koito sme ukazali v 'Data Templates' (sektsiia 6).
Sudurzhanie

9. Zaklyuchenie
            Suvsem kratko zaklyuchenie : 
Kakto vizhdate tova e edno dosta goliamo i vse pak, nevseobhvatno rukovodstvo. V nego ne sa opisani vsichki vuzmozhnosti kakto na Cacti, taka i na RRDtool. ZHivot i zdrave, i pri nalichie na zhelaeshti, mozhe da produlzha temata za Cacti, no tozi put dokumenta shte e za 'naprednali' :->. Sushto taka ne sum opisal ikak se instalira i konfigurira SNMP Agent (razbira se tova e izvun temata, no e polezno/neobhodimo da se znae.)
V sledvashtite dokumenti shte razgledam drugi aspekti/vuzmozhnosti za kolektsionirane i vizualizirane na statisticheski danni.

Sudurzhanie

10. Prepratki
          1. Cacti ofitsialna stranitsa 
2. Cacti dokumentatsia
3. RRDtool ofitsialna stranitsa
4. RRDtool dokumentatsia
5. Statistika na trafika na SU

Sudurzhanie



<< Virtualen tunel na bazata na Linux -2 | Kak da si napravim maluk torent traker na Linuks mashinata >>