LINUX.ORG.RU

1
Всего сообщений: 24

snmpd wlan0 ifSpeed

Конфигурация такая: ubuntu server

root@radionet-nas:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.1 LTS
Release:	20.04
Codename:	focal
root@radionet-nas:~# snmpd -v

NET-SNMP version:  5.8
Web:               http://www.net-snmp.org/
Email:             net-snmp-coders@lists.sourceforge.net

root@radionet-nas:~# uname -a
Linux radionet-nas 5.4.0-52-generic #57-Ubuntu SMP Thu Oct 15 10:57:00 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
root@radionet-nas:~# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.4.254  netmask 255.255.255.0  broadcast 192.168.4.255
        inet6 fe80::20e:8eff:fe59:16d  prefixlen 64  scopeid 0x20<link>
        ether 00:0e:8e:59:01:6d  txqueuelen 1000  (Ethernet)
        RX packets 690966  bytes 121311998 (121.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1282004  bytes 1525718090 (1.5 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Сервер работает нормально. Но после какого-то обновления. Не заметил какого... snmpd на wlan0 в ifSpeed не отдает скорость интерфейса и соответственно не работает mrtg. Что может быть, или можно ли обмануть mrtg не ковыряя код?
ifDescr.1 = STRING: lo
ifDescr.2 = STRING: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
ifDescr.3 = STRING: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
ifDescr.4 = STRING: sit0
ifDescr.5 = STRING: he-ipv6
ifDescr.6 = STRING: wlan0
ifType.1 = INTEGER: softwareLoopback(24)
ifType.2 = INTEGER: ethernetCsmacd(6)
ifType.3 = INTEGER: ethernetCsmacd(6)
ifType.4 = INTEGER: tunnel(131)
ifType.5 = INTEGER: tunnel(131)
ifType.6 = INTEGER: ethernetCsmacd(6)
ifMtu.1 = INTEGER: 65536
ifMtu.2 = INTEGER: 1500
ifMtu.3 = INTEGER: 1500
ifMtu.4 = INTEGER: 1480
ifMtu.5 = INTEGER: 1480
ifMtu.6 = INTEGER: 1500
ifSpeed.1 = Gauge32: 10000000
ifSpeed.2 = Gauge32: 1000000000
ifSpeed.3 = Gauge32: 0
ifSpeed.4 = Gauge32: 0
ifSpeed.5 = Gauge32: 0
ifSpeed.6 = Gauge32: 0
ifPhysAddress.1 = STRING: 
ifPhysAddress.2 = STRING: e0:d5:5e:50:ff:3
ifPhysAddress.3 = STRING: e0:d5:5e:50:ff:2
ifPhysAddress.4 = STRING: 
ifPhysAddress.5 = STRING: c0:a8:3:2:0:0
ifPhysAddress.6 = STRING: 0:e:8e:59:1:6d
ifAdminStatus.1 = INTEGER: up(1)
ifAdminStatus.2 = INTEGER: up(1)
ifAdminStatus.3 = INTEGER: up(1)
ifAdminStatus.4 = INTEGER: down(2)
ifAdminStatus.5 = INTEGER: up(1)
ifAdminStatus.6 = INTEGER: up(1)

 , ,

hbars ()

агент SNMP на Centos 7

Всем привет, в Centos конфиг snmpd абсолютно отличается от того же Ubuntu где тупо указывается rocommunity public (ip адрес сервера с которого будет опрос) и agentAddress (протокол:порт). Пробовал добавить в конфиг:

com2sec nolocal (192.168.121.0/24) public group rg v2c nolocal group rg v1 nolocal view all included .1 access rg "" any noauth exact all none none

после перезапускаю systemctl start snmpd и пробую опросить snmpwalk -v2c -c public 192.168.130.20 в ответ получаю Timeout: No Response from, но если на Centos опросить самого себя все работает.

 , ,

maslonax ()

snmptrapd что это и с чем едят

Доброго времени суток . Не кидайте помидоры , за необразованность , изучаю просторы гугла , но пока без особых успехов . На виртуалке стоит 18 версии убунту . Установленны пакеты snmp snmpwalk snmptrapd и тп (ну вроде все нужные стоят ) . Задача понять как работает snmptrapd с примером работы . А именно научится ловить трапы без шифрации по 1 или 2 версии snmp . ловить трапы акулой я научился . а вот как с snmptrapd , ничего не найду и не пойму , либо все очевидно и под носом . помогите пожалуйста , как отправить самому себе трап по первой\второй версии snmp и самому же его поймать при помощи snmptrapd .

 , , ,

Kurama ()

SNMP + python не могу получить доступ к строке таблицы

Всем привет!

Есть агент snmp, написанный на python на основе библиотеки netsnmpagent. Со скалярными переменными всё работает, проблема с таблицами.

Сам агент

#!/usr/bin/env python36

import sys, os, signal, time
import optparse, threading, subprocess

sys.path.insert(0, os.path.dirname(os.getcwd()))
import netsnmpagent

prgname = sys.argv[0]

parser = optparse.OptionParser()
parser.add_option(
	"-i",
	"--interval",
	dest="interval",
	help="Set interval in seconds between data updates",
	default=30
)
parser.add_option(
	"-m",
	"--mastersocket",
	dest="mastersocket",
	help="Sets the transport specification for the master agent's AgentX socket",
	default="/var/run/agentx/master"
)
parser.add_option(
	"-p",
	"--persistencedir",
	dest="persistencedir",
	help="Sets the path to the persistence directory",
	default="/var/lib/net-snmp"
)
(options, args) = parser.parse_args()

headerlogged = 0
def LogMsg(msg):
	""" Writes a formatted log message with a timestamp to stdout. """

	global headerlogged

	if headerlogged == 0:
		print("{0:<8} {1:<90} {2}".format(
			"Time",
			"MainThread",
			"UpdateSNMPObjsThread"
		))
		print("{0:-^120}".format("-"))
		headerlogged = 1

	threadname = threading.currentThread().name

	funcname = sys._getframe(1).f_code.co_name
	if funcname == "<module>":
		funcname = "Main code path"
	elif funcname == "LogNetSnmpMsg":
		funcname = "net-snmp code"
	else:
		funcname = "{0}()".format(funcname)

	if threadname == "MainThread":
		logmsg = "{0} {1:<112.112}".format(
			time.strftime("%T", time.localtime(time.time())),
			"{0}: {1}".format(funcname, msg)
		)
	else:
		logmsg = "{0} {1:>112.112}".format(
			time.strftime("%T", time.localtime(time.time())),
			"{0}: {1}".format(funcname, msg)
		)
	print(logmsg)

def LogNetSnmpMsg(priority, msg):
	""" Log handler for log messages generated by net-snmp code. """

	LogMsg("[{0}] {1}.".format(priority, msg))

# Create an instance of the netsnmpAgent class
try:
	agent = netsnmpagent.netsnmpAgent(
		AgentName      = "ThreadingAgent",
		MasterSocket   = options.mastersocket,
		PersistenceDir = options.persistencedir,
                MIBFiles = ["/usr/share/snmp/mibs/roschat-m0-mib.mib"],
		LogHandler = LogNetSnmpMsg
	)
except netsnmpagent.netsnmpAgentException as e:
	print("{0}: {1}".format(prgname, e))
	sys.exit(1)


from params import Params
params = Params(agent) #здесь вызывается другой скрипт, в котором формируется таблица
params.register()

def UpdateSNMPObjs():
        """ Function that does the actual data update. """

        global threadingString

        LogMsg("Beginning data update.")
        data = ""
        params.update()
        LogMsg("Data update done, exiting thread.")

def UpdateSNMPObjsAsync():
	""" Starts UpdateSNMPObjs() in a separate thread. """

	if threading.active_count() == 1:
		LogMsg("Creating thread for UpdateSNMPObjs().")
		t = threading.Thread(target=UpdateSNMPObjs, name="UpdateSNMPObjsThread")
		t.daemon = True
		t.start()
	else:
		LogMsg("Data update still active, data update interval too low?")

try:
	agent.start()
except netsnmpagent.netsnmpAgentException as e:
	LogMsg("{0}: {1}".format(prgname, e))
	sys.exit(1)

LogMsg("Doing initial call to UpdateSNMPObjsAsync().")
UpdateSNMPObjsAsync()

def TermHandler(signum, frame):
	global loop
	loop = False
signal.signal(signal.SIGINT, TermHandler)
signal.signal(signal.SIGTERM, TermHandler)

def AlarmHandler(signum, frame):
	global loop, timer_triggered

	LogMsg("Got triggered by SIGALRM.")

	if loop:
		timer_triggered = True

		UpdateSNMPObjsAsync()

		signal.signal(signal.SIGALRM, AlarmHandler)
		signal.setitimer(signal.ITIMER_REAL, float(options.interval))
msg = "Installing SIGALRM handler triggered every {0} seconds."
msg = msg.format(options.interval)
LogMsg(msg)
signal.signal(signal.SIGALRM, AlarmHandler)
signal.setitimer(signal.ITIMER_REAL, float(options.interval))

LogMsg("Now serving SNMP requests, press ^C to terminate.")

loop = True
while loop:
	timer_triggered = False
	res = agent.check_and_process()
	if res == -1 and not timer_triggered and loop:
		loop = False
		LogMsg("Error {0} in SNMP packet processing!".format(res))
	elif loop and timer_triggered:
		LogMsg("net-snmp's check_and_process() returned due to SIGALRM (res={0}), doing another loop.".format(res))
	elif loop:
		LogMsg("net-snmp's check_and_process() returned (res={0}), doing another loop.".format(res))

LogMsg("Terminating.")
agent.shutdown()

Скрипт params.py, в котором формируется таблица

import sys,os
from dbusclient import Dbusclient
import yaml
import json

if __name__ == '__main__':
    sys.exit(0)

config = yaml.safe_load(open('/etc/roschat-snmp/conf.d/default.yml'))['snmp']

class Params:
    def __init__(self, agent):
        self.agent = agent
        self.dbus = Dbusclient(config['object'], config['path'], config['iface'])
        self.state = None

    def register(self):
        mib = "ROSCHAT-M0-MIB::roschat-m0."
        self.publicNetwork = self.agent.Integer32(
            oidstr = mib+"publicNetwork",
            # BoolType (1 - no, 2 - yes)
            initval = 1
        )
        self.domainCertificate = self.agent.Integer32(
            oidstr = mib+"domainCertificate",
            initval = 1
        )
        self.domainCertificateTime = self.agent.TimeTicks(
            oidstr = mib+"domainCertificateTime"
        )
        self.userLicense = self.agent.Integer32(
            oidstr = mib+"userLicense",
            initval = 1
        )
        self.userLicenseLimit = self.agent.Integer32(
            oidstr = mib+"userLicenseLimit",
            initval = 0
        )
        self.userLicenseUsed = self.agent.Integer32(
            oidstr = mib+"userLicenseUsed",
            initval = 0
        )
        self.userLicenseTime = self.agent.TimeTicks(
            oidstr = mib+"userLicenseTime"
        )
        self.pushService = self.agent.Integer32(
            oidstr = mib+"pushService",
            initval = 1
        )
        self.pushServiceApple = self.agent.Integer32(
            oidstr = mib+"pushServiceApple",
            initval = 1
        )
        self.pushServiceGoogle = self.agent.Integer32(
            oidstr = mib+"pushServiceGoogle",
            initval = 1
        )
        self.finishElement = self.agent.Integer32(
            oidstr = mib+"finishElement",
            initval = 0
        )
        #здесь формируются столбцы таблицы
        self.serviceTable = self.agent.Table(
            oidstr  = mib+"serviceTable",
	    indexes = [
		self.agent.Integer32()
	    ],
	    columns = [
		(1, self.agent.Integer32(), True),
		(2, self.agent.DisplayString(""), True),
		(3, self.agent.Integer32(), True),
		(4, self.agent.TimeTicks(), True)
	    ],
            counterobj = self.agent.Unsigned32(
                    		#oidstr = "ROSCHAT-M0-MIB::serviceTable.serviceEntry"
                    		oidstr = "ROSCHAT-M0-MIB::serviceEntry"
            ),
	    extendable = True
        )
    # TODO: add providerTable
    def updateServiceTable(self, prev_services_state = [{"name": "", "running": False}]):
        print('UPDate service table')
        serviceState = 0
        serviceStateTime = 0
        self.serviceTable.clear()        
        for i, service in enumerate(self.state['services']):
            serviceName = service['name'].replace('.service', '')
            if service['running']:
                serviceState = 3
                serviceStateTime = service['uptime']
            else:
                serviceState = 1
                serviceStateTime = service['downtime']
            for prevservice in prev_services_state:
                if service['name'] == prevservice['name'] and not service['running'] == prevservice['running']:
                    print('Change service state')
                    if service['running']:
                        self.sendTrap(14, "serviceTable", "s", serviceName)
                    else:
                        self.sendTrap(13, "serviceTable", "s", serviceName)
            #Здесь формируются строки таблицы
            row = self.serviceTable.addRow([self.agent.Integer32(i)])
            row.setRowCell(1, self.agent.Integer32(i))
            row.setRowCell(2, self.agent.DisplayString(serviceName))
            row.setRowCell(3, self.agent.Integer32(serviceState))
            row.setRowCell(4, self.agent.TimeTicks(serviceStateTime))
            
            #return self.agent.serviceTable.value()

    def valueServiceTable(self):
        return self.agent.serviceTable.value()

    def sendTrap(self, trapcode=0, oid="", valuetype="s", value=""):
        config = json.loads(open("/opt/roschat-ms/settings/snmp/snmpConfig.json", "r").read())
        os.system("snmptrap -v 1 -c public  "+config['snmp_trap_host']+":"+config['snmp_trap_port']+" ROSCHAT-M0-MIB::roschat-m0 '' 6 "+str(trapcode)+" '0' ROSCHAT-M0-MIB::roschat-m0."+oid+" "+valuetype+" "+str(value))
            
    def update(self, data=None):
        # TODO: оптимизировать, убрать лишние if, etc
        prev_state = self.state
        if prev_state == None:
            prev_state = {
                "network": {"ok": False},
                "pushStatus": {"status": False},
                "certs": {"errors": []},
                "services": [{"name": "", "running": False}]
            }
        self.state = self.dbus.GetState()
        self.updateServiceTable(prev_state['services']).value()
        if self.state['network']['ok']:
            publicNetwork = 2 # True
            if not self.state['network']['ok'] == prev_state['network']['ok']:
                self.sendTrap(2, "publicNetwork", "i",  publicNetwork)
        else:
            publicNetwork = 1 # False
            if not self.state['network']['ok'] == prev_state['network']['ok']:
                self.sendTrap(1, "publicNetwork", "i",  publicNetwork)
        self.publicNetwork.update(publicNetwork)

        if 'certs' in self.state:
            domainCertificate = 2 # True
            if 'errors' in self.state['certs']:
                if len(self.state['certs']['errors']) > 0:
                    domainCertificate = 1 #False
                    if not self.state['certs']['errors'] == prev_state['certs']['errors']:
                        self.sendTrap(3, "domainCertificate", "i",  domainCertificate)
                else:
                    if not self.state['certs']['errors'] == prev_state['certs']['errors']:
                        self.sendTrap(4, "domainCertificate", "i",  domainCertificate)
            self.domainCertificate.update(domainCertificate)

        if 'pushStatus' in self.state and 'status' in self.state['pushStatus']:
            pushService = 2 # True
            if not self.state['pushStatus']['status'] == prev_state['pushStatus']['status']:
                self.sendTrap(8, "pushService", "i",  pushService)
        else:
            pushService = 1 # False
            if self.state['pushStatus'] and not self.state['pushStatus']['status'] == prev_state['pushStatus']['status']:
                self.sendTrap(7, "pushService", "i",  pushService)
        self.pushService.update(pushService)
            
        self.domainCertificateTime.update(2) # TODO: разобраться с типом данных
        self.userLicense.update(2) # TODO: Что это?
        self.userLicenseLimit.update(203) # TODO: И это тоже что?

Код не мой, поэтому не удивляйтесь комментариям в конце скрипта

MIB файл

ROSCHAT-M0-MIB DEFINITIONS ::= BEGIN
               
IMPORTS
  OBJECT-TYPE
    FROM RFC1155-SMI
  roschat-m
    FROM ROSCHAT-M-MIB
  TRAP-TYPE
    FROM RFC-1215;
                  
roschat-m0   OBJECT IDENTIFIER ::= { roschat-m 1 }
                    
DisplayString  ::= OCTET STRING
DateTimeString ::= DisplayString (SIZE (0..20))
StateType      ::= INTEGER {
                       crush(1),
                       warning(2),
                       ok(3),
                       unknown(4)
                      }
                      
BoolType       ::= INTEGER {
                       no(1),
                       yes(2)
                      }
 --  MIB-II (same prefix as MIB-I)
                                                                         
-- *********************************************************************
-- **************** SCALAR OBJECTS *************************************
-- *********************************************************************
publicNetwork OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to public network"
      ::= { roschat-m0 1 }
domainCertificate OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Validating domain certificate"
      ::= { roschat-m0 2 }
domainCertificateTime OBJECT-TYPE
      SYNTAX  TimeTicks
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Time limit of domain certificate"
      ::= { roschat-m0 3 }
      
userLicense OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Validating license"
      ::= { roschat-m0 4 }
userLicenseLimit OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "User limit of license"
      ::= { roschat-m0 5 }
userLicenseUsed OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Used user of license"
      ::= { roschat-m0 6 }
userLicenseTime OBJECT-TYPE
      SYNTAX  TimeTicks
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Time limit of license"
      ::= { roschat-m0 7 }
      
pushService OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to push service"
      ::= { roschat-m0 8 }
      
pushServiceApple OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to push service Apple (APNS)"
      ::= { roschat-m0 9 }
      
pushServiceGoogle OBJECT-TYPE
      SYNTAX  BoolType
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Status access to push service Google (GCM)"
      ::= { roschat-m0 10 }
finishElement OBJECT-TYPE
      SYNTAX  INTEGER
      ACCESS  read-only
      STATUS  mandatory
      DESCRIPTION
          "Terminated element"
      ::= { roschat-m0 32767 }
               
-- *********************************************************************
-- **************** TABLE OBJECTS **************************************
-- ********************************************************************* 
-- *********************************************************************
-- Service Table
-- *********************************************************************
serviceTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF ServiceEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
          "Service table"   
      ::= { roschat-m0 11 }
      serviceEntry OBJECT-TYPE
            SYNTAX  ServiceEntry
            ACCESS  not-accessible
            STATUS  mandatory
            INDEX { ServiceNum }        
      ::= { serviceTable 1 }
      ServiceEntry ::= SEQUENCE {
                               serviceNum         INTEGER,
                               serviceName        DisplayString,
                               serviceState       StateType,
                               serviceStateTime   DateTimeString
                              }
            serviceNum OBJECT-TYPE
                  SYNTAX  INTEGER
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "# Service"
                  ::= { serviceEntry 1 }
            serviceName  OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (0..255))
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Service name"
                  ::= { serviceEntry 2 }
            serviceState  OBJECT-TYPE
                  SYNTAX  StateType
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Service state"
                  ::= { serviceEntry 3 }
                                    
            serviceStateTime OBJECT-TYPE
                  SYNTAX  DateTimeString
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Service setted time"
                  ::= { serviceEntry 4 }
                              
-- *********************************************************************
-- Provider Table
-- *********************************************************************                                             
providerTable OBJECT-TYPE
      SYNTAX  SEQUENCE OF ProviderEntry
      ACCESS  not-accessible
      STATUS  mandatory
      DESCRIPTION
          "Provider table"
      ::= { roschat-m0 12 }
      providerEntry OBJECT-TYPE
            SYNTAX  ProviderEntry
            ACCESS  not-accessible
            STATUS  mandatory
            INDEX { providerNum }
            ::= { providerTable 1 }
      ProviderEntry ::= SEQUENCE {
                               providerNum         INTEGER,
                               providerName        DisplayString,
                               providerDescription DisplayString,
                               providerAdress      DisplayString,
                               providerState       StateType,
                              }
            providerNum OBJECT-TYPE
                  SYNTAX  INTEGER
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "# Provider"
                  ::= { providerEntry 1 }
                  
            providerName  OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (1..255))
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider name"
                  ::= { providerEntry 2 }
                  
            providerDescription  OBJECT-TYPE
                  SYNTAX  DisplayString
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider description"
                  ::= { providerEntry 3 }
                  
            providerAdress  OBJECT-TYPE
                  SYNTAX  DisplayString (SIZE (0..32))
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider adress"
                  ::= { providerEntry 4 }
            providerState  OBJECT-TYPE
                  SYNTAX  StateType
                  ACCESS  read-only
                  STATUS  mandatory
                  DESCRIPTION
                      "Provider state"
                  ::= { providerEntry 5 }
