prometheus snmp采集网络设备数据


一、准备工作

1.1 安装或关闭以下服务

关闭防火墙等
linux时间校对

1.2 本次安装环境

配置信息说明
服务器IP地址192.168.1.10
交换机IP地址192.168.10.1
上网行为管理IP地址192.168.20.1
系统版本CentOS7.4
内核ml-3.10.0
go版本1.19.4

在本次安装前,先安装好prometheus+grafana。
prometheus+grafana安装文档

二、安装snmp_exporter

2.1 下载并解压

wget -c https://github.com/prometheus/snmp_exporter/releases/download/v0.18.0/snmp_exporter-0.18.0.linux-amd64.tar.gz
tar xf snmp_exporter-0.18.0.linux-amd64.tar.gz 

2.2配置

mv snmp_exporter-0.18.0.linux-amd64 /home/snmp_exporter   #修改文件名称
cd /home/snmp_exporter/         
 ./snmp_exporter    #启动snmp_exporter

2.3配置service

 vim /usr/lib/systemd/system/snmp_exporter.service
 [Unit]
Description=snmp_exporter
After=network.target

[Service]
ExecStart=/home/snmp_exporter/snmp_exporter \
--config.file=/home/snmp_exporter/snmp.yml
Restart=on-failure

[Install]
WantedBy=multi-user.target

2.4其他及测试

systemctl daemon-reload       #重新加载服务配置文件
systemctl start snmp_exporter.service  #启动该服务
systemctl enable snmp_exporter.service #开机自启
systemctl  restart snmp_exporter    #重启该服务

访问测试http://192.168.1.10:9116/
在这里插入图片描述

三、go环境配置

由于Prometheus使用go语言开发,自己编译生成snmp_exporter文件需要go环境。

3.1下载并解压

cd /home/
wget https://dl.google.com/go/go1.19.4.linux-amd64.tar.gz
tar xf go1.19.4.linux-amd64.tar.gz 

3.2配置

mkdir /usr/local/gocode         #创建文件
mv go /usr/local/     
vim /etc/profile       #添加文件最后
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gocode
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH

source /etc/profile   #保存配置
go version    #安装好后查看版本,判断是否安装成功
go version go1.19.4 linux/amd64

3.3安装依赖

yum  install gcc gcc-g++ make net-snmp net-snmp-utils net-snmp-libs net-snmp-devel -y

3.4编译snmp.yml

git clone https://github.com/prometheus/snmp_exporter.git 
go env -w GO111MODULE=on    #GO111MODULE开启
go env -w GOPROXY=https://goproxy.cn,direct     #选择国内代理
cd /snmp_exporter/generator               
go build
make mibs       #生成mibs后,将交换机、防火墙、上网行为管理等设备MIB文件上传到该文件夹
vim generator.yml    #将所需要监控的项添加进去
modules:
  SW:              #需要和prometheus.yml的module一致,多个设备可调用同一个模块
    walk:
      - 1.3.6.1.2.1.2.2.1                     #接口当前接收和发送报文流量统计信息
      - 1.3.6.1.2.1.1.3                       #从系统网管部分启动以来运行的时间
      - 1.3.6.1.2.1.1.5                       #设备名称
      - 1.3.6.1.2.1.2.2.1.8                   #接口当前的状态
      - 1.3.6.1.4.1.2011.5.25.41.1.7.1.1.8    #入方向带宽占用率
      - 1.3.6.1.2.1.31.1.1.1.6                #接口上接收到的字节总数,包括成帧的字符
      - 1.3.6.1.2.1.31.1.1.1.10               #接口发送的字节总数,包括成帧字符
      - 1.3.6.1.2.1.31.1.1.1.1                #由本地设备分配的接口名
      - 1.3.6.1.2.1.31.1.1.1.18               #该节点是由网络管理员指定的接口别名
      - 1.3.6.1.4.1.2011.5.25.41.1.7.1.1.8    #入方向带宽占用率
      - 1.3.6.1.4.1.2011.5.25.41.1.7.1.1.10   #出方向带宽占用率
      - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5    #CPU利用率
      - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7    #内存利用率
      - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11   #温度
      - 1.3.6.1.2.1.31.1.1.1.6              #接口上接收到的字节总数,包括成帧的字符
      - sysUpTime  

    version: 2
    auth:
      community: test     #snmp团体号

  sanfor:       #用于上网行为管理
    walk:
      - sysUpTime
      - sysName
      - ifMtu
      - interfaces
      - ifDescr
      - ifIndex
      - ifType
      - ifPhysAddress
      - ipNetToMediaType
      - ifOutUcastPkts
      - ifOutOctets
      - ifInOctets

    version: 2
    auth:
      community: test
export MIBDIRS=mibs      
./generator generate     #编译成功后,会自动生成snmp.yml文件
mv snmp.yml /home/snmp_exporter/snmp.yml  #将snmp.yml文件传到snmp_exporter安装目录下
systemctl  restart snmp_exporter   #重启该服务

3.5测试

snmpwalk -v 2c -c test 192.168.10.1 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5       #test是交换机snmp团体号,192.168.10.1是交换机地址 后续数字是oid

3.6配置prometheus.yml

vim /usr/local/prometheus/prometheus.yml 
scrape_configs:
   - job_name: 'prometheus'
     static_configs:
       - targets: ["192.168.1.10:9100"]        #prometheus安装服务器

   - job_name: 'SW'
     scrape_interval: 30s
     static_configs:
       - targets: ["192.168.10.1"]       #被监控交换机
       - targets: ["192.168.10.2"]       #如果有其他交换机,且型号一致可以用一个模块
     metrics_path: /snmp
     params:
       module: [SW]         #需要和
     relabel_configs:
       - source_labels: [__address__]
         target_label: __param_target
       - source_labels: [__param_target]
         target_label: instance
       - target_label: __address__
         replacement: 192.168.1.10:9116      #snmp_exporter服务器地址
         
   - job_name: "ShangWxingXingWeiGL"
     scrape_interval: 30s
     static_configs:
       - targets: ["192.168.20.1"]
     metrics_path: /snmp
     params:
       module: [sanfor]
     relabel_configs:
       - source_labels: [__address__]
         target_label: __param_target
       - source_labels: [__param_target]
         target_label: instance
       - target_label: __address__
         replacement: 192.168.1.10:9116
systemctl  restart snmp_exporter #配置完毕后重启该服务,访问192.168.1.10:9090,选择status→targets查看

在这里插入图片描述

PS:没有调通显示红色。

四、其他

4.1go报错

在本次安装时,go环境安装各种报错,部分忘记记录。

go build时报错
/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/ld: /tmp/go-link-3620805256/000005.o: unrecognized relocation (0x2a) in section `.text'
/usr/bin/ld: final link failed: 错误的值
collect2: 错误:ld 返回 1
以上报错,查看binutils版本是否过低,过低需要安装新版本,本次安装时,升级binutils解决该报错

4.2 ./generator generate编译报错

这一步报错,一般是generator.yml文件添加的oid参数和mibs里不一致导致。删除报错项后编译成功。

4.3工具推荐

MIB Browser查看设备mid
在这里插入图片描述

BPSNMPUtil 查看设备mib
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值