MRTG en het inlezen van nieuwe poorten

Pagina: 1
Acties:

  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
Hi,

Ik heb een probleempje mbt het proggie MRTG en het automatsch inlezen van nieuw toegevoegde poorten op de swtiches.

Wat ik gedaan heb:

1) Conf file aangemaakt:
perl cfgmaker Amsterdam@ip_adres --global "WorkDir: c:\inetpub\wwwroot\switch" --output switch.cfg

En daar onderin het volgende toegevoegd:
WorkDir: c:\inetpub\wwwroot\amsxx
HtmlDir: c:\inetpub\wwwroot\amsxx
ImageDir: c:\inetpub\wwwroot\amsxx
LogDir: c:\inetpub\wwwroot\amsxx
IconDir: /images/

Refresh: 300
RunAsDaemon: Yes
Interval: 5
2) Deze gestart via
start wperl mrtg switch.cfg

3) HTML files laten genereren via
perl indexmaker --outputc:\inetpub\wwwroot\switch\switch.html --compact c:\mrtg\bin\switch.cfg

Deze staat via een batch file in een loop van 2 uurtjes.


Nu is het probleem dat interfaces op de switch die bij punt 1 alszijnde 'uit' aangetroffen zijn, in de .cfg file aangetroffen wordt met '#' ervoor, niet worden meegenomen in de generatie van de .html file.

Maar je zou aannemen aangezien de .cfg file als deamon draait hij elke zoveel minuten (5 in dit geval) de poorten opnieuw inleest.

Alleen gebeurd dit dus niet...


Iemand enig idee wat ik over het hoofd zie?


Tnx!

Godfather Bodybuilding topic reeks


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 17-08 23:28

pistole

Frutter

kan je nagaan of je switch.cfg daadwerkelijk wordt geupdate? Zo niet; misschien kan je i.p.v. de --output parameter gewoon cfgmaker blabla > switch.cfg doen.

Ik frut, dus ik epibreer


  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
Die wordt dus volgens mij niet geupdate nee.

Maar je moet toch wel een output file neerzetten?

[ Voor 2% gewijzigd door MrJ op 11-02-2003 17:19 . Reden: typo's... ]

Godfather Bodybuilding topic reeks


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 17-08 23:28

pistole

Frutter

ja maar dat kan je doen d.m.v. het pipe symbool (die '>' dus). Beetje DOS kennis he :)

Ik frut, dus ik epibreer


  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
Hehe, bedoelde je dat. :)

DOS kennis is er wel. Tnx, ga het morgen proberen.

Godfather Bodybuilding topic reeks


  • Oezie Woezie
  • Registratie: December 1999
  • Niet online

Oezie Woezie

Pim. is de beste

ik weet niet in of windows ook aan de perl modules van RRD doet en de Net::SNMP modules.
heb namelijk een script gemaakt voor onder linux. met rrdtool en snmp. dat script kijkt elke keer of een poort/interface up is en zo ja dan update ie de .rrd files. nocht er nog geen .rrd file bestaan, dan maakt ie die ook vanzelf aan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#! /usr/bin/perl 

# ============================================================================
### Gemaakt door: Erik de Mare
### E-mail      : Erik@oezie.org
### dit script heeft nodig rrdtool(www.rrdtool.org)
### en Net::SNMP (http://search.cpan.org/author/DTOWN/Net-SNMP-4.0.3/)
# ============================================================================

use Net::SNMP(qw(oid_lex_sort oid_context_match SNMP_VERSION_1));
use Getopt::Std;

use strict;
use vars qw($path @line $data @gem $ipup $if $s $responsein $file $session $responseout @data $j @hosts @ifup @ifnum $SCRIPT $VERSION %OPTS);
use RRDs;