-- *********************************************************************
-- **************** TRAPS **********************************************
-- ********************************************************************* 
agentOffTrap TRAP-TYPE
        ENTERPRISE roschat-m0
        DESCRIPTION
                "Agent Off"
        ::= 1
agentOnTrap TRAP-TYPE
        ENTERPRISE roschat-m0
        DESCRIPTION
                "Agent On"
        ::= 2
        
publicNetworkNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { publicNetwork }
        DESCRIPTION
                "Denied access to public network"
        ::= 3
        
publicNetworkYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { publicNetwork }
        DESCRIPTION
                "Access to public network is present"
        ::= 4
        
domainCertificateInvalid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { domainCertificate }
        DESCRIPTION
                "Invalide domain certificate"
        ::= 5
        
domainCertificateValid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { domainCertificate }
        DESCRIPTION
                "Valide domain certificate"
        ::= 6
        
userLicenseInvalid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { userLicense }
        DESCRIPTION
                "Invalide user license"
        ::= 7
        
domainCertificateValid TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { userLicense }
        DESCRIPTION
                "Valide user license"
        ::= 8
        
pushServiceNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushService }
        DESCRIPTION
                "Denied access to push service"
        ::= 9
        
pushServiceYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushService }
        DESCRIPTION
                "Denied access to push service"
        ::= 10
        
pushServiceAplleNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceApple }
        DESCRIPTION
                "Denied access to push service Aplle"
        ::= 11
        
pushServiceAplleYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceApple }
        DESCRIPTION
                "Denied access to push service Aplle"
        ::= 12
        
pushServiceGoogleNo  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceGoogle }
        DESCRIPTION
                "Denied access to push service Google"
        ::= 13
        
pushServiceGoogleYes  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { pushServiceGoogle }
        DESCRIPTION
                "Denied access to push service Google"
        ::= 14
                
serviceStateCrush  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { serviceState }
        DESCRIPTION
                "Service state is Crush"
        ::= 15
        
serviceStateOk  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { serviceState }
        DESCRIPTION
                "Service state is Ok"
        ::= 16
                
providerStateCrush  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { providerState }
        DESCRIPTION
                "Provider state is Crush"
        ::= 17
        
providerStateOk  TRAP-TYPE
        ENTERPRISE roschat-m0
        VARIABLES { providerState }
        DESCRIPTION
                "Provider state is Ok"
        ::= 18
END

При запросе таблицы всё отображается корректно вроде бы

snmptable -v 1 -c public localhost ROSCHAT-M0-MIB::serviceTable
SNMP table: ROSCHAT-M0-MIB::serviceTable

 serviceNum    serviceName serviceState serviceStateTime
          0     "kamailio"           ok   29:20:04:34.51
          1    "rtpengine"           ok   32:12:46:35.84
          2   "roschat-ms"           ok   130:5:18:26.04
          3         "wlan"           ok    9:11:53:49.05
          4   "turnserver"           ok  283:13:26:41.34
          5   "roschat-db"           ok  283:13:21:41.17
          6 "roschat-snmp"           ok     0:3:12:37.02
          7   "gw-booster"        crush    52:5:49:14.66

