我们已经将监控系统从 zabbix 替换为prometheus, 之前通过snmp很方便的采集到网络设备的指标,改用prometheus后,建议使用 snmp_exporter 来采集数据。
官网提供的那个snmp_exporter默认的模板,不满足我们netscaler的监控需求。我们需要自己改改。
提醒: 建议非netscaler设备请先用官方模板,如果采集不到数据,再考虑去自己修改。
具体操作如下:
参考文档:
https://github.com/prometheus/snmp_exporter/tree/master/generator#file-format
https://github.com/prometheus/snmp_exporter/tree/master/generator#building
https://docs.citrix.com/en-us/netscaler-sd-wan/9-3/standard-mib-support.html
1、准备go语言环境(安装过程忽略,我这里gopath在 /home/gocode)
export GOPATH=/home/gocode/
cd /home/gocode/src/github.com/prometheus
git clone https://github.com/prometheus/snmp_exporter.git
cd snmp_exporter
cd generator/
go build
make mibs
然后,切换到 mibs 目录下
cd mibs/
将 https://docs.citrix.com/en-us/netscaler-sd-wan/9-3/standard-mib-support.html 这里页面里面的 N多个MIB文件(都是些txt文件),使用wget 下载到mibs这个目录下
然后,开始编辑 generator.yml 文件:
vim generator.yml 修改后,修改后的文件内容如下:
modules:
ns:
walk:
- 1.3.6.1.4.1.5951.4.1
version: 2
max_repetitions: 25
retries: 3
timeout: 10s
auth:
community: genghis
完成后,执行下面的编译生成 适配的snmp.yml文件
export MIBDIRS=mibs
./generator generate
完成后,就在当前目录下看到一个 snmp.yml 文件,内容大致这样的:
启动:
./snmp_exporter --config.file="snmp.yml" --web.listen-address=":9988" 然后,自行检查是否有采集到netscaler的数据
然后,到prometheus里面,增加相关的target,大致类似这样:
- job_name: 'netscaler_1_snmp'
static_configs:
- targets:
- 2.3.4.5
metrics_path: /snmp
scrape_interval: 60s
scrape_timeout: 30s
params:
module: [ns]
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 1.2.3.4:9988
最终采集到的数据后,我们到grafana绘图: