Logstash对接 SNMP v2和 v3

1.前言

老版的 logstash不支持 snmp协议,当时只能自己写插件实现,现在官方支持了,故进行验证并熟悉其用法。

环境信息如下

​ SNMP(net-snmp)版本:5.7.2

​ Logstash版本:7.13.4

​ 操作系统:CentOS Linux release 7.9.2009 (Core)

这里简单提一下,snmp目前有三个版本的协议:v1,v2c,v3。其中 v3是安全性最高的,支持用户名验证和消息加密。

2.对接 SNMP v2c

logstash配置文件如下

input {
  snmp {
get => ["1.3.6.1.2.1.1.1.0", "1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.5.0"]     
hosts => [{host => "udp:192.168.85.101/161" community => "daphnis"}]
  }
}

output { 
  stdout { codec => rubydebug }
}

配置文件解释

  • get

    值是一个 oid数组,想要获取目标机器上的相应信息,填入对应的 oid即可

    这里简单介绍下这三个 oid的含义:

    • 1.3.6.1.2.1.1.1.0(SNMPv2-MIB::sysDescr.0)

      描述目标机器的 操作系统名称、版本和 CPU架构等硬件信息

    • 1.3.6.1.2.1.1.3.0(DISMAN-EVENT-MIB::sysUpTimeInstance)

      描述目标系统启动后的运行时间

    • 1.3.6.1.2.1.1.5.0(SNMPv2-MIB::sysName.0)

      描述目标机器的主机名称

  • hosts

    host,值里面的含义分别是 协议名称、snmp所在机器IP、snmp所在机器端口号

    community,对应 snmp v2c里面设置好的 团体名

运行效果

{
    "iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance" => 127932,
    "@timestamp" => 2022-11-03T18:27:58.396Z,
    "iso.org.dod.internet.mgmt.mib-2.system.sysName.0" => "host101",
    "iso.org.dod.internet.mgmt.mib-2.system.sysDescr.0" => "Linux host101 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64",
    "@version" => "1",
    "host" => "192.168.85.101"
}

3.对接 SNMP v3

logstash配置文件如下

input {
  snmp {
  hosts => [{host => "udp:192.168.85.102/161" version => "3"}]
  get => ["1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.5.0"]
  security_name => "daphnis"
  auth_protocol => "md5"
  auth_pass => "Abcd1234"
  priv_protocol => "des"
  priv_pass => "Abcd1234"
  security_level => "authPriv"
  type => "snmp"
  }
}

output { 
  stdout { codec => rubydebug }
}

配置文件解释

get、hosts参考第 2节 v2c,v3不同的是多了一个版本号和一些认证信息。认证信息需要根据 snmp的实际配置进行调整,比如 认证协议类型是 md5还是 sha,加密算法是 des还是 aes。

这里先给一个验证 snmp v3开启成功的原生命令:

snmpwalk -v3 -udaphnis -lauthPriv -aMD5 -A"Abcd1234" -x"DES" -X"Abcd1234" 192.168.85.102
  • security_name

    此参数对应 -u,含义是 用户名

  • auth_protocol

    authentication protocol,此参数对应 -a,含义是 认证协议类型,用于验证用户,可选的有 MD5、SHA

  • auth_pass

    此参数对应 -A,含义是 认证协议密码,相当于用户密码,长度至少 8位

  • priv_protocol

    privacy protocol,此参数对应 -x,含义是 隐私协议类型,用于加密消息,可选的有 DES、AES

  • priv_pass

    此参数对应 -X,含义是 隐私协议密码,相当于加密消息时用的秘钥

  • security_level

    此参数对应 -l,含义是 安全等级,可选的有 noAuthNoPriv(无认证无消息加密)、authNoPriv(有认证无消息加密)、authPriv(有认证有消息加密)

运行效果

{
    "type" => "snmp",
    "@timestamp" => 2022-11-03T18:55:40.366Z,
    "iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance" => 158930,
    "iso.org.dod.internet.mgmt.mib-2.system.sysName.0" => "host102",
    "@version" => "1",
    "host" => "192.168.85.102"
}

4.总结

Logstash-7.13.4官方对 SNMP协议的 v2c和 v3支持度不错,配置也比较简单,可以直接使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Logstash和Filebeat是两个常用的开源工具,用于处理和传输日志数据。它们通常与Elasticsearch和Kibana一起使用,形成ELK堆栈,用于实时日志分析和可视化。 Logstash是一个用于收集、处理和转发日志和事件数据的工具。它可以从各种来源(如文件、网络、消息队列等)收集数据,并对数据进行过滤、换和增强,然后将其发送到目标位置(如Elasticsearch、Kafka等)。Logstash使用插件来实现各种功能,例如输入插件、过滤器插件和输出插件。通过配置Logstash的管道,可以定义数据的流动和处理方式。 Filebeat是一个轻量级的日志数据传输工具,用于将日志数据从服务器发送到中央存储或分析系统。它可以监视指定的日志文件或位置,将新的日志事件发送到指定的目标位置(如Logstash、Elasticsearch等)。Filebeat具有低资源消耗和高性能的特点,适用于在大规模分布式环境中收集和传输日志数据。 通过Logstash和Filebeat的结合使用,可以实现以下功能: 1. 收集和传输日志数据:Filebeat负责监视和传输日志文件,Logstash负责接收和处理传入的日志数据。 2. 数据过滤和转换:Logstash可以使用各种过滤器插件对日志数据进行过滤、解析和转换,以便更好地理解和分析数据。 3. 数据增强和丰富:Logstash可以对日志数据进行增强,例如添加额外的字段、记事件等,以便更好地进行分析和可视化。 4. 数据存储和索引:Logstash可以将处理后的日志数据发送到Elasticsearch等目标位置,以便进行存储和索引,以供后续的搜索和分析。 下面是一个演示Logstash和Filebeat的例子: 1. 配置Filebeat: ```yaml filebeat.inputs: - type: log paths: - /var/log/nginx/access.log output.logstash: hosts: ["localhost:5044"] ``` 2. 配置Logstash: ```conf input { beats { port => 5044 } } filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } } output { elasticsearch { hosts => ["localhost:9200"] index => "nginx-access-%{+YYYY.MM.dd}" } } ``` 3. 启动Filebeat和Logstash: ``` # 启动Filebeat filebeat -e -c filebeat.yml # 启动Logstash logstash -f logstash.conf ``` 通过以上配置和命令,Filebeat将监视Nginx访问日志文件,并将新的日志事件发送到LogstashLogstash将使用Grok过滤器对日志数据进行解析和转换,然后将处理后的数据发送到Elasticsearch进行存储和索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值