PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Abfrage ppp0 per mrtg und snmpd



viijay
30.03.06, 01:17
Hallo Community,

auch ich brauche mal wieder eure Hilfe. Ich weiss leider nicht genau ob ich alle nötigen Daten parat habe aber ich versuche so ausführlich wie möglich zu sein.

Aufbau:
Debian GNU/Linux
Kernel 2.6.16-1-k7
net-snmpd 5.2.2
mrtg 2.13.2


Folgendes Problem:
Nach einem Neustart meines Servers funktioniert die Abfrage des PPP Interfaces per SNMP + MRTG problemlos, bis zum nächsten Verbindungsaufbau (zwangsweise alle 24h). Ab da werden keine Daten mehr per MRTG ausgewertet. Folgende "Phänomene" habe ich beobachtet.

Wenn das ppp0 Interfaces nicht mehr richtig ausgelesen wird, steht im /var/log/syslog folgendes:


Mar 29 11:36:10 pvr snmpd[6170]: netsnmp_assert index == tmp failed if-mib/data_access/interface_common.c:407 _access_interface_entry_save_name()
Mar 29 11:37:10 pvr snmpd[6170]: netsnmp_assert index == tmp failed if-mib/data_access/interface_common.c:407 _access_interface_entry_save_name()
Mar 29 11:38:10 pvr snmpd[6170]: netsnmp_assert index == tmp failed if-mib/data_access/interface_common.c:407 _access_interface_entry_save_name()


Ein snmpwalk -v 1 -c odyssey localhost interfaces gibt folgendes:

