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 一键监控安装脚本

  • /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'

查看是否可以看到数据 

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 要求
  • 模板地址