Skip to main content

Syslog and Trap service API

Project description

Piat Project

PyPI - Python Version PyPI PyPI - Status PyPI - License Codacy Badge

Piat is a syslog and trap listeners APIs which are easy to use, it support syslog parsing for multiple vendors


pip install piat

Getting Started

Example 1:

to run both listeners/servers use the PiatServer API:

from piat.servers import PiatServer

def syslog_cb(syslog_msg):
    """ callback to be executed on received syslog msg """
    data = syslog_msg.get_dictionary()
    # do something with syslog data

def trap_cb(trap_msg):
    """ callback to be executed on received trap msg """
    data = trap_msg.get_dictionary()
    # do something with trap data

if __name__ == '__main__':
    server = PiatServer(traps_callbacks=[trap_cb],

syslog data example :

{'ip': '',
 '2019-04-28 21:26:40.809271',
 'severity': 'warning',
 'facility': 'syslogd',
  'msg': 'label range 100-150 exhausted'}

{'ip': '',
 'timestamp': '2019-04-28 21:26:41.741839',
 'severity': 'informational',
 'facility': 'syslogd',
 'msg': 'Logging to host port 514 started - CLI initiated'}

trap data example :

{'ip': '',
 'timestamp': '2019-04-28 21:30:11.536344',
 'sysUpTime': '88847929',
 'snmpTrapOID': 'CISCO-SMI::cisco.0.1',
 'snmpTrapAddress': '',
 'snmpTrapCommunity': 'public',
 'snmpTrapEnterprise': 'CISCO-SMI::cisco',
 'local': 'root',
 'tcpConnState': 'finWait2'}

{'ip': '',
 'timestamp': '2019-04-28 21:30:11.544577',
 'sysUpTime': '88847996',
 'snmpTrapOID': 'CISCO-SYSLOG-MIB::clogMessageGenerated',
 'snmpTrapAddress': '',
 'snmpTrapCommunity': 'public',
 'snmpTrapEnterprise': 'CISCO-SYSLOG-MIB::ciscoSyslogMIBNotificationPrefix',
 'clogHistFacility': 'LSD',
 'clogHistSeverity': 'warning',
 'clogHistMsgName': 'LABEL_RESOURCE',
 'clogHistMsgText': 'label range 100-150 exhausted',
 'clogHistTimestamp': '88847996'}

Example 2:

to run only syslog server:

from piat.servers import SyslogServer

def syslog_cb(syslog_msg):
    data = syslog_msg.get_dictionary()
    # do something with syslog data

if __name__ == '__main__':
    server = SyslogServer(callbacks=[syslog_cb])

also you can run only trap server:

from piat.servers import SnmpTrapServer

def trap_cb(trap_msg):
    data = trap_msg.get_dictionary()
    # do something with trap data

if __name__ == '__main__':
    server = SnmpTrapServer(callbacks=[trap_cb],community='my_comm')

Supported Vendors:

  1. Cisco.
  2. Arista.:
  3. Juniper.
  4. Huawei.
  5. HP.
  6. F5.
  7. Fortinet.


  1. you can pass as many callback as you want, all callbacks will be running concurrently in separate threads.
  2. both syslog and trap will be running as an independent process.
  3. you can add more mib dir to be used by the trap server, use add_mib_dir kwarg to pass the mib dir location.
  4. Piat uses pysnmp for trap listening, so if you want to extend the mib support you need to combile the mib files using command provided by pysnmp to combile the new mibs, then add the compiled mibs dir to piat server using add_mib_dir.
  5. we only support Syslog parsing described by rfc3164.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

piat-0.0.15.tar.gz (13.9 kB view hashes)

Uploaded source

Built Distribution

piat-0.0.15-py3-none-any.whl (20.5 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page