本文将对夜莺如何使用 telegraf 监控网络设备做一个初步探讨,第一篇是关于如果简单监控网络设备
正文
本文将围绕sysUpTime,sysName 展开
OID 详情
名称 | OID | 数据类型 | 备注 |
---|---|---|---|
sysUpTime | 1.3.6.1.2.1.1.3 | TimeTicks | 节点完全合格的域名。如果域名未知,则此值为长度是0的字符串 |
sysName | 1.3.6.1.2.1.1.5 | OCTET STRING{(0,255)} | 从系统网管部分启动以来运行的时间,单位为百分之一秒 |
snmpwalk
由于 snmp 为 udp 协议的 161 端口,用 telnet 无法探测。而 snmpwalk 工具可以探测目标设备 snmp 的可用性。
该工具需要额外安装包,软件包名为 net-snmp-utils ,可以通过 yum 安装,命令为 yum -y install net-snmp-utils
探测命令为 snmp -v 版本 -c 团体字
IP
OID
eg: snmpwalk -v 2c -c huawei@123 10.240.3.241 .1.3.6.1.2.1.1.5
eg: snmpwalk -v 2c -c huawei@123 10.240.3.241
测试上述 OID
这里需要注意的地方为使用了 snmpwalk 探测 sysNmae 部分,实际结果为
–> SNMPv2-MIB::sysName.0 = STRING: SH_CE6855_Network_TOR01_SZZB
那么在制作 snmp 监控项里填入 1.3.6.1.2.1.1.5
,就会出现下图二的报错,这里是由于探测 OID 时在调用 net-snmp 的时候会根据目标 OID 来判断工具的使用,如果认为该 OID 为该 MIB 树的最末端,会调用 snmpget ,而当一个 OID 并不是末梢,其下面有很多索引,那么就采用 snmpwalk,所以大家在创建监控项的时候会出现误区,这一章节会在自动发现里详解。
snmpwalk -v 2c -c huawei@123 10.240.3.241 1.3.6.1.2.1.1.3
snmpwalk -v 2c -c huawei@123 10.240.3.241 1.3.6.1.2.1.1.5
安装 telegraf
下载 telegraf
代码语言:javascript复制wget https://mirrors.nju.edu.cn/influxdata/yum/el8-x86_64/telegraf-1.21.3-1.x86_64.rpm
telegraf 安装包无依赖,也可以离线安装
代码语言:javascript复制yum -y install telegraf-1.21.3-1.x86_64.rpm
修改 telegraf 配置
代码语言:javascript复制mv /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.bak
新建 telegraf 配置
这里需要注意的是在 input.snmp 里将 agent_host_tag 的值设置为 ident,这里是夜莺识别 snmp 设备的关键,如果不设置前端将无法以主机的形式存在
- inputs.snmp.field 代表 telegraf 将以 snmpget 进行查询,所以该 OID 必须是树的末梢
- is_tag 如果设置为true,则代表该监控项以标签的方式存在,而不是以 metric 存在。
- agent 部分的 interval 时长根据设备性能而定,时间越短,对设备性能要求越高
[agent]
interval = "30s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "30s"
flush_jitter = "0s"
precision = ""
hostname = "test"
omit_hostname = false
[[outputs.opentsdb]]
host = "http://10.240.99.198"
port = 19000
http_batch_size = 50
http_path = "/opentsdb/put"
debug = false
separator = "_"
[[inputs.snmp]]
agents = ["10.240.3.241"]
timeout = "5s"
version = 2
community = "huawei@123"
agent_host_tag = "ident"
retries = 1
[[inputs.snmp.field]]
oid = "1.3.6.1.2.1.1.3.0"
name = "Uptime"
[[inputs.snmp.field]]
oid = "1.3.6.1.2.1.1.5.0"
name = "sysName"
is_tag = true
测试配置可用性
代码语言:javascript复制telegraf --config /etc/telegraf/telegraf.conf --input-filter snmp --test
启动 telegraf
代码语言:javascript复制service telegraf restart
systemctl restart telegraf
夜莺前端
可以查看到注册上来的设备 IP
即时查询 snmp_Uptime 可以查询相关值
可以通过 grafana 来出图
写在最后
其实 telegraf 的功能相对来说还是比较强大的,相比于 prometheus 的 snmp-exporter 配置相对简单点,但是存在不能配置多个单 OID 的监控项,但实际常用的也没有太大必要,下一期将会带来 inputs.snmp.table 功能,类似 zabbix 的自动发现功能,敬请期待!