Prometheus 采集snmp监控数据
前言snmp_exporter
snmp_exporter是一个用于收集SNMP(Simple Network Management Protocol)设备指标的开源软件,它是Prometheus生态系统中的一个组件。SNMP是一种用于网络设备监控和管理的协议,通过查询和获取设备的各种信息来提供实时的状态和性能数据。
snmp_exporter充当一个代理,运行在需要被监控的SNMP设备(如路由器、交换机、防火墙等)的旁边。它会定期向这些设备发送SNMP请求,获取特定的OID(Object Identifier)值,并将其转换为Prometheus可读的指标数据。
snmp_exporter可以提供各种与SNMP设备相关的指标,如接口流量、CPU利用率、内存使用情况、链路状态、错误计数等。这些指标可以帮助管理员了解设备的运行状况、网络流量情况和性能指标,并及时做出反应。
通过将snmp_exporter与Prometheus结合使用,管理员可以定期从snmp_exporter暴露的HTTP或HTTPS端点获取SNMP设备的指标数据,并将其存储、分析和可视化。使用Prometheus的查询语言,用户可以构建自定义的监控规则和警报条件,以便快速检测和响应设备问题。
download snmp_exporter
- snmp_exporter采集数据
snmp_exporter 一键监控安装脚本
- /opt/snmp_exporter 目录位置
- 端口9116
- 配置文件/opt/snmp_exporter/snmp.yml
vim /snmp_exporter.sh
#!/bin/bash
# -*- coding: utf-8 -*-
# Author: make.han
# Email: CIASM@CIASM
# Date: 2024/01/17
OPT_CATALOGUE=/opt
SNMP_EXPORTER_PREFIX=/opt/snmp_exporter
SNMP_EXPORTER_URL=https://github.com/prometheus/snmp_exporter/releases/download/v0.25.0/snmp_exporter-0.25.0.linux-amd64.tar.gz
SNMP_EXPORTER_GZ=snmp_exporter-0.25.0.linux-amd64.tar.gz
SNMP_EXPORTER_DIRECTORY=snmp_exporter-0.25.0.linux-amd64
SNMP_EXPORTER_NEW=snmp_exporter
SNMP_EXPORTER_PORT=9116
install_snmp_exporter (){
if [ ! -d ${SNMP_EXPORTER_PREFIX} ];then
# selinux stop
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
if [ $? -eq 0 ];then
echo "download snmp_exporter"
curl -o $OPT_CATALOGUE/$SNMP_EXPORTER_GZ $SNMP_EXPORTER_URL
echo "decompression snmp_exporter"
tar -zxf $OPT_CATALOGUE/$SNMP_EXPORTER_GZ -C $OPT_CATALOGUE
echo "rechristen snmp_exporter"
mv $OPT_CATALOGUE/$SNMP_EXPORTER_DIRECTORY $SNMP_EXPORTER_PREFIX
echo "firewall snmp_exporter port"
firewall-cmd --zone=public --add-port=$SNMP_EXPORTER_PORT/tcp --permanent && firewall-cmd --reload
echo "services scenarios snmp_exporter"
cat <<'EOF'>>/usr/lib/systemd/system/snmp_exporter.service
[Unit]
Description=snmp_exporter
Documentation=https://github.com/prometheus/snmp_exporter
After=network.target
[Service]
ExecStart=/opt/snmp_exporter/snmp_exporter \
--config.file=/opt/snmp_exporter/snmp.yml \
--web.listen-address=:9116
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
echo "start snmp_exporter"
systemctl daemon-reload
systemctl enable --now snmp_exporter
echo "delete snmp_exporter"
rm -rf $OPT_CATALOGUE/$SNMP_EXPORTER_GZ
echo -e "\033[32mThe snmp_exporter Install Sussess...\033[0m"
else
echo -e "\033[33mThe snmp_exporter Install Failed...\033[0m"
exit 1
fi
else
echo -e "\033[31mThe snmp_exporter Install already...\033[0m"
fi
}
main (){
install_snmp_exporter
}
main
执行安装
bash /snmp_exporter.sh
替换snmp.yml内容信息
- /opt/snmp_exporter 目录位置
- 内容信息第一行就是,替换或者更改即可
- public_v1 认证模式
- community:snmp的认证密码
auths:
public_v1:
community: 1234.com
version: 1
public_v2:
community: 1234.com
version: 2
重启服务
systemctl restart snmp_exporter
查看采集情况
curl 'http://YOU_snmp_exporter_IP:9116/snmp?module=if_mib&target=YOU_SW_IP'
查看是否可以看到数据
- http://YOU_snmp_exporter_ip:9116
- Target #是交换机IP
- Module #是你的snmp.yml 配置文件内部定义的名称
- Auth # 认证版本
- http://192.168.11.98:9116/snmp?target=192.168.14.2&auth=public_v2&module=if_mib
Prometheus 配置文件配置
- prometheus.yml
- replacement 是snmp_exporter地址和端口
- job_name: 'snmp_exporter'
scrape_interval: 30s
scrape_timeout: 30s
static_configs:
- targets:
- 192.168.14.2
- 192.168.14.1
metrics_path: /snmp
params:
module: [if_mib]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.11.98:9116
Grafana 图像展示
Import>11169>Prometheus
- 模板下载
Import>11169>Prometheus 新版本图形显示比较完整,建议使用新版本
- 模板下载
- grafana 版本最大要求7.3.4
Import>20347>Prometheus 新版本图形显示比较完整,建议使用新版本
- Grafana 10.2.3 要求
- 模板地址