SNMP导出器(prometheus)+扩展OID

时间:2018-03-28 14:11:26

标签: monitoring snmp prometheus

我是Prometheus的新手,我试图监控我使用snmp_exporter创建的一些扩展OID,但它并没有像预期的那样工作。

我的脚本只是做了一个"回显$ VALUE" (值是整数或字符串)。

我有这个snmpd.conf:

extend value-return-test /usr/local/bin/script.sh

我生成了他的OID:

snmpwalk -v2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendResult.\"value-return-test\" -On

现在我能够获得所有snmp扩展链接到我的配置:

snmpwalk -v2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects |grep value-return-test

现在,这是我的prometheus配置prometheus.yml:

global:
  scrape_interval: 5s

  - job_name: 'snmp'
    metrics_path: /snmp
    params:
      module: [tests]
    static_configs:
      - targets:
        - 127.0.0.1  # SNMP device - add your IPs here
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - target_label: __address__
        replacement: 127.0.0.1:9116  # SNMP exporter.

和我的snmp.yaml:

tests:
  walk:
  - 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.1
  - 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.2
  metrics:
  - name: snmp_test1
    oid: 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.1
    type: DisplayString
    indexes:
    - labelname: ifIndex
      type: Integer32
  - name: snmp_test2
    oid: 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.2
    type: DisplayString
    indexes:
    - labelname: ifIndex
      type: Integer32

使用该配置,我无法在页面http://localhost:9116/snmp?target=127.0.0.1&module=tests上获得我的价值:

# HELP snmp_scrape_duration_seconds Total SNMP time scrape took (walk and processing).
# TYPE snmp_scrape_duration_seconds gauge
snmp_scrape_duration_seconds 0.004676028
# HELP snmp_scrape_pdus_returned PDUs returned from walk.
# TYPE snmp_scrape_pdus_returned gauge
snmp_scrape_pdus_returned 0
# HELP snmp_scrape_walk_duration_seconds Time SNMP walk/bulkwalk took.
# TYPE snmp_scrape_walk_duration_seconds gauge
snmp_scrape_walk_duration_seconds 0.004477656

但是,如果我将配置放入if_mib之类的其他块中,我可以获取值但是它们放在错误的位置: enter image description here

正如你所看到的,我得到了价值" 1"而不是" 6"。

我也尝试过snmp导出器生成器,但我无法构建它:

$ go build
# github.com/prometheus/snmp_exporter/generator
./net_snmp.go:6:38: fatal error: net-snmp/net-snmp-config.h: No such file or directory
compilation terminated.

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

如果您能够更改snmpd.conf,则意味着您对机器有足够的控制权来运行node exporter。我建议使用节点导出器的文本文件收集器来公开这些数据,而不是花时间搞清楚SNMP和MIB如何工作的复杂性。

一般情况下,您应该更喜欢节点/ WMI导出器,而不是使用SNMP。

答案 1 :(得分:0)

使用get参数代替walk对我有用。

tests:
  get:
  - 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.1
  - 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.2
  metrics:
  - name: snmp_test1
    oid: 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.1
    type: DisplayString
    indexes:
    - labelname: ifIndex
      type: Integer32
  - name: snmp_test2
    oid: 1.3.6.1.4.1.8072.1.3.2.4.1.2.23.109.97.105.108.45.113.117.101.117.101.45.115.101.110.100.105.110.103.45.114.97.116.101.2
    type: DisplayString
    indexes:
    - labelname: ifIndex
      type: Integer32