my $tijd = localtime(time);
@hosts = ('haas','jachtluipaard','konijn','ijsbeer','octopus','zeehond');
my $size = @hosts;
for(my $h = 0;$h < $size;$h++){

# Create the SNMP session
my ($s, $e) = Net::SNMP->session(
   -hostname  => $hosts[$h],
   -community => "public",
   -timeout => 1,
   -version => 2
) or die print "Host id down skipping\\n";
my $next = ".1.3.6.1.2.1.2.2.1.1";
my $up = ".1.3.6.1.2.1.2.2.1.7";

my $i = 1;
iterator: while (defined($s->get_bulk_request(-maxrepetitions => 10,
                                              -varbindlist    => [$next])))
{
   my @oids = oid_lex_sort(keys(%{$s->var_bind_list}));
   foreach (@oids) {
      if (!oid_context_match($next, $_)) { last iterator; }
      $ifnum[$i] = $s->var_bind_list->{$_};
#     printf("%s => %s\n", $_, $s->var_bind_list->{$_});
      # Make sure we have not hit the end of the MIB
      $i++;
      if ($s->var_bind_list->{$_} eq 'endOfMibView') { last iterator; } 
   }
   # Get the last OBJECT IDENTIFIER in the returned list
   $next = pop(@oids);
}
$i = 1;
iterator: while (defined($s->get_bulk_request(-maxrepetitions => 10,
                                              -varbindlist    => [$up])))
{
   my @oids = oid_lex_sort(keys(%{$s->var_bind_list}));
   foreach (@oids) {
      if (!oid_context_match($up, $_)) { last iterator; }
      $ifup[$i] = $s->var_bind_list->{$_};
#     printf("%s => %s\n", $_, $s->var_bind_list->{$_});
      # Make sure we have not hit the end of the MIB
      $i++;
      if ($s->var_bind_list->{$_} eq 'endOfMibView') { last iterator; }
   }
   # Get the last OBJECT IDENTIFIER in the returned list
   $up = pop(@oids);
}
my $if = @ifnum;
#rint "$size\n";

for(my $j=1;$j<$if;$j++){
    if($ifup[$j] == 1){
        $path = "/home/httpd/log/rrdtool/traffic/";
        my $file = "$path$hosts[$h]-$j-traffic.rrd";
        print "$file\n";
        if(-e $file){
            print "Database bestaat reeds\n";
            }
        else {
            print "Database word gemaakt\n";
            RRDs::create ($file,
            "--step",300,
            "DS:in:COUNTER:600:0:U",
            "DS:out:COUNTER: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",
            "RRA:MAX:0.5:1:600",
            "RRA:MAX:0.5:6:700",
            "RRA:MAX:0.5:24:775",
            "RRA:MAX:0.5:288:797"
            );
            if (my $ERROR = RRDs::error) {
              print "ERROR: $ERROR\n";
            };
        }
        my $in = ".1.3.6.1.2.1.2.2.1.10.$ifnum[$j]";
        my $out = ".1.3.6.1.2.1.2.2.1.16.$ifnum[$j]";
        $responsein = $s->get_request($in);
        $responseout = $s->get_request($out);
        RRDs::update $file, "N:$responsein->{$in}:$responseout->{$out}";

        @data = ("$hosts[$h]-$j.png");
        push(@data,"--start=-86400");
        push(@data,"--imgformat=PNG");
        push(@data,"--vertical-label=Byte/s");
        push(@data,"--title=Traffic");
        push(@data,"DEF:in=$file:in:AVERAGE");
        push(@data,"DEF:out=$file:out:AVERAGE");
        push(@data,"AREA:in#00FF00:Traffic in ");
        push(@data,"GPRINT:in:LAST:%5.2lf%sB/s");
        push(@data,"GPRINT:in:AVERAGE:Gem. %6.2lf%sB/s");
        push(@data,"GPRINT:in:MAX:Max. %6.2lf%sB/s");
        push(@data,"CDEF:ein=in,300,*");
        push(@data,"CDEF:totaal=PREV,UN,ein,PREV,ein,+,IF");
        push(@data,"GPRINT:totaal:LAST:Tot. %5.2lf%sByte \\n");
        push(@data,"LINE1:out#0000FF:Traffic uit");
        push(@data,"GPRINT:out:LAST:%5.2lf%sB/s");
        push(@data,"GPRINT:out:AVERAGE:Gem. %6.2lf%sB/s");
        push(@data,"GPRINT:out:MAX:Max. %6.2lf%sB/s");
        push(@data,"CDEF:euit=out,300,*");
        push(@data,"CDEF:totaal2=PREV,UN,euit,PREV,euit,+,IF");
        push(@data,"GPRINT:totaal2:LAST:Tot. %5.2lf%sByte\\n");
        push(@data,"COMMENT:\\s");
        push(@data,"COMMENT:$tijd\\r");

        RRDs::graph (@data);

        }
    }

# Close the session
$s->close();
}

exit 0;


dit komt erdan zo uit te zien:
Afbeeldingslocatie: http://hagen.let.rug.nl/~s1147447/erik/octopus-5-traffic.png

[ Voor 10% gewijzigd door Oezie Woezie op 11-02-2003 17:48 ]

een mooi Tshirt met Pim. is de beste enzo


Verwijderd

Ik zou de cfgmaker eens starten vanuit de crontab ipv als deamon want dit werkt blijkbaar niet.

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 17-08 23:28

pistole

Frutter

hij draait hem onder win32... :+

Ik frut, dus ik epibreer


  • Equator
  • Registratie: April 2001
  • Laatst online: 15:28

