Stránka 1 z 1

SNMP a RRDTool

Napsal: stř 8. srp 2007, 19:10
od moravcik10
Zdravim vas potrebujem pomoct. Chcem si spojazdnit RRDTool. Nasiel som aj k tomu skript ktory zapisuje traffic ktory vytahuje zo snmp. ale mam problem ze ten snmp mi akosi nechce ist na vlastnej masine.
Vzdy mi to vypise TimeOut

Tu je vypis ktory vypise zo skriptu:

Kód: Vybrat vše

./rrdtraffic.sh
snmpget: Timeout (Sub-id not found: (top) -> public)
snmpget: Timeout (Sub-id not found: (top) -> public)
1186590674:0:0ERROR: Garbage ':31:27 CEST 2007
 ' after command:
COMMENT:Generovane Wed Aug  8 18:31:27 CEST 2007
Tu je prikaz ktory je v skripte:

Kód: Vybrat vše

$in=`snmpget -Pe -Oq 8x.2xx.1xx.2xx public .iso.3.6.1.2.1.2.2.1.10.1|
  awk '{printf \$2}'`+0;
$out=`snmpget -Pe -Oq 8x.2xx.1xx.2xx public .iso.3.6.1.2.1.2.2.1.16.1|
  awk '{printf \$2}'`+0;
ipcku som zaxkoval z bezpecnostnych dovodov :P
Nieco mi napoveda ze to public by sa malo nejak nakonfigurovat. Prosim o help. Dakujem

Napsal: čtv 9. srp 2007, 09:51
od tosuja
1. nezkousej sve verejne IP, urcite mas firewall a neni duvod otvirat tuto diru. pouzivej loopback interface (lo, IP 127.0.0.1)

2. Musis nakonfigurovat SNMP na pouzivani spravne community. Kdyz odhlednu od detailu, bude ti stacit do /etc/snmp/snmpd.conf nacpat asi toto:

Kód: Vybrat vše

com2sec local     localhost       public

group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none

view all    included  .1                               80
3. over si, ze ti to vubec funguje

Kód: Vybrat vše

snmpget -v 2c -c public localhost sysUpTimeInstance
by mel vypsat jeden radek zhruba tohoto obsahu

Kód: Vybrat vše

 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (16316609) 1 day, 21:19:26.09
Pokud ses dostal az na konec, mas sanci, ze ti to bude fungovat :-)

Napsal: čtv 9. srp 2007, 15:35
od moravcik10
Ked dam do prikazu localhost vypise toto:

Kód: Vybrat vše

 ./rrdtraffic.sh
snmpget: No securityName specified (Sub-id not found: (top) -> public)
snmpget: No securityName specified (Sub-id not found: (top) -> public)
1186666462:0:0ERROR: Garbage ':34:23 CEST 2007
 ' after command:
COMMENT:Generovane Thu Aug  9 15:34:23 CEST 2007
:(

PS: Ten prikaz funguje normalne ale ten skript pise no response from localhost :(

Napsal: čtv 9. srp 2007, 22:58
od tosuja
Takze chyba je v konfiguraci toho skriptu. Potrebujes ho presvedcit, aby dotazy delal s timto nastavenim:

Hostname: localhost
SNMP verze: 2c (pripadne se to tam muze oznacovat 2)
community public

Ono to totiz celkem vypada, ze on se snazi delat dotaz pomoci SNMP v3, kde uz je treba konfigurovat regulerni uzivatelske jmena a hesla. Je pak jasne, ze kdyz nemas SNMP server nakonfigurovany na podporu v3, nebude na ne reagovat.... Nevim, kdes ten rrdtraffic.sh skript ziskal, google mlci, takze vic nepomuzu.

Napsal: pát 10. srp 2007, 11:37
od moravcik10
Toto je default script. Ja som tam len zmenil IP 111.111.111.111 na localhost

Kód: Vybrat vše

#! /usr/bin/perl

use lib qw( /rrdtool/perl-shared/blib/lib /rrdtool/perl-shared/blib/arch );
use lib qw( /usr/local/rrdtool-1.0.33/lib/perl /rrdtool/lib/perl );

use RRDs;
my $start=time;
my $rrd=   "/home/httpd/rrdtool.domena.sk-443/html/host.rrd";
my $name = "/home/httpd/rrdtool.domena.sk-443/html/host.png";

if (not -f $rrd){
RRDs::create ($rrd, "--start",$start-1, "--step",60,
	      "DS:in:COUNTER:180:U:U",
	      "DS:out:COUNTER:180:U:U",
	      "RRA:AVERAGE:0.5:1:3600",
	      "RRA:MIN:0.5:1:3600",
	      "RRA:MAX:0.5:1:3600",
);
};

my $ERROR = RRDs::error;
die "$0: unable to create `$rrd': $ERROR\n" if $ERROR;


$in=`snmpget -Pe -Oq 111.111.111.111 public .iso.3.6.1.2.1.2.2.1.10.1|
  awk '{printf \$2}'`+0;
$out=`snmpget -Pe -Oq 111.111.111.111 public .iso.3.6.1.2.1.2.2.1.16.1|
  awk '{printf \$2}'`+0;

$date=`date`;

print "$start:$in:$out";

RRDs::update $rrd,"$start:$in:$out";

my $ERROR = RRDs::error;
die "$0: unable to create `$rrd': $ERROR\n" if $ERROR;

$in=int($in/1024/1024);
$out=int($out/1024/1024);

RRDs::graph "$name",
  "--title", "Prehlad SNMP trafficu", 
  "--start", "now-1d",
  "--end", "now",
  "--imgformat","PNG",
  "--width=600",
  "--height=150",
  "--step=300",
  "DEF:in=$rrd:in:AVERAGE",
  "DEF:out=$rrd:out:AVERAGE",
  "CDEF:gout=0,out,-",
  "CDEF:grin=in,8,*",
  "CDEF:grout=gout,8,*",
  "AREA:grin#d60000:Traffic in total\\: $in MB\\r",
  "AREA:grout#00d600:Traffic out total\\: $out MB\\r",
  "COMMENT:Generovane $date ",
;

if ($ERROR = RRDs::error) {
  print "ERROR: $ERROR\n";
};

Napsal: pát 10. srp 2007, 12:31
od tosuja
Aha, konecne mi svitlo. snmpget dela automaticky SNMP v3 spojeni, takze je treba mu rict, aby delal v2c. Pridej parametr "-v 2c" ke kazdemu volani snmpget a pojede to:

Kód: Vybrat vše

$in=`snmpget -v 2c -Pe -Oq 111.111.111.111 public .iso.3.6.1.2.1.2.2.1.10.1|
  awk '{printf \$2}'`+0;
$out=`snmpget -v 2c -Pe -Oq 111.111.111.111 public .iso.3.6.1.2.1.2.2.1.16.1|
  awk '{printf \$2}'`+0;