IF-MIB::ifNumber.0 = INTEGER: 5
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.5 = INTEGER: 5
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: sit0
IF-MIB::ifDescr.5 = STRING: ppp0
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.3 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.4 = INTEGER: tunnel(131)
IF-MIB::ifType.5 = INTEGER: ppp(23)
IF-MIB::ifMtu.1 = INTEGER: 16436
IF-MIB::ifMtu.2 = INTEGER: 1500
IF-MIB::ifMtu.3 = INTEGER: 1500
IF-MIB::ifMtu.4 = INTEGER: 1480
IF-MIB::ifMtu.5 = INTEGER: 1492
IF-MIB::ifSpeed.1 = Gauge32: 10000000
IF-MIB::ifSpeed.2 = Gauge32: 10000000
IF-MIB::ifSpeed.3 = Gauge32: 10000000
IF-MIB::ifSpeed.4 = Gauge32: 0
IF-MIB::ifSpeed.5 = Gauge32: 6291456
IF-MIB::ifPhysAddress.1 = STRING:
IF-MIB::ifPhysAddress.2 = STRING: 0:50:8d:5f:48:e2
IF-MIB::ifPhysAddress.3 = STRING: 0:2:b3:2d:fb:39
IF-MIB::ifPhysAddress.4 = STRING:
IF-MIB::ifPhysAddress.5 = STRING:
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)
IF-MIB::ifAdminStatus.2 = INTEGER: up(1)
IF-MIB::ifAdminStatus.3 = INTEGER: up(1)
IF-MIB::ifAdminStatus.4 = INTEGER: down(2)
IF-MIB::ifAdminStatus.5 = INTEGER: up(1)
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.3 = INTEGER: up(1)
IF-MIB::ifOperStatus.4 = INTEGER: down(2)
IF-MIB::ifOperStatus.5 = INTEGER: up(1)
IF-MIB::ifLastChange.1 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.2 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.3 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.4 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.5 = Timeticks: (0) 0:00:00.00
IF-MIB::ifInOctets.1 = Counter32: 1583295
IF-MIB::ifInOctets.2 = Counter32: 895518263
IF-MIB::ifInOctets.3 = Counter32: 2840562885
IF-MIB::ifInOctets.4 = Counter32: 0
IF-MIB::ifInOctets.5 = Counter32: 2739366923
IF-MIB::ifInUcastPkts.1 = Counter32: 16229
IF-MIB::ifInUcastPkts.2 = Counter32: 9272658
IF-MIB::ifInUcastPkts.3 = Counter32: 4597431
IF-MIB::ifInUcastPkts.4 = Counter32: 0
IF-MIB::ifInUcastPkts.5 = Counter32: 4596062
IF-MIB::ifInNUcastPkts.1 = Counter32: 0
IF-MIB::ifInNUcastPkts.2 = Counter32: 0
IF-MIB::ifInNUcastPkts.3 = Counter32: 0
IF-MIB::ifInNUcastPkts.4 = Counter32: 0
IF-MIB::ifInNUcastPkts.5 = Counter32: 0
IF-MIB::ifInDiscards.1 = Counter32: 0
IF-MIB::ifInDiscards.2 = Counter32: 0
IF-MIB::ifInDiscards.3 = Counter32: 0
IF-MIB::ifInDiscards.4 = Counter32: 0
IF-MIB::ifInDiscards.5 = Counter32: 0
IF-MIB::ifInErrors.1 = Counter32: 0
IF-MIB::ifInErrors.2 = Counter32: 0
IF-MIB::ifInErrors.3 = Counter32: 0
IF-MIB::ifInErrors.4 = Counter32: 0
IF-MIB::ifInErrors.5 = Counter32: 0
IF-MIB::ifInUnknownProtos.1 = Counter32: 0
IF-MIB::ifInUnknownProtos.2 = Counter32: 0
IF-MIB::ifInUnknownProtos.3 = Counter32: 0
IF-MIB::ifInUnknownProtos.4 = Counter32: 0
IF-MIB::ifInUnknownProtos.5 = Counter32: 0
IF-MIB::ifOutOctets.1 = Counter32: 1583295
IF-MIB::ifOutOctets.2 = Counter32: 2972619302
IF-MIB::ifOutOctets.3 = Counter32: 1492197992
IF-MIB::ifOutOctets.4 = Counter32: 0
IF-MIB::ifOutOctets.5 = Counter32: 1403435352
IF-MIB::ifOutUcastPkts.1 = Counter32: 16229
IF-MIB::ifOutUcastPkts.2 = Counter32: 13934340
IF-MIB::ifOutUcastPkts.3 = Counter32: 4034151
IF-MIB::ifOutUcastPkts.4 = Counter32: 0
IF-MIB::ifOutUcastPkts.5 = Counter32: 4032776
IF-MIB::ifOutNUcastPkts.1 = Counter32: 0
IF-MIB::ifOutNUcastPkts.2 = Counter32: 0
IF-MIB::ifOutNUcastPkts.3 = Counter32: 0
IF-MIB::ifOutNUcastPkts.4 = Counter32: 0
IF-MIB::ifOutNUcastPkts.5 = Counter32: 0
IF-MIB::ifOutDiscards.1 = Counter32: 0
IF-MIB::ifOutDiscards.2 = Counter32: 0
IF-MIB::ifOutDiscards.3 = Counter32: 0
IF-MIB::ifOutDiscards.4 = Counter32: 0
IF-MIB::ifOutDiscards.5 = Counter32: 0
IF-MIB::ifOutErrors.1 = Counter32: 0
IF-MIB::ifOutErrors.2 = Counter32: 0
IF-MIB::ifOutErrors.3 = Counter32: 0
IF-MIB::ifOutErrors.4 = Counter32: 0
IF-MIB::ifOutErrors.5 = Counter32: 0
IF-MIB::ifOutQLen.1 = Gauge32: 0
IF-MIB::ifOutQLen.2 = Gauge32: 0
IF-MIB::ifOutQLen.3 = Gauge32: 0
IF-MIB::ifOutQLen.4 = Gauge32: 0
IF-MIB::ifOutQLen.5 = Gauge32: 0
IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.3 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.4 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.5 = OID: SNMPv2-SMI::zeroDotZero

Was mir dabei schon mal früher aufgefallen war, ist, dass anscheinend der Wert
IF-MIB::ifDescr.5 = STRING: ppp0 bei jedem Neustart der Verbindung angehoben wird. Zumindest war es früher der Fall, dass aus der 5 z.B. eine 6 wurde. Aber das werde ich morgen noch mal verifizieren.

