天天看點

夜莺随筆:監控網絡裝置(一)

本文将對夜莺如何使用 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 的自動發現功能,敬請期待!