linux下docker搭建Prometheus +SNMP Exporter +Grafana进行核心路由器交换机监控

一、安装 Docker 和 Docker Compose

https://docs.docker.com/get-docker/

bash 复制代码
# 安装 Docker
sudo apt-get update
sudo apt-get install -y docker.io

# 安装 Docker Compose
sudo apt-get install -y docker-compose

二、创建配置文件及测试平台是否正常

  • 1、选个文件夹作为自建Prometheus +SNMP Exporter +Grafana的储存目录,如/plmxs,在plmxs文件夹下创建一个 docker-compose.yml 文件

创建一个 docker-compose.yml 文件,定义 Prometheus、SNMP Exporter 和 Grafana 的容器配置。以下是一个简单的示例:

bash 复制代码
version: '3'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - /home/kali/docker/plmxs/prometheus:/etc/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'

  snmp-exporter:
    image: prom/snmp-exporter
    ports:
      - "9116:9116"
    environment:
      - SNMP_EXPORTER_TARGETS=192.168.1.1:161,192.168.1.2:161  # Replace with your device IPs

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin  # Change the password
    depends_on:
      - prometheus

这个示例配置文件中包括了 Prometheus、SNMP Exporter 和 Grafana 的基本设置。请根据实际情况修改 IP 地址、端口和其他参数。

  • 2、创建 Prometheus 配置文件
    在/home/kali/docker/plmxs/prometheus目录下创建 prometheus.yml 文件,配置 Prometheus 的监控目标。以下是一个示例,配置里面的snmp-exporter写你搭建平台的IP地址:
bash 复制代码
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'snmp-exporter'
    static_configs:
      - targets: ['snmp-exporter:9116']
  # Add more jobs for different devices if needed


  • 3、启动容器
    在包含 docker-compose.yml 文件的目录下运行以下命令启动容器:
bash 复制代码
docker-compose up -d

这会启动 Prometheus、SNMP Exporter 和 Grafana 容器。

查看下运行状态 sudo docker-compose ps -a 三个端口都正常运行了。

  • 4、访问 Grafana
    打开浏览器访问 Grafana 控制台(默认地址:http://localhost:3000/)。使用默认的用户名 admin 和密码 admin 登录。在 Grafana 中配置 Prometheus 数据源,然后创建仪表板并添加 SNMP Exporter 提供的指标。请注意,如果你的 Docker 主机不在本地,替换配置中的 IP 地址为你的 Docker 主机 IP。

    添加Prometheus数据源
    Configuration -> Data Sources ->add data source -> Prometheus
    找不到我们就直接搜索Data Sources


    直接填入Prometheus的访问地址,搞定!

三、路由器交换机配置snmp

先试试 snmpv2c

1、先创建acl

然后设置路由器交换机snmmp
snmp-agent sys-info version all 或者只启用v2版本 snmp-agent sys-info version v2
snmp-agent community read 【团体名】 acl 2001 设置只读团体名

使用linux的snmpwalk工具验证设置是否正常
snmpwalk 设备IP -c 团体名 -v 2c -c后面跟你设置的团体名 -v跟snmp版本

正常。结果发现SNMP Exporter不对,应该是需要配置snmp.yml

按照https://github.com/prometheus/snmp_exporter/tree/main/generator下载H3C的MIB自己生成snmp.yml

H3C的MIB下载

就下载个ComwareV5 v7的MIB吧

下载地址:

ComwareV5https://www.h3c.com/cn/d_200905/635750_473262_0.htm

ComwareV7https://www.h3c.com/cn/d_201806/1089291_473262_0.htm

参考文章:
https://mp.weixin.qq.com/s/qUywfXoqAvm7brXyjLYA7A SNMP Exporter手把手教学,自定义采集网络设备监控数据
https://www.runoob.com/docker/docker-compose.html docker-compose.yml 的配置

使用generator需要先把snmp_exporter下载到本地然后编译generator

Due to the dynamic dependency on NetSNMP, you must build the generator yourself.

bash 复制代码
# Debian-based distributions.
sudo apt-get install unzip build-essential libsnmp-dev # Debian-based distros
# Redhat-based distributions.
sudo yum install gcc gcc-g++ make net-snmp net-snmp-utils net-snmp-libs net-snmp-devel # RHEL-based distros

git clone https://github.com/prometheus/snmp_exporter.git
cd snmp_exporter/generator
make generator mibs

编译好后的目录

我这里是新建了个mibsc文件夹(中文意思mib生成)把运行命令git clone https://github.com/prometheus/snmp_exporter.git下载的snmp_exporter放在了这个用来生成h3c的snmp.yml文件。

这里我选择ComwareV7解压得到的MIB用编译后得到的generator进行生成snmp.yml

bash 复制代码
./generator --fail-on-parse-errors generate -m [你设备的mib解压后的路径] -g generator_h3c.yml[你写的规则] -o snmp_h3c.yml[生成的snmp.yml文件路径]
相关推荐
sj1163739403几秒前
docker-compose方式启动Kafka Sasl加密认证(无zk)
docker·kafka
likfishdn17 分钟前
Linux的文件与目录管理
linux·运维·服务器
chian-ocean36 分钟前
Linux 文件缓冲区:高效数据访问的幕后推手
linux·运维·服务器
加油=^_^=38 分钟前
【Linux】进程优先级 | 进程调度(三)
linux·运维·服务器
Dontla1 小时前
Docker run --add-host参数解析(在容器启动时向/etc/hosts文件中添加自定义的主机名与IP映射)(适用于临时调试或测试)
tcp/ip·docker·容器
西西小飞龙1 小时前
Docker和K8S中pod、services、container的介绍和关系
docker·容器·kubernetes
吃汤圆的抹香鲸1 小时前
GoLand 安装包 绿色版 Win,Mac,Linux 包含IntelliJ全家桶 专为Go语言设计的集成开发环境(IDE)
linux·windows·macos·go·intellij-idea·go1.19
追寻光1 小时前
Cannot find a valid baseurl for repo: base/7/x86_64
linux
元气满满的热码式1 小时前
Docker数据卷操作实战
linux·运维·docker·云原生·容器
kngines1 小时前
【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)
大数据·elasticsearch·docker