我们已经将监控系统从 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绘图: