普罗米修斯prometheus+grafana+snmp_exporter监控华为网络设备

下载相应交换机厂家提供的交换机mib文件,如我的交换机是华为S5700交换机,我需要到华为官网上找到S5700型号的mib文件并下载。地址:https://support.huawei.com/enterprise/zh/switches/s5700-pid-6691579/software/253350029?idAbsPath=fixnode01%7C24030814%7C21782164%7C21782167%7C22318564%7C6691579

一、配置交换机

[SW]snmp-agent #开启snmp-agent
[SW]snmp-agent community read Zabbix@123 #设置团体名称(有复杂性要求)
[SW]snmp-agent sys-info version all #开启snmp所有版本
[SW]snmp-agent target-host trap address udp-domain 30.0.0.180 udp-port 9116 params securityname Zabbix@123 v2c #设置接受snmp trap信息的服务以及使用v2c版本
[SW]snmp-agent trap enable #开启snmp trap

二、配置服务器

1、安装依赖模块

yum install -y epel-release
yum  install git -y
yum group install -y "Development Tools"
yum install -y wget net-snmp net-snmp-utils net-snmp-libs net-snmp-devel golang p7zip*

2、测试能否获取交换机snmp信息(zabbix@123是团体名,.1表示查看所有信息)

snmpwalk -v 2c -c zabbix@123 40.1.0.254 .1
可以获取

3、安装go1.15.8语言环境,由于Prometheus使用go语言开发的,所以自己编译生成snmp_exporter的配置文件需要go环境。
先卸载原先的go,然后安装并设置安装路径PATH,最后go env有输出则成功。

[root@MonitorServer ~]# rm -rf /usr/local/go
[root@MonitorServer ~]# yum remove go*
[root@MonitorServer ~]# wget https://golang.google.cn/dl/go1.15..linux-amd64.tar.gz
[root@MonitorServer ~]# tar -xzf go1.15.8.linux-amd64.tar.gz -C /usr/local
[root@MonitorServer ~]# ln -s /usr/local/go/bin/* /usr/bin/
[root@MonitorServer ~]# go version
go version go1.15.8 linux/amd64
[root@MonitorServer ~]# mkdir -p $HOME/go-work/src
[root@MonitorServer ~]# mkdir -p $HOME/go-work/pkg
[root@MonitorServer ~]# mkdir -p $HOME/go-work/bin
[root@MonitorServer ~]# echo "export GOROOT=/usr/local/go">>$HOME/.bashrc
[root@MonitorServer ~]# echo "export GOPATH=$HOME/go-work">>$HOME/.bashrc
[root@MonitorServer ~]# echo "export PATH=$PATH:$GOROOT/bin:$GOPATH/bin">>$HOME/.bashrc
[root@MonitorServer ~]# source $HOME/.bashrc
[root@MonitorServer ~]# go env

4、git snmp_exporter

[root@MonitorServer ~]# cd /opt/
[root@MonitorServer opt]# git clone https://github.com/prometheus/snmp_exporter.git

6、修改go环境变量国内代理地址

[root@MonitorServer opt]# go env -w GO111MODULE=on
[root@MonitorServer opt]# go env -w GOPROXY=https://goproxy.cn,direct

7、获取snmp-exporter源码包,包括generator源码包。

[root@MonitorServer opt]# go get github.com/prometheus/snmp_exporter/generator

8、build generator

[root@MonitorServer opt]# go get github.com/prometheus/snmp_exporter/generator
[root@MonitorServer opt]# cd snmp_exporter/generator/
[root@MonitorServer generator]#
 go build

9、进入generator目录,无须执行make mibs,只需将下载得mib文件目录上传,把目录重命名为mibs

10、 编译generator.yml生成snmp.yml

  • walk下面写的是你需要查询的信息对应的oid,这个像华为交换机都是可以在原厂文档上查的到的;
  • 还有一点就是community这个要写自己设置的团体名的,如果不知道可以自己手动设置一个,我这里设置的是zabbix@123
  • 其他的地方基本不需要修改,huawei_mib这个也可以改,后面使用snmp查的时候、写prometheus配置文件的时候对应也写自己刚刚修改的mib名称就好。

generator.yml文件参考:

