gpt4 book ai didi

logstash - 无法让 snmptrap 与 logstash 一起工作

转载 作者:行者123 更新时间:2023-12-02 04:41:40 26 4
gpt4 key购买 nike

我正在尝试让 snmptrap 输入与 logstash 一起工作。我最初以 root 身份启动 logstash,因为我想在更改端口之前确保它能正常工作。我也在本地计算机上使用 SNMP,因为我认为这个世界更容易开始。当我使用端口 161 时,我收到“SNMP Trap listener died”错误。如果我更改为端口 162,我不会收到任何错误,但不会收到任何数据。如果我指向一个不存在的服务器,我也会在任何端口上收到 SNMP Trap listener died 错误。我相信它应该是端口 161,但我可能错了。

如果我使用不同的输入,Logstash 就可以工作。我最终希望输出变成 Graphite ,这也适用于不同的输入。

我配置有误吗?即使我以 root 用户身份运行并且一切都在同一台机器上,是否有一些权限问题可能会导致问题?

感谢您的帮助。

这是我的 .conf 文件:

input {
snmptrap {
host => "127.0.0.1"
community => "public"
port => "161"
type => "snmp_trap"
}
}
output {
stdout { codec => rubydebug }
}

这是本地 snmpwalk 的部分结果:

snmpwalk -mAll -v1 -cpublic 127.0.0.1:161
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (7218152) 20:03:01.52

这是网络统计:

root@lab-graphite:~# netstat -lpn | grep snmp
udp 0 0 127.0.0.1:161 0.0.0.0:* 43559/snmpd
udp 0 0 0.0.0.0:54155 0.0.0.0:* 43559/snmpd
unix 2 [ ACC ] STREAM LISTENING 2593117 43559/snmpd /var/agentx/master

这是完整的错误信息:

SNMP Trap listener died {:exception=>#<SocketError: bind: name or service not known>, :backtrace=>["org/jruby/ext/socket/RubyUDPSocket.java:160:in `bind'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/snmp-1.2.0/lib/snmp/manager.rb:540:in `initialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/snmp-1.2.0/lib/snmp/manager.rb:585:in `create_transport'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/snmp-1.2.0/lib/snmp/manager.rb:618:in `initialize'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-snmptrap-2.0.4/lib/logstash/inputs/snmptrap.rb:74:in `build_trap_listener'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-snmptrap-2.0.4/lib/logstash/inputs/snmptrap.rb:78:in `snmptrap_listener'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-input-snmptrap-2.0.4/lib/logstash/inputs/snmptrap.rb:53:in `run'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:342:in `inputworker'", "/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:336:in `start_input'"], :level=>:warn}

最佳答案

在 .conf 文件中,“host”参数代表运行 logstash 的计算机的 ip 地址或主机名。如果您要从外部世界来源接收 snmp 陷阱,它不应该是本地主机 (127.0.0.1)。不过本地设置测试没问题。

如评论中所述,默认 snmptrap 端口为 162(没有理由在您的设置中更改它)。此外,由于 netstat 显示有 snmpd 正在运行并且它监听 udp 端口​​ 161,因此不允许您的 logstash 绑定(bind)到相同的端口 161。

`snmpwalk` is not the right way to test your setup (it actually polls snmpd daemon on port 161) - it is `snmptrap` command that will send trap to your logstash input. For example,

`snmptrap -v1 -c public 127.0.0.1 .1.3 i 0 123456780 127.0.0.1 0 .1.3.6 i 12345`

您还可以以 root 身份运行 tcpdump port 162 以检查 snmptrap 是否正在向 127.0.0.1:162 的目标发送数据包。

(这里的127.0.0.1是下面logstash.conf中使用的主机地址)

所以,对于本地测试使用

`snmptrap {
host => "127.0.0.1"
community => "public"
port => "162"
type => "snmp_trap"
}
}`

关于logstash - 无法让 snmptrap 与 logstash 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37056559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com