Anbei noch die Auszüge aus der snmp.conf und mrtg.conf mit den entsprechenden Einträgen zur Abfrage des ppp0 Interfaces.

Auszug aus der /etc/snmp/snmpd.conf


####
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):

# sec.name source community
#com2sec paranoid default odyssey
com2sec readonly default odyssey
#com2sec readwrite default private

####
# Second, map the security names into group names:

# sec.model sec.name
group MyROSystem v1 paranoid
group MyROSystem v2c paranoid
group MyROSystem usm paranoid
group MyROGroup v1 readonly
group MyROGroup v2c readonly
group MyROGroup usm readonly
group MyRWGroup v1 readwrite
group MyRWGroup v2c readwrite
group MyRWGroup usm readwrite

####
# Third, create a view for us to let the groups have rights to:

# incl/excl subtree mask
view all included .1 80
view system included .iso.org.dod.internet.mgmt.mib-2.system

####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:

# context sec.model sec.level match read write notif
access MyROSystem "" any noauth exact system none none
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none

# -----------------------------------------------------------------------------

[...]

################################################## #############################
# Defining interfaces
#
# Done because of monitoring ppp0 interface (DSL connection)

interface ppp0 23 6291456

Auszug aus der /etc/mrtg.cfg


################################################## ####################
# Multi Router Traffic Grapher -- Sample Configuration File
################################################## ####################
# This file is for use with mrtg-2.5.4c

# Global configuration
WorkDir: /var/www/mrtg
WriteExpires: Yes
#LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt, /usr/share/snmp/mibs/HOST-RESOURCES-TYPES.txt
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt, /usr/share/snmp/mibs/HOST-RESOURCES-TYPES.txt, /usr/share/snmp/mibs/IF-MIB.txt, /usr/share/snmp/mibs/IANAifType-MIB.txt

[...]

##################################
### ###
## ARCOR DSL connection ##
### ###
##################################
Target[pvr.ppp0]: \ppp0:odyssey@localhost
Directory[pvr.ppp0]: pvr
RouterUptime[pvr.ppp0]: odyssey@localhost
Title[pvr.ppp0]: Traffic Analysis for Arcor DSL 6000
PageTop[pvr.ppp0]: <H1>Arcor DSL 6000 (6144 kBit Downstream | 640 kBit Upstream)</H1>
MaxBytes[pvr.ppp0]: 768000
AbsMax[pvr.ppp0]: 768000
YLegend[pvr.ppp0]: Bytes per second
Legend1[pvr.ppp0]: Download
Legend2[pvr.ppp0]: Upload
Legend3[pvr.ppp0]:
Legend4[pvr.ppp0]:
LegendI[pvr.ppp0]: Down:
LegendO[pvr.ppp0]: Up:
Options[pvr.ppp0]: nopercent,growright

Vielleicht hat ja jemand von Euch ne Idee. Möglicherweise ist es ja nur so ne kleine Sache wie ein Berechtigungsproblem oder sowas.

Alle anderen Werte übrigens (CPU Load, MEM, Partitionsbelegung) funktionieren einwandfrei und werden korrekt dargestellt. Nur eben beim PPP0 Interface gibt es Probleme.

Danke und Gruss Volker.

viijay
30.03.06, 08:50
Und als ob ich es geahnt hätte hier nen Auszug aus dem snmpwalk von heute...