Equator

Crew Council

🦺#Rodekruis #whisky #barista

pistole schreef op 11 February 2003 @ 17:20:
ja maar dat kan je doen d.m.v. het pipe symbool (die '>' dus). Beetje DOS kennis he :)
LOL Dos kennis he ;)
Dit is het PIPE teken " | "
Dit teken " > " is het teken wat je gebruikt om te redirecten. Hoe hij echt heet weet ik niet.

  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
OK, waar ik na uren searchen in newsgroups gevonden heb is dit:

Heel simpel handmatig alle '#' voor de poorten die admin/down zijn verwijderen. Dat kan je niet automatisch uit laten zetten door een of ander --no-down commando.

En laat ik hier nu net 30 cfg files hebben die ik dus handmatig mag updaten... :{


/edit:

Damn, zelfs dit lukt niet.

Ik verander dus het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
### Interface 5 >> Descr: 'FastEthernet0/4' | Name: 'Fa0/4' | Ip: '' | Eth: xxxx ###
### The following interface is commented out because:
### * it is operationally DOWN
### * has a speed of 0 which makes no sense
# 
# Target[10.3.251.11_5]: 5:Amsterdam@10.3.251.11:
# SetEnv[10.3.251.11_5]: MRTG_INT_IP="" MRTG_INT_DESCR="FastEthernet0/4"
# MaxBytes[10.3.251.11_5]: 0
# Title[10.3.251.11_5]: Traffic Analysis for 5 -- amsx11
# PageTop[10.3.251.11_5]: <H1>Traffic Analysis for 5 -- amsx11</H1>
#  <TABLE>
#    <TR><TD>System:</TD>     <TD>xxx</TD></TR>
#    <TR><TD>Maintainer:</TD> <TD>xxx</TD></TR>
#    <TR><TD>Description:</TD><TD>FastEthernet0/4  </TD></TR>
#    <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
#    <TR><TD>ifName:</TD>     <TD>Fa0/4</TD></TR>
#    <TR><TD>Max Speed:</TD>  <TD>0.0 Bytes/s</TD></TR>
#  </TABLE>


in

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
### Interface 5 >> Descr: 'FastEthernet0/4' | Name: 'Fa0/4' | Ip: '' | Eth: xxxx ###
 
Target[10.3.251.11_5]: 5:Amsterdam@10.3.251.11:
SetEnv[10.3.251.11_5]: MRTG_INT_IP="" MRTG_INT_DESCR="FastEthernet0/4"
MaxBytes[10.3.251.11_5]: 12500000
Title[10.3.251.11_5]: Traffic Analysis for 5 -- amsx11
PageTop[10.3.251.11_5]: <H1>Traffic Analysis for 5 -- amsx11</H1>
 <TABLE>
   <TR><TD>System:</TD>     <TD>xxx</TD></TR>
   <TR><TD>Maintainer:</TD> <TD>xxx</TD></TR>
   <TR><TD>Description:</TD><TD>FastEthernet0/4  </TD></TR>
   <TR><TD>ifType:</TD>     <TD>ethernetCsmacd (6)</TD></TR>
   <TR><TD>ifName:</TD>     <TD>Fa0/4</TD></TR>
   <TR><TD>Max Speed:</TD>  <TD>12.5 MBytes/s</TD></TR>
 </TABLE>


en toch wordt deze interface niet geupdate terwijl
start wperl mrtg switch.cfg
draait op de achtergrond...

:?

[ Voor 162% gewijzigd door MrJ op 12-02-2003 14:21 . Reden: edit ]

Godfather Bodybuilding topic reeks


  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
OK, ik kom er echt niet meer uit... ;(

Waar het mij nu om gaat is om een .cfg file te maken die alle interfaces, ongeacht of deze verbinding hebben meegenomen worden.

Ik gebruik dus nu dit commando:
perl cfgmaker --output switch.cfg bla@bla --if-filter=$if_admin && $default_iftype --global "WorkDir: c:\inetpub\wwwroot\switch"

Maar dat levert helaas onderin het volgende op:
'$default_iftype' is not recognized as an internal or external command, operable program or batch file.
Hierna staan nog steeds alle interfaces die op dat moment geen netwerkverbinding hadden als uit gemarkeerd dmv '#' tekentjes.


Ik heb nu al uren lopen schuiven met de plaats van deze commando's, maar niets lukt.


Wie o wie geeft 't verlossende antwoord? Want het lijkt mij dat ik niet de enige ben die deze MRTG configuratie wil bewerkstellingen...

[ Voor 4% gewijzigd door MrJ op 12-02-2003 16:35 ]

Godfather Bodybuilding topic reeks


Verwijderd

@openingspost: Die WorkDir wordt weer overschreven door al die andere Dirs. Het is dus handig(er) of de WorkDir weg te halen of die andere weg te halen. Aangezien alle Dirs bij jouw naar de zelfde Dir verwijzen kun je gewoon de WorkDir aanhouden.

En wat betreft met die poorten, wou je voor elke poort een apart MRTG-grafiekje hebben dan? Dan krijg je 65536 grafieken!! Dat wil je toch niet man, dat is bijna 70 MB alleen al aan gegenereerde plaatjes!!
En is het echt nodig?? Denk dat het echt gewoon niet kan hoor, tenzij je er een scriptje voor schrijfte die voor elke poort als hij open gaat een aparte cfg aanmaakt, maar dan moet je ze ook nog gaan bekijken, en dat gaat ook een probleem worden. Dit protocol is dacht ik ook gewoon bedoeld om professionele routers te monitoren en die hebben altijd maar een beperkt aantal poorten open staan, geen auto-portforwarding.

  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
@ Workdir issue: ok, tnx.

30 switches * 24 poortjes en een core van 36 poorten = 756. Valt wel mee dus. :)

Maar het lijkt mij toch wel 'gewoon' haalbaar? Elke poort ongeacht of er verkeerr is in een conf file flikkeren en daarvanuit html genereren. Als er een pc op aangesloten wordt komt er dan gewoon een grafiek uit ipv een leeg plaatje lijkt mij.

Godfather Bodybuilding topic reeks


Verwijderd

Je bedoelt dus netwerkaansluitingen. Dat zijn wat anders dan poorten. Met poorten worden onder andere de softwarematige poorten bedoeld denk ik. Dat heeft hier voor een beetje verwarring gezorgd IMO. Als je een managable switch hebt met een adres dan gaat het werken, maar zonder een adres (MAC- of IP-adres) gaat je hele verhaal niet werken. MRTG is namelijk gebaseerd op een netwerkadres wat hij kan monitoren. Dus als je switch een adres heeft kun je daar je SNMP aan knopen, die haalt vervolgens uit je hele switch alle aansluitingen en kan die ook waarschijnlijk uitlezen, maar anders gaat het gewoon niet. (MRTG is ook Multi Router Traffic Grapher, dus een apparaat met adres)
Als het allemaal net meer wil, probeer het tooltje Getif es, daarmee kun je SNMP-walken en alles van je apparaat uitvinden wat je maar wil!!

  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
Hehe, op die manier, sry misunderstanding dus. :)