modules:
  # Default IF-MIB interfaces table with ifIndex.
  huawei_mib:
    walk: 
      - sysUpTime
      - interfaces
      - ifXTable
      - sysDescr
      - sysName
      - 1.3.6.1.2.1.31.1.1.1.1
      - 1.3.6.1.4.1.2011.5.25.38
      - 1.3.6.1.2.1.80
      - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.2 #实体操作状态
      - 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.10 #实体启动时间
      - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11 #实体温度
      - 1.3.6.1.2.1.80.1.2.1.4 #测试的目的地址
    version: 
    auth:
      community: zabbix@123
    lookups:
      - source_indexes: [ifIndex]
        lookup: ifAlias
      - source_indexes: [ifIndex]
        # Uis OID to avoid conflict with PaloAlto PAN-COMMON-MIB.
        lookup: 1.3.6.1.2.1.2.2.1.2 # ifDescr
      - source_indexes: [ifIndex]
        # Use OID to avoid conflict with Netscaler NS-ROOT-MIB.
        lookup: 1.3.6.1.2.1.31.1.1.1.1 # ifName
    overrides:
      ifAlias:
        ignore: true # Lookup metric
      ifDescr:
        ignore: true # Lookup metric
      ifName:
        ignore: true # Lookup metric
      ifType:
        type: EnumAsInfo

11、执行编译generator.yml生成snmp.yml文件

[root@MonitorServer generator]# export MIBDIRS=mibs
[root@MonitorServer generator]# ./generator generate
#如果mib库文件、自己写的generator.yml文件也没问题正常,会生成一个snmp.yml文件
[root@MonitorServer generator]# mv snmp.yml .. #将新生成得snmp.yml替换原来的

12、启动snmp_exporter服务,并设置开机自启服务

[root@MonitorServer ~]# cd /opt/snmp_exporter/
[root@MonitorServer snmp_exporter]# ./snmp_exporter 
#如果文件目录没有snmp_exporter程序就手动下载并上传上去,下载链接:https://github.com/prometheus/snmp_exporter/releases
#设置开机自启服务
[root@MonitorServer ~]# vi /usr/lib/systemd/system/snmp_exporter.service #添加以下内容

[Unit]
Description=snmp_exporter
After=network.target

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

[Install]
WantedBy=multi-user.target

[root@MonitorServer ~]# systemctl daemon-reload
[root@MonitorServer ~]# systemctl start snmp_exporter.service
[root@MonitorServer ~]# systemctl status snmp_exporter.service
[root@MonitorServer ~]# systemctl enable snmp_exporter.service

13、测试snmp_exporter是否能够采集到数据
Target填写交换机ip地址
Module是写的自己在2.5步设置的mib名称

采集结果(部分展示)

三、修改prometheus.yml配置文件

[root@MonitorServer snmp_exporter]# vi /opt/prometheus/prometheus.yml #添加以下内容

  - job_name: 'node_prometheus'
    scrape_interval: 10s
    static_configs:
    - targets: ['localhost:9100']
      labels:
        instance: node-prometheus

  - job_name: 'snmp'
    # 采集超时:10s
    scrape_interval: 10s
    static_configs:
      - targets:
        - 40.1.0.4  #交换机ip
        - 40.1.0.11  #交换机ip
        - 40.1.0.12  #交换机ip
        - 40.1.0.13  #交换机ip
        - 40.1.0.15  #交换机ip
        - 40.1.0.16  #交换机ip
        - 40.1.0.17  #交换机ip
        - 40.1.0.18  #交换机ip
        - 40.1.0.19  #交换机ip
        - 40.1.0.1  #交换机ip
    metrics_path: /snmp
    params:
      module: [huawei_mib]  #修改成自己设置的mib名称
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: localhost:9116  # 安装snmp_exporter主机的ip和端口号

[root@MonitorServer snmp_exporter]# systemctl status prometheus #重启服务

浏览器访问http://30.0.0.180:9090/targets 查看snmp监控信息

四、配置Grafana可视化
如果想查更多的信息,基本上的流程就是:将需要查询的交换机信息oid加入到generator.yml文件—-重新编译generator.yml文件生成snmp.yml文件—替换原来的snmp.yml文件—重启snmp_exporter。

引用11169模板

普罗米修斯prometheus+grafana+snmp_exporter监控华为网络设备
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