Дерево таблицы тоже выстраивается

snmpwalk -v 2c -c public localhost ROSCHAT-M0-MIB::serviceTable
ROSCHAT-M0-MIB::serviceEntry.0 = Gauge32: 8
ROSCHAT-M0-MIB::serviceNum.0 = INTEGER: 0
ROSCHAT-M0-MIB::serviceNum.1 = INTEGER: 1
ROSCHAT-M0-MIB::serviceNum.2 = INTEGER: 2
ROSCHAT-M0-MIB::serviceNum.3 = INTEGER: 3
ROSCHAT-M0-MIB::serviceNum.4 = INTEGER: 4
ROSCHAT-M0-MIB::serviceNum.5 = INTEGER: 5
ROSCHAT-M0-MIB::serviceNum.6 = INTEGER: 6
ROSCHAT-M0-MIB::serviceNum.7 = INTEGER: 7
ROSCHAT-M0-MIB::serviceName.0 = STRING: "kamailio"
ROSCHAT-M0-MIB::serviceName.1 = STRING: "rtpengine"
ROSCHAT-M0-MIB::serviceName.2 = STRING: "roschat-ms"
ROSCHAT-M0-MIB::serviceName.3 = STRING: "wlan"
ROSCHAT-M0-MIB::serviceName.4 = STRING: "turnserver"
ROSCHAT-M0-MIB::serviceName.5 = STRING: "roschat-db"
ROSCHAT-M0-MIB::serviceName.6 = STRING: "roschat-snmp"
ROSCHAT-M0-MIB::serviceName.7 = STRING: "gw-booster"
ROSCHAT-M0-MIB::serviceState.0 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.1 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.2 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.3 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.4 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.5 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.6 = INTEGER: ok(3)
ROSCHAT-M0-MIB::serviceState.7 = INTEGER: crush(1)
ROSCHAT-M0-MIB::serviceStateTime.0 = Timeticks: (257848363) 29 days, 20:14:43.63
ROSCHAT-M0-MIB::serviceStateTime.1 = Timeticks: (281140496) 32 days, 12:56:44.96
ROSCHAT-M0-MIB::serviceStateTime.2 = Timeticks: (1125171516) 130 days, 5:28:35.16
ROSCHAT-M0-MIB::serviceStateTime.3 = Timeticks: (82103817) 9 days, 12:03:58.17
ROSCHAT-M0-MIB::serviceStateTime.4 = Timeticks: (2450021046) 283 days, 13:36:50.46
ROSCHAT-M0-MIB::serviceStateTime.5 = Timeticks: (2449991029) 283 days, 13:31:50.29
ROSCHAT-M0-MIB::serviceStateTime.6 = Timeticks: (59773) 0:09:57.73
ROSCHAT-M0-MIB::serviceStateTime.7 = Timeticks: (451436378) 52 days, 5:59:23.78

Но вот, когда запрашиваю конкретный OID, получаю ошибку

snmpget -v 1 -c public localhost ROSCHAT-M0-MIB::serviceState.2
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: ROSCHAT-M0-MIB::serviceState.2

Подскажите, как формировать таблицу, чтобы получить доступ к OID таблице?

 , , ,

pbezpal ()

SNMPD настроить логирование в файл

Ситуация такая:

Обновился с Deb7 на Deb9 После обновления странно себя стал вести snmpd - как сервис через service --status-all:

[ - ] snmpd

На команды запуска сервиса:

service snmpd start/restart/... не отзывается

Однако сервис запущен и работает, но в то же время в статусе по сервисам не отображается:

root# ps aux | grep «snmpd» [13:58] root 6775 0.0 0.1 59724 5788 ? S 10:57 0:05 snmpd

Собственно хотел узнать: как запустить логирование для snmpd чтобы отследить почему такое поведение? + новичек в Линукс

 , ,

Gudsaf ()

Трабла с snmp trap

Привет. Есть задача: есть управляемый свич, при изменение состояния линка одного конкретного порта он отправлят snmp trap на сервер. Сама трапа такого вида:

2018-08-09 12:35:33 UDP: [10.15.200.69]:161->[10.15.250.3]:162 [UDP: [10.15.200.69]:161->[10.15.250.3]:162]:
iso.3.6.1.2.1.1.3.0 = Timeticks: (2231) 0:00:22.31	iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.6.3.1.1.5.3	iso.3.6.1.2.1.2.2.1.1.5 = INTEGER: 5	iso.3.6.1.2.1.2.2.1.7.5 = INTEGER: 1	iso.3.6.1.2.1.2.2.1.8.5 = INTEGER: 2
Нужно перенаправить эту трапу с помощью snmtrapd в питоновский скрипт и там её распарсить. Кто может подсказать как правильно её перенаправить в скрипт? Единственое что у меня получилось так это запустить питоновский скрипт когда прилетает трап вот так(snmptrapd.conf):
traphandle default python3.5 /home/tele.py

 , , ,

