[Zenoss-dev] FixforSyslogAgentFromLoggingEventsForDevicesThat'sNotModeled

chitra su_chitra_s at yahoo.com
Thu May 1 16:33:29 EDT 2008


We are on Zenoss 2.1.3.

We observed that the Zenoss console was filled with syslog events from devices that were not modeled in the Zenoss server.

This became issue for us when our Staging tier devices started logging events in Production tier Zenoss!

When we reviewed the codes, we noticed that there were no validation for events against the list of devices that are modeled in Zenoss.

To fix this problem, we made some code change in following files:
 $ZENHOME/Products/ZenEvents/SyslogProcessing.py
$ZENHOME/Products/ZenEvents/zensyslog.py

Original (zensyslog.py)

Code:
def __init__(self):
        EventServer.__init__(self)
        self.changeUser()
        self.minpriority = self.options.minpriority
        self.processor = SyslogProcessor(self.dmd.ZenEventManager,
                                         self.options.minpriority,
                                         self.options.parsehost)


Modified (zensyslog.py)
 
Code:
def __init__(self):
        EventServer.__init__(self)
        self.changeUser()
        self.minpriority = self.options.minpriority
        self.processor = SyslogProcessor(self.dmd.ZenEventManager,
                                         self.options.minpriority,
                                         self.options.parsehost,
                                         self.dmd.Devices)


Original Code (SyslogProcession.py):  

Code:
def process(self, msg, ipaddr, host, rtime):
        evt = SyslogEvent(device=host, ipAddress=ipaddr, rcvtime=rtime,
                agent='zensyslog', eventGroup='syslog')
        slog.debug("host=%s, ip=%s", host, ipaddr)
        slog.debug(msg)

        evt, msg = self.parsePRI(evt, msg)
        if evt.priority > self.minpriority: return

        evt, msg = self.parseHEADER(evt, msg)
        evt = self.parseTag(evt, msg)
        #rest of msg now in summary of event
        evt = self.buildEventClassKey(evt)
        self.zem.sendEvent(evt)


Modified Code (SyslogProcession.py):  

Code:
def process(self, msg, ipaddr, host, rtime):
        evt = SyslogEvent(device=host, ipAddress=ipaddr, rcvtime=rtime, eventClass=Status_Syslog,
                agent='zensyslog', eventGroup='syslog')
        slog.debug("host=%s, ip=%s", host, ipaddr)
        slog.debug(msg)

        evt, msg = self.parsePRI(evt, msg)
        if evt.priority > self.minpriority: return

        zcatalog = self.devices.deviceSearch
        query = Eq('getDeviceIp', ipaddr)
        brains = zcatalog.evalAdvancedQuery(query)
        if len(brains) == 0:
           slog.debug("Not logging event for unmonitored device: host=%s, ip=%s", host, ipaddr)
           return

        evt, msg = self.parseHEADER(evt, msg)
        evt = self.parseTag(evt, msg)
        #rest of msg now in summary of event
        evt = self.buildEventClassKey(evt)
        self.zem.sendEvent(evt)


After adding these new lines, compile .pyc and .pyo files.  Also remember to move old Events to History

Enjoy :)




-------------------- m2f --------------------

Read this topic online here:
http://community.zenoss.com/forums/viewtopic.php?p=19202#19202

-------------------- m2f --------------------





More information about the zenoss-dev mailing list