Prometheus 实现监控Dell服务器相关硬件指标
公司有自己的IDC,需要对所有的机器进行监控。为了采集服务器的硬件度量值,之前通过zabbix 采集相关的数据指标,这个需要提前开启服务器iDRAC的snmp服务
下面是zabbix通过snmp采集到的硬件指标
为了整合监控相关的资源,需要实现prometheus 来采集相关的服务器硬件指标,并提供报警
具体工作流程流程
iDRAC(SNMP) -> snmp_exporter -> Prometheus
虽然上面的数据流是从底层到上层,但是其实数据拉取的请求是从上至下的,也就是说Prometheus向exporter取数据,exporter再向iDRAC snmp取数据
安装net-snmp-utils
yum install -y net-snmp-utils
获取MIB,我这里通过dell官网下载,
# dell iDRAC-SMIv2.mib 下载地址
wget https://dl.dell.com/FOLDER06571535M/1/Dell-OM-MIBS-950_A00.zip
也可以在下面的github里面找这个里面有很多基础的MIB
https://github.com/librenms/librenms/tree/master/mibs
unzip Dell-OM-MIBS-950_A00.zip
mkdir /opt/mibs
cp -a support/station/mibs /opt/mibs/
查看BIM里面OID对应的名字
snmptranslate -Tz -m /opt/mibs/iDRAC-SMIv2.mib
cd /opt/mibs/
# 这一步特别重要,不然报错err="cannot find oid 'physicalDiskState' to walk"
cp /usr/share/snmp/mibs/SNMPv2-SMI.txt mibs
编辑generator.yml文件
参考文档
https://github.com/prometheus/snmp_exporter/tree/main/generator#file-format
选择internet 的来采集所有指标
vim generator.yml
用snmp_exporter generator生成 配置文件,这里推荐用docker 的方式来生成 ,已经有现成的镜像了,不需要在编译镜像
docker pull prom/snmp-generator
运行下面命令生成相应的snmp.yml 配置文件
docker run -it -v "${PWD}:/opt/" prom/snmp-generator 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
cat snmp.yml |egrep "physicalDisk"
说明需要的指标都已经生成了
然后安装snmp_exporter,这里就不介绍安装了
官方下载地址
https://github.com/prometheus/snmp_exporter/releases
cp snmp.yml /etc/snmp_exporter/
启动相应的服务
snmp_exporter --log.level=error --config.file="/etc/snmp_exporter/snmp.yml"
然后通过浏览器访问,看看是否可以采集相应服务器的硬件指标
在prometheus里面添加配置,抓取这个度量值
通过prometheus 查询相关的指标
通过snmp.yml文件 查看指标的相关说明,
说明值是3 的时候是正常的,我们增加相关报警,只要值不等3都认为是异常,这里也可以参考ZABBIX相关的指标,这里不详细说明了
增加相应的硬件报警规则
测试相关报警 可以故意把报警expr 语句改成不等于2 看具体报警
当然我们还可以通过这种方式监控其他相关的设备,比如我们机房的华为交换机,只要有SNMP 协议支持的,有MIB相关基础包,我们都可以实现相应的监控