kernist ()

Расширение SNMPD, права запуска скрипта python

Здравствуйте.

Есть Debian 9.4 / SNMPD 5.7.3 / Python 3.5.3. Сделал простенький скрипт на Python. Прописал в snmpd.conf:

pass .1.3.6.1.4.1.10001 /home/script/snmp/test.py

При запуске SNMPD от имени пользователя Debian-snmp возвращает ошибку «No Such Instance...». При запуске SNMPD из консоли от имени root всё работает.

Попробовал просто выполнить комманду:

su -c python3 Debain-snmp
Ничего не происходит. Никаких ошибок в ответ. От имени root срабатывает нормально.

Я так понимаю проблема в запуске Python от имени пользователя Debain-snmp? Куда копнуть? Права на запуск у бинарника Python вроде как установлены для всех.

 ,

xneo ()

snmpd и куча интерфейсов

Привет всем.

Имею новый bras на debian 9 accel-ppp и на нем около тысячи интерфейсов. top показывает что snmpd демон грузит проц минимум на 20% даже в холостом ходу, без snmp запросов на него. как-то расточительно.

Это баг ? Или как затюнить?

 

fet4 ()

snmptt — срабатывают сразу два правила

Вопрос почему срабатывают оба правила, что не так с MATCH ?

snmptt.conf

EVENT eccGatewayEventTrap .1.3.6.1.4.1.1139.3.0.4 "eccGatewayEventTrap" Normal
FORMAT eccGatewayEventTrap, host=$r, severity=$s , val1=$1, val4=$4, val5=$5
MATCH MODE=and
MATCH $5: > 5
MATCH $4: !(Service Processor could not complete a call for service|Device configuration has changed)
EXEC /usr/lib/nagios/plugins/submit_check_result "$r" "snmp_traps" 0 "$4"
SDESC
        Normal
EDESC
#
#
#
EVENT eccGatewayEventTrap .1.3.6.1.4.1.1139.3.0.4 "eccGatewayEventTrap" Critical
FORMAT eccGatewayEventTrap, host=$r, severity=$s , val1=$1, val4=$4, val5=$5
MATCH MODE=and
MATCH $5: < 6
MATCH $4: !(Service Processor could not complete a call for service|Device configuration has changed)
EXEC /usr/lib/nagios/plugins/submit_check_result "$r" "snmp_traps" 2 "$4"
SDESC
        Critical
EDESC

snmptt.log

Wed Jun 14 13:09:37 2017 .1.3.6.1.4.1.1139.3.0.4 Normal "eccGatewayEventTrap" lnx280 - eccGatewayEventTrap, host=lnx280, severity=Normal , val1=977, val4=Symmetrix 000296700895 : Disk state is now Online (was: Offline). - Object is: ... , val5=8

Wed Jun 14 13:09:37 2017 .1.3.6.1.4.1.1139.3.0.4 Critical "eccGatewayEventTrap" lnx280 - eccGatewayEventTrap, host=lnx280, severity=Critical , val1=977, val4=Symmetrix 000296700895 : Disk state is now Online (was: Offline). - Object is ... , val5=8

 ,

futurama ()

snmptrap и кавычки.

