对于网络设备,抓取日志的最佳方式莫过于snmptrap,简单快捷、扩展丰富、解析方便,首先需要配置snmptrap插件,这是默认安全的输入插件。
首先检查插件的安装情况与版本信息:
# 检查安全包内是否包含此插件
bin/logstash-plugin list --version|grep snmp
其次编写snmp trap配置文件:
input {
snmptrap {
# 记住端口号一定要大于1024
port => "1064"
community => ["public"]
host => "192.168.101.204"
}
}
output {
stdout {
codec => rubydebug
}
}
启动logstash进程,准备接受数据。
在客户端模拟snmptrap请求,如下:
# 注意在IP地址后跟上端口号信息
snmptrap -v 2c -c public 192.168.101.204:1064 '' 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 i 123456
如果,logstash收到类似于如下格式的内容,则表示配置成功。
{
"SNMPv2-MIB::snmpTrapOID.0" => "SNMPv2-SMI::enterprises.8072.2.3.0.1",
"SNMPv2-SMI::enterprises.8072.2.3.2.1" => "123456",
"@timestamp" => 2017-08-07T02:38:30.978Z,
"host" => "192.168.101.203",
"@version" => "1",
"message" => "#<SNMP::SNMPv2_Trap:0x765fd85 @request_id=502220829, @error_index=0, @error_status=0, @source_ip=\"192.168.101.203\", @varbind_list=[#<SNMP::VarBind:0x4658f7be @name=[1.3.6.1.2.1.1.3.0], @value=#<SNMP::TimeTicks:0x5ff5d1ae @value=25517812>>, #<SNMP::VarBind:0x77549600 @name=[1.3.6.1.6.3.1.1.4.1.0], @value=[1.3.6.1.4.1.8072.2.3.0.1]>, #<SNMP::VarBind:0x2713eeaa @name=[1.3.6.1.4.1.8072.2.3.2.1], @value=#<SNMP::Integer:0x267708f1 @value=123456>>]>",
"SNMPv2-MIB::sysUpTime.0" => "2 days, 22:52:58.12"
}