目录
一、准备工作
1.1 安装或关闭以下服务
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