Когда приходит snmptrap, и если сервер может отрезолвить OID, он пишет сообщение без кавычек, если SNMP-oid не известен, то в кавычках. Как сделать, чтобы это значение всегда записывалось в кавычки? пример
посылка трапа
snmptrap -v 1 -c public localhost " " " " " 1.3.6.1.2.1.1.5 s «Some host name»
в логах
Apr 21 13:41:32 65_test snmptrapd[30680]: .... SNMPv2-MIB::sysName = STRING: Some host name

и
посылка трапа
snmptrap -v 1 -c public localhost " " " " " 1.3.6.1.2.6.1.5 s «Some host name»
в логах
Apr 21 13:41:45 65_test snmptrapd[30680]: .... SNMPv2-SMI::mgmt.6.1.5 = STRING: "Some host name"

Тело снмптрапа нет возможности поменять. Или возможно все значения для трапов типа STRING оборачивать в кавычки?

 ,

b2ron ()

Настройка устанавливаемого пакета в Ubuntu

Здравствуйте!
В Ubuntu необходимо установить пакет snmpd с опцией --enable-perl-embedded.
Во FreeBSD это делается командой make config в папке устанавливаемого порта (/usr/ports/net-mgmt/net-snmp)
Как это можно сделать в Ubuntu?
Установка пакета выполняется командой:

apt-get install snmpd
Мне нужно в Ubuntu в Perl добавить модуль NetSNMP::TrapReceiver, модуль не устанавливается, возможно по причине неправильно установленного snmpd. Во FreeBSD модуль добавился. Спасибо!

 , ,

citmen ()

snmpd vs Zabbiх agent

Всем привет.

Смотрю, в и-нете расхваливают Zabbix. А чем обычный snmpd не устроил?

Вопрос интересует только в разрезе агента.

Спасибо.

 , , ,

Kroz ()

SNMP: Есть ли способ «подписаться» на trap'ы агента?

Всем привет

Стоит snmpd. В конфиге можно прописать кому отсылать трапы (trap2sink).

Допустим, появляется новый мониторинговый срервер. Он тоже хочет получить трапы. Он может «подписаться» на трапы агентов, если он знает их IP адреса? Или нужно править конфиги на каждом агенте?

 , ,

Kroz ()

А может ли быть SNMP v2c over TCP?

Всем привет

Слышал мнение, что SNMP over TCP может быть только у SNMP v3. Это так? Может ли быть, например, SNMP v2c over TCP?

В гугле не нашёл пруфов ни в одну, ни в другую сторону.

 ,

Kroz ()

SNMP agent эмулятор

Всем привет.

Нужно эмулировать метрики/трапы одного девайса. OID'ы есть.

В каком софте можно задать OID=значение и/или триггерить SNMP трапы для произвольных OID'ов? snmpd, как я понял, позволяет не для произвольных.

 ,

Kroz ()

Помогите настроить SNMPv3 AuthPriv

Всем привет

/etc/snmp/snmpd.conf

...
createUser user2  MD5 qwerasdf DES asdfzxcv # AuthPriv

rouser user2 noauth 1.3.6.1.2.1.1
...

Результат:
$ snmpget -v 3 -u user2 -l AuthNoPriv -a MD5 -A qwerasdf localhost 1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux lix 4.8.6-gentoo #3 SMP Mon Nov 7 09:29:21 EET 2016 i686

$ snmpget -v 3 -u user2 -l AuthPriv -a MD5 -A qwerasdf -x DES -X asdfzxcv localhost 1.3.6.1.2.1.1.1.0
Timeout: No Response from localhost.


Почему AuthPriv не работает?

 ,

Kroz ()

Мониторинг SNMPd + OpenVZ venet0:0

Коллеги здравствуйте!

Есть порядка 10 OpenVZ контейнеров купленных у одного из хостеров разнесенные географически. Пытаюсь снять статистику внешнего интерфейса, но не выходит.

На машине мониторинга пытаюсь посмотреть доступные интерфейсы удаленной машины - host1:

[root@mon ~]# ./check_centreon_snmp_traffic -H 123.12.23.45  --show
Interface 1 :: lo :: up
Interface 2 :: gre0 :: down
Interface 3 :: gretap0 :: down
Interface 4 :: venet0 :: up

Когда пытаюсь получить данные с интерфейса venet0:

[root@mon]# ./check_centreon_snmp_traffic -H 123.12.23.45 -i "venet0" -n
CRITICAL: Interface speed equal 0! Interface must be down.|traffic_in=0B/s traffic_out=0B/s

При попытке получить данные с venet0:0

[root@mon]# ./check_centreon_snmp_traffic -H 123.12.23.45 -i "venet0:0" -n
ERROR: Can't find interface name 'venet0:0' in cache file '/var/lib/centreon/centplugins/traffic_cache_123.12.23.45'. Maybe you need a cache rebuild (Command with option '-a 0').

Интерфейсы на удаленной машине:

[root@host1 ~]# ifconfig -a
gretap0   Link encap:Ethernet  HWaddr 00:00:00:00:00:00
          BROADCAST MULTICAST  MTU:1476  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

