简简单单3步搞定MIB到pysnmp兼容的python模块。Splunk SNMP Module Input的官方文档中,所使用的Mib文本文件转换为pysnmp支持的python脚本的方式相当麻烦且容易出错。虽然在ubuntu中可以直接使用apt install 的方式安装 build-pysnmp-mib的方式安装build-pysnmp-mib工具,但是在使用过程中也会报很多莫名其妙的错误。之所以繁琐,究其原因是build-pysnmp-mib在pysnmp4.2.5之后的版本中就不再维护了。
本文中使用了一种全新python工具pysmi来将mib转换为pysnmp支持的python脚本。
Pysmi简介
PySMI是一个纯Python实现的SNMP SMI MIB解析器。 该工具可以将ASN.1 MIB转换为各种格式。 截至目前,可以从ASN.1 MIB转换成JSON和pysnmp模块。
环境准备
1.准备好一个可以连接互联网的ubuntu虚拟机,本文中使用的是ubuntu 16.04 桌面版(强烈建议使用ubuntu)
2.安装python-pysnmp4
sudo apt install python-pysnmp4
3.下载pysmi,选择一个目录并解压
https://github.com/etingof/pysmi/tree/v0.2.2
此处下载的是pysmi 0.2.2版本,随着版本的更新,可以选择更新的版本。
至此相关的准备工作完成!
转换
1.执行转换
在命令行终端中执行如下命令:
python mibdump.py --generate-mib-texts --destination-directory /home/test/ --destination-format pysnmp /home/test/resources/SESSION-MIB
注释: midbump.py是执行转换的命令脚本,在pysmi-0.2.2/scripts/目录下
--generate-mib-texts 生成文本型的文件
--destion-directory /home/test/pysnmp_des 指定生成的py文件的目标目录,此处是/home/test/pysnmp_dest
--destination-format pysnmp 指定目标的文件类型,可以是pysnmp(pysnmp兼容的py模块)或者json
/home/test/resources/SESSION-MIB 待转换的mib文件
在本例中生成的结果如下:
2.使用转换后的py模块
将生成的.py文件复制到$SPLUNK_HOME/etc/apps/snmp_ta/bin/mibs目录下即可使用了。
总结
至此一个pysnmp可以使用的模块生成完毕,且不用受pysnmp4.2.5版本的限制。
剩下的操作就是在Heavy Forwarder上配置snmp采集和相关的sourcetype。
待续!