本文将對夜莺如何使用 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
wget https://mirrors.nju.edu.cn/influxdata/yum/el8-x86_64/telegraf-1.21.3-1.x86_64.rpm
複制
telegraf 安裝包無依賴,也可以離線安裝
yum -y install telegraf-1.21.3-1.x86_64.rpm
複制
修改 telegraf 配置
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
複制
測試配置可用性
telegraf --config /etc/telegraf/telegraf.conf --input-filter snmp --test
複制
啟動 telegraf
service telegraf restart
systemctl restart telegraf
複制
夜莺前端
可以檢視到注冊上來的裝置 IP
即時查詢 snmp_Uptime 可以查詢相關值
可以通過 grafana 來出圖
寫在最後
其實 telegraf 的功能相對來說還是比較強大的,相比于 prometheus 的 snmp-exporter 配置相對簡單點,但是存在不能配置多個單 OID 的監控項,但實際常用的也沒有太大必要,下一期将會帶來 inputs.snmp.table 功能,類似 zabbix 的自動發現功能,敬請期待!