gre0      Link encap:UNSPEC  HWaddr 00-00-00-00-FF-FF-80-EB-00-00-00-00-00-00-00-00
          NOARP  MTU:1476  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:27695824 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27695824 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4185127021 (3.8 GiB)  TX bytes:4185127021 (3.8 GiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:63183952 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57510647 errors:0 dropped:46 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:14652624965 (13.6 GiB)  TX bytes:10235413085 (9.5 GiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:123.12.23.45  P-t-P:123.12.23.45  Bcast:123.12.23.45  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

Что я делаю не так? Как снять статистику по интерфейсу в OpenVZ?

 ,

mentax ()

Правило для snmptt, чтобы поймать нужный snmp trap

Добрый день,

Помогите сделать правило для snmptt, чтобы выискавать нужные мне трапы общего потока.

Опыта с ловлей нет никакого, в лоб задачу решить не удалось)

На свичах настроен port-security. Если в порту находится неизвестный мак, шлется трап и порт уходит в даун.

В snmptrapd приходит вот такое сообщение

Dec 18 10:34:04 myhost7 snmptrapd[2720]: 2015-12-18 10:34:04 sw4.adm [192.168.05.04] (via UDP: [192.168.05.04]:161->[192.168.1.05]:162) TRAP, SNMP v1, community public#012#011SNMPv2-SMI::enterprises.11.2.14.12.4 Enterprise Specific Trap (1) Uptime: 13 days, 16:40:58.80#012#011SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.2.1.31 = INTEGER: 1#011SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.3.1.31 = INTEGER: 31#011SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.4.1.31 = Hex-STRING: 00 19 BB EA 7A 9E #011SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.6.1.31 = INTEGER: 1#011SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.7.1.31 = INTEGER: 1

По-человечьи тут говорится, что в 31 порту появился 0019BBEA7A9E и порт блочится.

Все данные хранятся в виде массива данных, это видно если пройтись по oid

snmpwalk -v2c -c public sw4.adm '.1.3.6.1.4.1.11.2.14.2.10.2.1'

SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.1.2 = INTEGER: 2
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.1.3 = INTEGER: 3
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.2.1 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.2.2 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.2.3 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.3.1 = INTEGER: 31
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.3.2 = INTEGER: 31
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.3.3 = INTEGER: 13
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.4.1 = Hex-STRING: 00 19 BB EA 7A 9E 
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.4.2 = Hex-STRING: 00 19 BB EA 7A 9E 
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.4.3 = Hex-STRING: 1C AF F7 C8 5A 0A 
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.5.1 = Timeticks: (118325864) 13 days, 16:40:58.64
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.5.2 = Timeticks: (119826150) 13 days, 20:51:01.50
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.5.3 = Timeticks: (120009389) 13 days, 21:21:33.89
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.6.1 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.6.2 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.6.3 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.7.1 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.7.2 = INTEGER: 1
SNMPv2-SMI::enterprises.11.2.14.2.10.2.1.7.3 = INTEGER: 1

в snmptt.conf написал, в надеже получить хоть что-то в /tmp/trap.txt )) Но тщетно.

EVENT InruderDetected .1.3.6.1.4.1.11.2.14.2.10.2.1 "Status Events" Critical
FORMAT InruderDetected $1 $2 $3 $4
EXEC  InruderDetected  $1 $2 $3 $4 >> /tmp/trap.txt
SDESC
hello world
EDESC

Подскажите, пожалуйста , как подступится к этому.

 ,

x09 ()

snmp trap

Добрый день. Долго мониторил по SNMP из Zabbix охранные платы LAN контакт. Решил вместо постоянных опросов получать от устройств трапы. На самих платах имеется snmp агент, который должен слать трапы, но я ничего не получаю в заданный в snmptt.ini лог файл. От других устройств все отлично приходит, а вот именно от этих плат ответов нет. Использую Centos с такими настройками:

etc/snmp/snmptrapd.conf

disableAuthorization yes
traphandle default snmptthandler
logoption f /tmp/snmptrapd.log

/etc/snmp/snmptt.ini

net_snmp_perl_enable = 1
mibs_environment = ALL
date_time_format = %H:%M:%S %Y/%m/%d
log_enable = 1
log_file = /tmp/ritm_traps.tmp
DEBUGGING = 2
DEBUGGING_FILE = /tmp/snmptt.debug

/etc/snmp/snmptt.conf

EVENT general .* «General event» Normal
FORMAT ZBXTRAP $aA $1

Попробовал снимать данные через tcpdump. Тут все трапы получаю, но почему-то с портом 65534. Возможно это нормально, трапы стал изучать недавно. От техподдержки RITM помощи мало. Может кто из более изощренных в теме коллег подсказать, что можно сделать. Заранее спасибо.

Хм... сейчас проверил snmptrapd.log строку вижу:

2015-11-18 15:15:41 10.254.250.41(via UDP:[10.254.250.41]:65534->[10.254.250.250]) TRAP, SNMP v1, community
SNMPv2-SMI::enterprises.17095 Enterprise Specific Trap (6) Uptime: 0:00:03.10
SNMPv2-SMI::enterprises.17095.3.2.0 = INTEGER: 0

Получается что трап не прописывается только в /tmp/ritm_traps.tmp

 

el_vago ()

Каким инструментом вы ловите и обрабатываете SNMP Traps?

Всем привет.
Есть ли тут кто работал с SNMP трапами, мне интересно, какими инструментами вы обрабатываете OID (используя MIB's своего устройства) и мониторите в виде алертов, а может еще и в виде графиков подаётся информация. :)
К сожалению, у меня NSTI (Nagios SNMP Trap Interface не завёлся с их скрипта автоматической установки :( ). А Zabbix вообще трапы не может обработать (в веб интерфейсе их не видно), но в логах отображаются (странно это... ).
Спасибо.

 , , , ,

Dr_Behaviour ()