使用prometheus监控交换机设备

环境

交换机:huawei S5735
prometheus: 使用docker镜像,监听 9090 端口
granfana: 使用docker镜像,监听 3000 端口
snmp-exporter: https://github.com/prometheus/snmp_exporter下载最新版,监听 9116 端口
alertmanager: https://github.com/prometheus/alertmanager下载最新版,监听 9093, 9094 端口
下载华为交换机的mib信息:华为官方网站的软件下载可以找到

配置交换机

详细配置说明可参考官网:https://support.huawei.com/enterprise/zh/doc/EDOC1000178160/40dfdfef
进入system-view模式
system-view
开启snmp-agent:
snmp-agent
设置团体名称(有复杂性要求):
snmp-agent community read cipher Tbkswitch
开启snmp所有版本:
snmp-agent sys-info version all
设置接受snmp trap信息的服务器:
snmp-agent target-host trap address udp-domain 192.168.1.200 params securityname cipher Tbkswitch
开启snmp trap:
snmp-agent trap enable
打开snmp接口访问:
snmp-agent protocol source-status all-interface

配置服务器

安装环境和软件

安装依赖:
yum install gcc make net-snmp net-snmp-utils net-snmp-libs net-snmp-devel
测试能否获取交换机snmp信息:
snmpwalk -v 2c -c Tbkswitch 192.168.101.1
下载go:
https://golang.google.cn/dl/
拷贝到主机然后解压
添加环境变量:
vim /etc/profile
export PATH=$PATH:/app/go/bin
应用环境变量
source /etc/profile
下载snmp exporter for prometheus:
https://github.com/prometheus/snmp_exporter
拷贝到主机,然后解压:
tar zxvf snmp_exporter_xxx.tgz
进入下载的generator目录
cd /software/snmp_exporterv0.29/generator
通过rzsz工具拷贝mib文件到当前目录,解压得到MIBS目录,把目录重命名为mibs
编译generator:
make generate
重新建立一个新的generator.yml:
配置模板参考/root/go/src/github.com/prometheus/snmp_exporter/generator目录下的README.md文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
auths:
huawei_sw:
version: 2
community: Tbkswitch
modules:
huawei_mib:
walk:
- sysUpTime
- interfaces
- ifXTable
- sysDescr
- sysName
- 1.3.6.1.2.1.31.1.1.1.1
lookups:
- source_indexes: [ifIndex]
lookup: ifAlias
- source_indexes: [ifIndex]
lookup: 1.3.6.1.2.1.2.2.1.2 # ifDescr
- source_indexes: [ifIndex]
lookup: 1.3.6.1.2.1.31.1.1.1.1 # ifName
overrides:
ifAlias:
ignore: true
ifDescr:
ignore: true
ifName:
ignore: true
ifType:
type: EnumAsInfo

使用./generator生成snmp_huawei.yml:
./generator --fail-on-parse-errors generate -m ./mibs/huawei -g ./generator_huawei.yml -o ./snmp_huawei.yml
拷贝snmp_huawei.yml(本例放到/app/snmp_exporter下)
添加snmp_exporter到服务:
vim /etc/systemd/system/snmp_exporter.service

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=snmp_exporter
After=network.target

[Service]
ExecStart=/app/snmp_exporter/snmp_exporter --config.file=/app/snmp_exporter/snmp_*.yml --snmp.module-concurrency=3
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动snmp_exporter:
systemctl start snmp_exporter
查看状态和端口:
systemctl status snmp_exporter
ss -tunlp | grep snmp_exporter

tcp LISTEN 0 20480 [::]:9116 [::]:* users:((“snmp_exporter”,pid=214993,fd=3))

验证

访问http://192.168.1.200:9116 打开snmp exporter的测试页面:

显示下图就正常

在Prometheus配置文件中添加数据节点:(本例使用docker)
vim /srv/docker_data/prometheus/conf/prometheus.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
- job_name: 'TBK-S5375-CK4F'
static_configs:
- targets: ['192.168.101.1']
metrics_path: /snmp
params:
module: [huawei_mib]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 192.168.1.200:9116

重启prometheus读取新配置:
docker restart 2fc6f0e49b7c
访问http://192.168.1.200:9090/targets
可以看到刚刚添加的job_name,绿色up表示正常

ganfana添加dashboard:
登录ganfana:http://192.168.1.200:3000
通过搜索import官网的dashboard,如这里添加11169:

到此监控已配置完毕

分享到