# snmpwalk -v 1 -c odyssey localhost interfaces
IF-MIB::ifNumber.0 = INTEGER: 5
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.5 = INTEGER: 5
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: sit0
IF-MIB::ifDescr.5 = STRING: ppp0
IF-MIB::ifDescr.6 = STRING: ppp0
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.3 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.4 = INTEGER: tunnel(131)
IF-MIB::ifType.5 = INTEGER: ppp(23)
IF-MIB::ifType.6 = INTEGER: ppp(23)
IF-MIB::ifMtu.1 = INTEGER: 16436
IF-MIB::ifMtu.2 = INTEGER: 1500
IF-MIB::ifMtu.3 = INTEGER: 1500
IF-MIB::ifMtu.4 = INTEGER: 1480
IF-MIB::ifMtu.5 = INTEGER: 1492
IF-MIB::ifMtu.6 = INTEGER: 1492
IF-MIB::ifSpeed.1 = Gauge32: 10000000
IF-MIB::ifSpeed.2 = Gauge32: 10000000
IF-MIB::ifSpeed.3 = Gauge32: 10000000
IF-MIB::ifSpeed.4 = Gauge32: 0
IF-MIB::ifSpeed.5 = Gauge32: 6291456
IF-MIB::ifSpeed.6 = Gauge32: 6291456
IF-MIB::ifPhysAddress.1 = STRING:
IF-MIB::ifPhysAddress.2 = STRING: 0:50:8d:5f:48:e2
IF-MIB::ifPhysAddress.3 = STRING: 0:2:b3:2d:fb:39
IF-MIB::ifPhysAddress.4 = STRING:
IF-MIB::ifPhysAddress.5 = STRING:
IF-MIB::ifPhysAddress.6 = STRING:
IF-MIB::ifAdminStatus.1 = INTEGER: up(1)
IF-MIB::ifAdminStatus.2 = INTEGER: up(1)
IF-MIB::ifAdminStatus.3 = INTEGER: up(1)
IF-MIB::ifAdminStatus.4 = INTEGER: down(2)
IF-MIB::ifAdminStatus.5 = INTEGER: down(2)
IF-MIB::ifAdminStatus.6 = INTEGER: up(1)
IF-MIB::ifOperStatus.1 = INTEGER: up(1)
IF-MIB::ifOperStatus.2 = INTEGER: up(1)
IF-MIB::ifOperStatus.3 = INTEGER: up(1)
IF-MIB::ifOperStatus.4 = INTEGER: down(2)
IF-MIB::ifOperStatus.5 = INTEGER: down(2)
IF-MIB::ifOperStatus.6 = INTEGER: up(1)
IF-MIB::ifLastChange.1 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.2 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.3 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.4 = Timeticks: (0) 0:00:00.00
IF-MIB::ifLastChange.5 = Timeticks: (5508100) 15:18:01.00
IF-MIB::ifLastChange.6 = Timeticks: (0) 0:00:00.00
IF-MIB::ifInOctets.1 = Counter32: 2195760
IF-MIB::ifInOctets.2 = Counter32: 1149522963
IF-MIB::ifInOctets.3 = Counter32: 821733289
IF-MIB::ifInOctets.4 = Counter32: 0
IF-MIB::ifInOctets.5 = Counter32: 3754486882
IF-MIB::ifInOctets.6 = Counter32: 1185543503
IF-MIB::ifInUcastPkts.1 = Counter32: 21884
IF-MIB::ifInUcastPkts.2 = Counter32: 9725082
IF-MIB::ifInUcastPkts.3 = Counter32: 8003081
IF-MIB::ifInUcastPkts.4 = Counter32: 0
IF-MIB::ifInUcastPkts.5 = Counter32: 6259869
IF-MIB::ifInUcastPkts.6 = Counter32: 1739863
IF-MIB::ifInNUcastPkts.1 = Counter32: 0
IF-MIB::ifInNUcastPkts.2 = Counter32: 0
IF-MIB::ifInNUcastPkts.3 = Counter32: 0
IF-MIB::ifInNUcastPkts.4 = Counter32: 0
IF-MIB::ifInNUcastPkts.5 = Counter32: 0
IF-MIB::ifInNUcastPkts.6 = Counter32: 0
IF-MIB::ifInDiscards.1 = Counter32: 0
IF-MIB::ifInDiscards.2 = Counter32: 0
IF-MIB::ifInDiscards.3 = Counter32: 0
IF-MIB::ifInDiscards.4 = Counter32: 0
IF-MIB::ifInDiscards.5 = Counter32: 0
IF-MIB::ifInDiscards.6 = Counter32: 0
IF-MIB::ifInErrors.1 = Counter32: 0
IF-MIB::ifInErrors.2 = Counter32: 0
IF-MIB::ifInErrors.3 = Counter32: 0
IF-MIB::ifInErrors.4 = Counter32: 0
IF-MIB::ifInErrors.5 = Counter32: 0
IF-MIB::ifInErrors.6 = Counter32: 0
IF-MIB::ifInUnknownProtos.1 = Counter32: 0
IF-MIB::ifInUnknownProtos.2 = Counter32: 0
IF-MIB::ifInUnknownProtos.3 = Counter32: 0
IF-MIB::ifInUnknownProtos.4 = Counter32: 0
IF-MIB::ifInUnknownProtos.5 = Counter32: 0
IF-MIB::ifInUnknownProtos.6 = Counter32: 0
IF-MIB::ifOutOctets.1 = Counter32: 2195760
IF-MIB::ifOutOctets.2 = Counter32: 3474691200
IF-MIB::ifOutOctets.3 = Counter32: 2402075952
IF-MIB::ifOutOctets.4 = Counter32: 0
IF-MIB::ifOutOctets.5 = Counter32: 1832212481
IF-MIB::ifOutOctets.6 = Counter32: 415600637
IF-MIB::ifOutUcastPkts.1 = Counter32: 21884
IF-MIB::ifOutUcastPkts.2 = Counter32: 14474725
IF-MIB::ifOutUcastPkts.3 = Counter32: 6997370
IF-MIB::ifOutUcastPkts.4 = Counter32: 0
IF-MIB::ifOutUcastPkts.5 = Counter32: 5471207
IF-MIB::ifOutUcastPkts.6 = Counter32: 1522898
IF-MIB::ifOutNUcastPkts.1 = Counter32: 0
IF-MIB::ifOutNUcastPkts.2 = Counter32: 0
IF-MIB::ifOutNUcastPkts.3 = Counter32: 0
IF-MIB::ifOutNUcastPkts.4 = Counter32: 0
IF-MIB::ifOutNUcastPkts.5 = Counter32: 0
IF-MIB::ifOutNUcastPkts.6 = Counter32: 0
IF-MIB::ifOutDiscards.1 = Counter32: 0
IF-MIB::ifOutDiscards.2 = Counter32: 0
IF-MIB::ifOutDiscards.3 = Counter32: 0
IF-MIB::ifOutDiscards.4 = Counter32: 0
IF-MIB::ifOutDiscards.5 = Counter32: 0
IF-MIB::ifOutDiscards.6 = Counter32: 0
IF-MIB::ifOutErrors.1 = Counter32: 0
IF-MIB::ifOutErrors.2 = Counter32: 0
IF-MIB::ifOutErrors.3 = Counter32: 0
IF-MIB::ifOutErrors.4 = Counter32: 0
IF-MIB::ifOutErrors.5 = Counter32: 0
IF-MIB::ifOutErrors.6 = Counter32: 0
IF-MIB::ifOutQLen.1 = Gauge32: 0
IF-MIB::ifOutQLen.2 = Gauge32: 0
IF-MIB::ifOutQLen.3 = Gauge32: 0
IF-MIB::ifOutQLen.4 = Gauge32: 0
IF-MIB::ifOutQLen.5 = Gauge32: 0
IF-MIB::ifOutQLen.6 = Gauge32: 0
IF-MIB::ifSpecific.1 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.2 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.3 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.4 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.5 = OID: SNMPv2-SMI::zeroDotZero
IF-MIB::ifSpecific.6 = OID: SNMPv2-SMI::zeroDotZero

Gruss Volker.

fladi.at
30.03.06, 10:48
Ich habe das selbe Problem bei Cacti gehabt. Pollt auch die Interfacedaten über SNMP und nach einem Reconnect von ppp0 passt die ganze Statistik nicht mehr. Gelöst habe ich es dann so, dass ich einfach das darunterliegende Interface (bei mir eth0) für die Statistik benutzt habe. Das geht aber nur, wenn das DSL-Modem das einzige Device an eth0 ist.