让我们在 Prometheus/Grafana 中收集 Catalyst 的流量数据

我决定用Prometheus获取Cisco Catalyst2960-8的流量数据。

以下是环境的详细信息:
– MacBookPro(macOS10.14.6)
– WS-C2960-8TC-L(12.2(53)SE2 LANBASE)
– Ubuntu 18.04.2
– DockerCE
– docker-compose

这次的目标只是获取流量数据,所以常用的node-exporter和AlertManager将在下次机会中考虑。立即使用docker-compose进行操作。

参考来源是”在docker中运行Prometheus的SNMP Exporter”,但更准确地说几乎是一模一样的。。。

version: '3'
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus-data:/prometheus
    ports:
      - 9090:9090
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    volumes:
      - ./grafana-data:/var/lib/grafana
    ports:
      - 3000:3000
  snmp-exporter:
    image: prom/snmp-exporter:latest
    container_name: snmp-exporter
    volumes:
      - ./snmp.yml:/etc/snmp_exporter/snmp.yml
    ports:
      - 9116:9116

由于在容器的持续存储区域中指定的每个设置文件(*.yml)不存在,所以会导致各种启动问题,因此需要创建这些文件。


global:
#  scrape_interval: 15s
  scrape_interval: 1s
  external_labels:
    monitor: 'codelab_monitor'

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:9090']

  - job_name: 'snmp-exporter'
    static_configs:
      - labels:
          type: cisco
        targets:
          - '192.168.0.110'
#      - labels:
#          type: ubuntu
#        targets:
#          - '192.168.0.111'
    metrics_path: /snmp
    relabel_configs:
      - source_labels: [__address__]
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - source_labels: [type]
        target_label: __param_module
      - target_label: __address__
        replacement: '192.168.0.111:9116'

snmp.yml将按以下方式创建。

cisco:
  walk:
  - 1.3.6.1.2.1.2.2.1.16
  - 1.3.6.1.2.1.2.2.1.20
  - 1.3.6.1.2.1.31.1.1.1.1
  - 1.3.6.1.4.1.9.9.109.1.1.1.1.6
  metrics:
  - name: ifOutOctets
    oid: 1.3.6.1.2.1.2.2.1.16
    type: counter
    indexes:
    - labelname: ifName
      type: gauge
    lookups:
    - labels:
      - ifName
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifOutErrors
    oid: 1.3.6.1.2.1.2.2.1.20
    type: counter
    indexes:
    - labelname: ifName
      type: gauge
    lookups:
    - labels:
      - ifName
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: cpmCPUTotal5secRev
    oid: 1.3.6.1.4.1.9.9.109.1.1.1.1.6
    type: gauge
    indexes:
    - labelname: cpmCPUTotalIndex
      type: gauge
  version: 2
  auth:
    community: public

#ubuntu:
#  walk:
#  - 1.3.6.1.2.1.2.2.1.10
#  - 1.3.6.1.2.1.2.2.1.14
#  metrics:
#  - name: ifInOctets
#    oid: 1.3.6.1.2.1.2.2.1.10
#    type: counter
#    indexes:
#    - labelname: ifIndex
#      type: gauge
#  - name: ifInErrors
#    oid: 1.3.6.1.2.1.2.2.1.14
#    type: counter
#    indexes:
#    - labelname: ifIndex
#      type: gauge
#  version: 2
#  auth:
#    community: public
スクリーンショット 2019-10-24 23.08.05.png

等我有空了会写Grafana的w

「在2019年11月10日的追記中」,我提到了「使用Blackbox技术进行生死监控」。

bannerAds