Maar het hele verhaal werkt dus niet, ik wil ook de incatieve interfaces van de switches monitoren zodat als er een PC aan gehangen wordt, ik 5 minuten later al de grafiekjes kan zien. :)

Godfather Bodybuilding topic reeks


Verwijderd

Als je elke poort appart in je config toevoegd moet het gewoon goed gaan. Met Getif kun je gewoon alle interfaces aflopen en wat het bijbehorende nummer is.
Afbeeldingslocatie: http://members.home.nl/rippie/Getif.PNG

Als je nu een cfg-regel maakt met:
code:
1
Target[65539_host]:.1.3.6.1.2.1.25.3.4.1.1.4&.1.3.6.1.2.1.25.3.4.1.1.4:Amsterdam@10.3.251.11

met alle bijbehordende shit eronder dan moet dat gaan lukken. Je moet echt het SNMP-adres hebben van elke interface, die kan hij wel monitoren denk ik. SNMP kan namelijk ook gewoon 0 teruggeven, en dan hoeven ze nog niet meteen aangesloten te zijn,

In Getif moet je ff browsen ook door de hrDeviceTable, daar kan je ook het SNMP-adres opzoeken en denk dat het daarmee wel wil. Ik monitor mijn niet-aangesloten netwerkpoorten nooit dus ik weet het niet.

offtopic:
Hulde @ Oezie Woezie: Dat Getif is echt meesterlijk, bedankt voor je errug goed tip!!!!

  • MrJ
  • Registratie: Mei 2001
  • Laatst online: 11-06 22:13

MrJ

Train, eat, sleep. Repeat.

Topicstarter
OMG! I feel so stupid! |:( :X

MRTG plaatst VLAN1 in grafiek1, en interface 1 in grafiek 2.

Dus ipv in grafiek 25 te kijken (voor interface 24 waarmee ik dus testte), zat ik dus in grafiek 24 (interface 23 --> inactive) te kijken. :P

4 x [schaamsmiley.jpg]


De '#' weghalen in de .cfg files werkt dus wel...

Godfather Bodybuilding topic reeks

Pagina: 1