snmp_exporter監控Dell服務器

 

 

背景

公司有自己的IDC,需要對所有的機器進行監控。爲了採集服務器的度量值,我們在服務器上開通SNMP,然後通過snmp_exporter去抓取數據。

基礎知識:

如果你對SNMP是零基礎,請先閱讀一下參考文章https://my.oschina.net/yjwxh/blog/476454 ,老鳥請自動跳過

數據流:

服務器(SNMP Agent) -> snmp_exporter -> Prometheus

雖然上面的數據流是從底層到上層,但是其實數據拉取的請求是從上至下的,也就是說Prometheus向exporter取數據,exporter再向snmp agent取數據。

基礎組件:

 Prometheus

snmp_exporter

net-snmp-utils

步驟:

1. 安裝net-snmp-utils

yum install -y net-snmp-utils

2. 獲取MIB,我這裏是找DELL廠商要的,也可以在下面的github裏面找。這個裏面有很多基礎的MIB

https://github.com/librenms/librenms/tree/master/mibs

3. 下載snmp_exporter

wget https://github.com/prometheus/snmp_exporter/releases/download/v0.15.0/snmp_exporter-0.15.0.linux-amd64.tar.gz
tar -zxvf snmp_exporter-0.15.0.linux-amd64.tar.gz

4. 查看BIM裏面OID對應的名字。(我的MIB文件叫iDRAC-SMIv2.mib)已經上傳到服務器上了

#MIB文件目錄爲 generator/mibs/iDRAC-SMIv2.mib
cd generator
snmptranslate -Tz -m ./mibs/iDRAC-SMIv2.mib

如輸出裏面說有的MIB沒有找到,就到上面的github下載,然後放到mibs目錄中
比如: Cannot find module (HOST-RESOURCES-MIB): At line 0 in (none),直接在github上下載這個文件放入目錄中,再次運行上面的命令,直到輸出下面的內容:
 

5. 用snmp_exporter generator生成 配置文件

cd generator
vi generator.yml #文件內容在後面
docker run -it -v "${PWD}:/opt/" prom/snmp-generator:master generate
[root@ai-test-k8s01 generator]# docker run -it -v "${PWD}:/opt/" prom/snmp-generator:master generate
level=info ts=2019-11-22T09:05:06.147Z caller=net_snmp.go:142 msg="Loading MIBs" from=mibs
level=warn ts=2019-11-22T09:05:06.457Z caller=main.go:120 msg="NetSNMP reported parse error(s)" errors=12
level=info ts=2019-11-22T09:05:06.800Z caller=main.go:52 msg="Generating config for module" module=dell
level=info ts=2019-11-22T09:05:06.908Z caller=main.go:67 msg="Generated metrics" module=dell metrics=1
level=info ts=2019-11-22T09:05:06.909Z caller=main.go:92 msg="Config written" file=/opt/snmp.yml

 generator.yml

modules:  
# we need to generate hwCpuDevTable metrics.
# and the module name in the `snmp.yml` will be `dell`.
  dell:
    walk: [batteryState]  #這個batteryState就是在snmptranslate的輸出中查看,這裏我想查看電池狀態
    version: 2 #SNMP版本
    timeout: 30s #抓取超時時間
    auth:
      community: "*****" #SNMP配置的密碼

6. 運行snmp_export

cp generator/snmp.yml snmp_exporter-0.15.0.linux-amd64/snmp.yml
cd snmp_exporter-0.15.0.linux-amd64
./snmp_exporter
[root@ai-test-k8s01 snmp_exporter-0.15.0.linux-amd64]# ./snmp_exporter 
INFO[0000] Starting snmp exporter (version=0.15.0, branch=HEAD, revision=92a3da4467f8bc6759cf197e7442b8c43e890b13)  source="main.go:139"
INFO[0000] Build context (go=go1.11.5, user=root@8c3a7c03d455, date=20190212-13:40:02)  source="main.go:140"
INFO[0000] Listening on :9116                            source="main.go:226"

7. 通過瀏覽器訪問服務器的9116端口,填寫需要被監控服務器的IP地址

8. 在prometheus裏面添加配置,抓取這個度量值

 #vi prometheus.yml

- job_name: 'dell'
  scrape_interval: 180s
  scrape_timeout: 180s
  static_configs:
    - targets:
        - 10.128.29.1
      labels:
        adGroup: 'ai-bp'
        adUser: '12455'
  metrics_path: /snmp
  params:
    module: [dell]
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: 127.0.0.1:9116

9. reload prometheus配置

curl -X POST 127.0.0.1:9090/-/reload

10. prometheus中查看監控值

參考文檔:

http://devopstarter.info/snmp-exporter-generator-tutorial/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章