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/

发布了20 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lwlfox/article/details/103203415