公司有自己的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相關基礎包,我們都可以實現相應的監控