夜莺随笔:监控网络设备(一)

2022-02-16 18:51:58 浏览数 (1)

本文将对夜莺如何使用 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,所以大家在创建监控项的时候会出现误区,这一章节会在自动发现里详解。

代码语言:javascript复制
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 时长根据设备性能而定,时间越短,对设备性能要求越高
代码语言:javascript复制
[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 的自动发现功能,敬请期待!

0 人点赞