Hallo Nagioser,
ich möchte gerne eine Trafficüberwachung mittels Nagios in meiner Bachelorarbeit umsetzten.
Wird sicher nicht extrem gut skalieren, aber das sei mal dahingestellt.
Mein Agent liefert mir für jeden Switch folgendes (mal nur für zwei Ports):
 |
Quellcode
|
1
2
|
output:opensm OK - 2 Ports encounter congestion so far
perfdata:sw246_26.xmit_data=30456 sw246_26.rcv_data=30384 sw246_26.xmit_wait=16339724960 sw246_26.xmit_pkts=423 sw246_26.rcv_pkts=422 sw246_27.xmit_data=31104 sw246_27.rcv_data=31032 sw246_27.xmit_wait=13371928846 sw246_27.xmit_pkts=432 sw246_27.rcv_pkts=431
|
Ich würde jetzt gerne einen map-Eintrag haben, der generisch einen Host abarbeitet.
Für einen Port funktioniert das schon mal:
 |
Quellcode
|
1
2
3
4
5
6
7
8
|
/perfdata:sw246_(\d+).([a-z_]+)=(\d+) sw246_\d+.rcv_data=(\d+) sw246_\d+.xmit_wait=(\d+) sw246_\d+.xmit_pkts=(\d+) sw246_\d+.rcv_pkts=(\d+)/
and push @s, [ 'sw246',
[ $1.'_xmit_data', DERIVE, $2*4],
[ $1.'_rcv_data', DERIVE, $3*4],
[ $1.'_xmit_wait', DERIVE, $4 ],
[ $1.'_xmit_pkts', DERIVE, $5 ],
[ $1.'_rcv_pkts', DERIVE, $6 ],
];
|
Kann man das irgendwie loopen?
So arbeitet er natürlich nur den ersten Match ab:
 |
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Wed Apr 13 16:51:15 2011 insert.pl info runcreate creating RRD: DS = [
'/var/spool/nagiosgraph/rrd/sw246/OpenSM___sw246.rrd',
'--start',
1302706256,
'--step',
300,
'DS:26_xmit_data:DERIVE:600:0:U',
'DS:26_rcv_data:DERIVE:600:0:U',
'DS:26_xmit_wait:DERIVE:600:0:U',
'DS:26_xmit_pkts:DERIVE:600:0:U',
'DS:26_rcv_pkts:DERIVE:600:0:U',
'RRA:AVERAGE:0.5:1:600',
'RRA:AVERAGE:0.5:6:700',
'RRA:AVERAGE:0.5:24:775',
'RRA:AVERAGE:0.5:288:797'
];
|
Grüßle
Christian