下载相应交换机厂家提供的交换机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模板