Witam; Tworze statystyki pobierane przez snmp ze switchy blokowych. Kazdy klient jest przydzielony do okreslonego portu okreslonego switcha. Utknalem na skrypcie wykonujacym rrdupdate. Dla ulatwienia dane pobieram tylko ze switcha o id=204. Pliki rrd juz sa wygenerowane w postaci id-urzadzenia_port-switcha (w moim przykladzie to bedzie 204_1.rrd, 204_2.rrd itd.
########script_parser############ #!/bin/bash rrdupdate="/usr/bin/rrdupdate" home="/home/rrd" haslo_snmp="haslo"
{result = SELECT netdev, port FROM nodes}\ {for (r=0; r<number(result); r++)}\ {if ( result[r].netdev == 204 )}\
$rrdupdate $home'/{result[r].netdev}_{result[r].port}.rrd' N:`snmpget -v 1 -c $haslo_snmp -Oqv 192.168.15.15 IF-MIB::ifInOctets.{result[r].port}`:`snmpget -v 1 -c snmp_public -Oqv 192.168.15.15 IF-MIB::ifOutOctets.{result[r].port}`
{/if}\ {/for}\ #################################
Teraz pytanie - jak zamienic adres ip 192.168.15.15 na pobrany z bazy (urzadzenie sieciowe o id tozsamym z result[r].netdev). Kombinuje juz jak kon pod gore, ale nie wychodzi cos mi to :(
pozdrawiam
W dniu 2010-03-14 02:09, Andrzej Banach pisze:
Witam; Tworze statystyki pobierane przez snmp ze switchy blokowych. Kazdy klient jest przydzielony do okreslonego portu okreslonego switcha. Utknalem na skrypcie wykonujacym rrdupdate. Dla ulatwienia dane pobieram tylko ze switcha o id=204. Pliki rrd juz sa wygenerowane w postaci id-urzadzenia_port-switcha (w moim przykladzie to bedzie 204_1.rrd, 204_2.rrd itd.
########script_parser############ #!/bin/bash rrdupdate="/usr/bin/rrdupdate" home="/home/rrd" haslo_snmp="haslo"
{result = SELECT netdev, port FROM nodes}\ {for (r=0; r<number(result); r++)}\ {if ( result[r].netdev == 204 )}\
$rrdupdate $home'/{result[r].netdev}_{result[r].port}.rrd' N:`snmpget -v 1 -c $haslo_snmp -Oqv 192.168.15.15 IF-MIB::ifInOctets.{result[r].port}`:`snmpget -v 1 -c snmp_public -Oqv 192.168.15.15 IF-MIB::ifOutOctets.{result[r].port}`
{/if}\ {/for}\ #################################
Teraz pytanie - jak zamienic adres ip 192.168.15.15 na pobrany z bazy (urzadzenie sieciowe o id tozsamym z result[r].netdev). Kombinuje juz jak kon pod gore, ale nie wychodzi cos mi to :(
pozdrawiam
inet_ntoa() zwraca adres z bazy nodes.netdev to id netdevices.id
W dniu 2010-03-14 11:39, skynet goralski pisze:
W dniu 2010-03-14 02:09, Andrzej Banach pisze:
Witam; Tworze statystyki pobierane przez snmp ze switchy blokowych. Kazdy klient jest przydzielony do okreslonego portu okreslonego switcha. Utknalem na skrypcie wykonujacym rrdupdate. Dla ulatwienia dane pobieram tylko ze switcha o id=204. Pliki rrd juz sa wygenerowane w postaci id-urzadzenia_port-switcha (w moim przykladzie to bedzie 204_1.rrd, 204_2.rrd itd.
########script_parser############ #!/bin/bash rrdupdate="/usr/bin/rrdupdate" home="/home/rrd" haslo_snmp="haslo"
{result = SELECT netdev, port FROM nodes}\ {for (r=0; r<number(result); r++)}\ {if ( result[r].netdev == 204 )}\
$rrdupdate $home'/{result[r].netdev}_{result[r].port}.rrd' N:`snmpget -v 1 -c $haslo_snmp -Oqv 192.168.15.15 IF-MIB::ifInOctets.{result[r].port}`:`snmpget -v 1 -c snmp_public -Oqv 192.168.15.15 IF-MIB::ifOutOctets.{result[r].port}`
{/if}\ {/for}\ #################################
Teraz pytanie - jak zamienic adres ip 192.168.15.15 na pobrany z bazy (urzadzenie sieciowe o id tozsamym z result[r].netdev).
inet_ntoa() zwraca adres z bazy nodes.netdev to id netdevices.id
Ok, to moze w inny sposob. Mam juz wyciagniete id urzadzenia sieciowego (result[r].netdev}. W jaki sposob dostac sie do rekordu z jego ip? Przegladam powiazania nodes z netdevices i nie moge dojsc jak to jest zrobione. W netdevices brakuje mi powiazania z jego ip. Jest jakas inna tabela wiazaca id urzadzenia sieciowego z jego ip?
pozdrawiam
W dniu 2010-03-14 11:53, skynet goralski pisze:
W dniu 2010-03-14 11:47, Andrzej Banach pisze:
nodes.netdev to id netdevices.id
nodes.netdev = netdevices.id tu jest powiazanie
nodes.netdev - identyfikator urządzenia sieciowego do którego jest podłączony komputer netdevices.id - identyfikator urzadzenia sieciowego
Teraz lecimy po wszystkich nodes. Jak rozumiem przy urzadzeniach sieciowych bedzie tak jak napisales netdevices.id = nodes.netdev.
A jak jest przy zwyklych komputerach klienckich(nie urzadzeniach sieciowych)? Co w nich oznacza nodes.netdev? Tak jak zakladalem - urzadzenie sieciowe do ktorego jest wpiety komputer klienta?
pozdrawiam
W dniu 2010-03-14 12:04, Andrzej Banach pisze:
W dniu 2010-03-14 11:53, skynet goralski pisze:
W dniu 2010-03-14 11:47, Andrzej Banach pisze:
nodes.netdev to id netdevices.id
nodes.netdev = netdevices.id tu jest powiazanie
nodes.netdev - identyfikator urządzenia sieciowego do którego jest podłączony komputer netdevices.id - identyfikator urzadzenia sieciowego
Teraz lecimy po wszystkich nodes. Jak rozumiem przy urzadzeniach sieciowych bedzie tak jak napisales netdevices.id = nodes.netdev.
A jak jest przy zwyklych komputerach klienckich(nie urzadzeniach sieciowych)? Co w nich oznacza nodes.netdev? Tak jak zakladalem - urzadzenie sieciowe do ktorego jest wpiety komputer klienta?
pozdrawiam
nodes.ownerid=0 to urzadzenie sieciowe
W dniu 2010-03-14 12:13, skynet goralski pisze:
nodes.ownerid=0 to urzadzenie sieciowe
Ok, cos tam sie udalo :P Thx za naprowadzanie.
###################################### #!/bin/bash
rrdupdate="/usr/bin/rrdupdate" home="/home/rrd" community="haslo"
{result = SELECT netdev, port FROM nodes WHERE ownerid != 0}\ {for (r=0; r<number(result); r++)}\ {if ( result[r].netdev == 204 )}\ {wynik = SELECT inet_ntoa(ipaddr) as ip, netdev FROM nodes WHERE ownerid = 0}\ {for (i=0; i<number(wynik); i++)}\ {if ( wynik[i].netdev == 204 )}\ $rrdupdate $home'/{result[r].netdev}_{result[r].port}.rrd' N:`snmpget -v 1 -c $community -Oqv {wynik[i].ip} IF-MIB::ifInOctets.{result[r].port}`:`snmpget -v 1 -c $community -Oqv {wynik[i].ip} IF-MIB::ifOutOctets.{result[r].port}` {/if}\ {/for}\ {/if}\ {/for}\ #######################################
Zostalo jeszcze dopisac wybor grupy urzadzen i dodac kilka opcji jak np wyciaganie community itp i mozna bedzie wywalic cacti, rosinfo i inne wynalazki.
pozdrawiam
On Sun, 14 Mar 2010 13:05:05 +0100, Andrzej Banach lms@net-komp.net.pl wrote:
W dniu 2010-03-14 12:13, skynet goralski pisze:
nodes.ownerid=0 to urzadzenie sieciowe
Ok, cos tam sie udalo :P Thx za naprowadzanie.
###################################### #!/bin/bash
rrdupdate="/usr/bin/rrdupdate" home="/home/rrd" community="haslo"
{result = SELECT netdev, port FROM nodes WHERE ownerid != 0}\ {for (r=0; r<number(result); r++)}\ {if ( result[r].netdev == 204 )}\ {wynik = SELECT inet_ntoa(ipaddr) as ip, netdev FROM nodes WHERE ownerid
= 0}\ {for (i=0; i<number(wynik); i++)}\ {if ( wynik[i].netdev == 204 )}\ $rrdupdate $home'/{result[r].netdev}_{result[r].port}.rrd' N:`snmpget -v
1 -c $community -Oqv {wynik[i].ip} IF-MIB::ifInOctets.{result[r].port}`:`snmpget -v 1 -c $community -Oqv {wynik[i].ip} IF-MIB::ifOutOctets.{result[r].port}` {/if}\ {/for}\ {/if}\ {/for}\ #######################################
Zostalo jeszcze dopisac wybor grupy urzadzen i dodac kilka opcji jak np wyciaganie community itp i mozna bedzie wywalic cacti, rosinfo i inne wynalazki.
pozdrawiam
Tylko że urządzenia sieciowe nie maja grup (jeszcze) może ktoś dopisze taką funkcjonalność, bo skoro są grupy w komputerach i w urządzeniach jak by były nie zaszkodziłoby nikomu :_)
Dariusz Kowalczyk
W dniu 2010-03-15 17:01, Dariusz kowalczyk pisze:
Zostalo jeszcze dopisac wybor grupy urzadzen i dodac kilka opcji jak np wyciaganie community itp i mozna bedzie wywalic cacti, rosinfo i inne wynalazki.
Tylko że urządzenia sieciowe nie maja grup (jeszcze) może ktoś dopisze taką funkcjonalność, bo skoro są grupy w komputerach i w urządzeniach jak by były nie zaszkodziłoby nikomu :_)
W sumie nie zaszkodziloby :) Osobiscie poradzilem sobie z tym, gdyz w mojej sieci wszystko co nie jest wifi (linktype == 0) i posiada przypisany port urzadzenia( port > 0) jest wpiete do switcha zarzadzalnego. Z niego znowu sa wyciagane po snmp dostepne dane i generowane pozniej statystyki (za pomoca powyzszego skrypciku). Martwi mnie jedynie to ze jak puscilem wszystkich klientow wpietych do zarzadzalnych switchy to przy ok 400 koncowkach pobieranie danych twa 9 minut :( Trzeba pomyslec nad optymalizacja taka jak jednokrotne logowanie sie do switcha i sciaganie wszystkich potrzebnych danych i pozniej kolejny switch. Teraz loguje sie do jednego switcha sciagam dane jednego portu i pozniej znow sie loguje i sciagam z kolejnego. Zapewne to dlugo trwa.
pozdrawiam
W dniu 2010-03-15 20:17, Dariusz kowalczyk pisze:
Teraz loguje sie do jednego switcha sciagam dane jednego portu i pozniej znow sie loguje i sciagam z kolejnego. Zapewne to dlugo trwa.
Nie można tam tych danych dostać w jednym kawałku przez snmp ?
Pewnie mozna, ale pozniej trzeba by to jakos ladnie oskryptowac, a ja nie jestem niestety programista :(
pozdrawiam
uczestnicy (3)
-
Andrzej Banach
-
Dariusz kowalczyk
-
skynet goralski