syslog和trap服务api

piat的Python项目详细描述


PIAT项目

PyPI - Python VersionPyPIPyPI - StatusPyPI - LicenseCodacy Badge

piat是一个易于使用的syslog和trap监听器api, 它支持多个供应商的系统日志分析

安装

pip install piat

开始

示例1:

要同时运行两个侦听器/服务器,请使用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
    print(data)

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

if __name__ == '__main__':
    server = PiatServer(traps_callbacks=[trap_cb],
                        syslog_callbacks=[syslog_cb],
                        trap_community='my_community')
    server.start()

系统日志数据示例:

{'ip': '192.168.1.1',
 'timestamp': 
 '2019-04-28 21:26:40.809271',
 'tag': 'LSD-4-LABEL_RESOURCE',
 'severity': 'warning',
 'facility': 'syslogd',
  'msg': 'label range 100-150 exhausted'}

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

陷阱数据示例:

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

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

示例2:

仅运行系统日志服务器:

from piat.servers import SyslogServer

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

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

此外,您只能运行陷阱服务器:

from piat.servers import SnmpTrapServer

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

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

受支持的供应商:

  1. 思科。
  2. 阿里斯塔:
  3. 杜松子。
  4. 华为。
  5. 惠普。
  6. 五楼。
  7. 富通。

功能:

  1. 您可以根据需要传递任意多个回调,所有回调都将同时运行 分开的线。
  2. syslog和trap都将作为独立进程运行。
  3. 您可以添加更多要由陷阱服务器使用的mib dir,使用add_mib_dirkwarg 传递mib dir位置。
  4. piat使用pysnmp进行陷阱监听,因此如果您想扩展mib支持,可以 需要使用pysnmp提供的mibdump.py命令对mib文件进行组合 新的mib,然后使用add_mib_dir将编译的mibs dir添加到piat服务器。
  5. 我们只支持由rfc3164描述的系统日志解析。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为游戏添加声音。需要帮助   java在获取数据时忽略模型类中的forign键映射   java为什么Microsoft JDBC驱动程序忽略failoverPartner主机名   java可以下载mozswing文件   java等价于ObjectOutputStream,不仅保存其状态,还保存整个对象?   Java Android LiveData根据其他LiveData调用房间查询   java如何使用jackson jsonNode实现这一点并获得所需的输出   在web服务器上作为web应用程序运行java应用程序?   groovy中java类的元类属性   返回空指针的java图形对象   标头中包含用户名和密码的java SOAP客户端请求   具有堆栈实现和递归的Hanoi算法塔(Java)   java当我运行这两个类时,我的老鼠不会移动   使用图像进行java相似图像搜索   Java8并行流机制   使用单例对象作为枚举元素的java Scala枚举,是否有可能对它们进行迭代?   java Webview更改高度大小   不可序列化对象和函数的java Spark Scala编程   java my app在eclipse中运行良好,而不是在jar中