涛子 - 简单就是美

成单纯魁增,永继振国兴,克复宗清政,广开家必升

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

https://nightingaledvs.com/how-to-use-grafana-for-data-visualization/
https://blog.csdn.net/qq_37767455/article/details/122140474

1.安装

docker run --name snmp-exporter --restart=always -d -p 9116:9116 -v /etc/snmp_exporter/snmp.yml:/etc/snmp_exporter/snmp.yml     prom/snmp-exporter

docker run --name ipmi-exporter --restart=always -u root -d -p 9290:9290 -v /etc/ipmi_exporter/ipmi_remote.yml:/etc/config.yml:ro     prometheuscommunity/ipmi-exporter '--config.file=/etc/config.yml'

docker run --name prometheus --restart=always -d -p 9090:909 -v /etc/prometheus:/etc/prometheus prom/prometheus

docker run --name grafana --restart=always -d  -u root -p 3000:3000 -v /data/grafana:/var/lib/grafana grafana/grafana

2.配置文件
/etc/ipmi_exporter/ipmi_remote.yml

modules:
    default:
        user: "ipmi"
        pass: "ipmi"
        driver: "LAN_2_0"
        privilege: "user"
        timeout: 10000
        collectors:
        - bmc
        - ipmi
        - chassis
        exclude_sensor_ids:
            #- 2
            #- 29
            #- 32
            #- 50
            #- 52
            #- 55

/etc/snmp_exporter/snmp.yml

# WARNING: This file was auto-generated using snmp_exporter generator, manual changes will be lost.
huawei_usg6331e:
  walk:
  - 1.3.6.1.2.1.2.2.1.1
  - 1.3.6.1.2.1.2.2.1.2
  - 1.3.6.1.2.1.2.2.1.8
  - 1.3.6.1.2.1.31.1.1.1.1
  - 1.3.6.1.2.1.31.1.1.1.10
  - 1.3.6.1.2.1.31.1.1.1.15
  - 1.3.6.1.2.1.31.1.1.1.6
  - 1.3.6.1.2.1.47.1.1.1.1.2
  - 1.3.6.1.2.1.47.1.1.1.1.5
  - 1.3.6.1.2.1.47.1.1.1.1.7
  - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11
  - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5
  - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7
  get:
  - 1.3.6.1.2.1.1.1.0
  - 1.3.6.1.2.1.1.3.0
  - 1.3.6.1.2.1.1.5.0
  metrics:
  - name: sysDescr
    oid: 1.3.6.1.2.1.1.1
    type: DisplayString
    help: A textual description of the entity - 1.3.6.1.2.1.1.1
  - name: sysUpTime
    oid: 1.3.6.1.2.1.1.3
    type: gauge
    help: The time (in hundredths of a second) since the network management portion
      of the system was last re-initialized. - 1.3.6.1.2.1.1.3
  - name: sysName
    oid: 1.3.6.1.2.1.1.5
    type: DisplayString
    help: An administratively-assigned name for this managed node - 1.3.6.1.2.1.1.5
  - name: ifIndex
    oid: 1.3.6.1.2.1.2.2.1.1
    type: gauge
    help: A unique value, greater than zero, for each interface - 1.3.6.1.2.1.2.2.1.1
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifDescr
    oid: 1.3.6.1.2.1.2.2.1.2
    type: DisplayString
    help: A textual string containing information about the interface - 1.3.6.1.2.1.2.2.1.2
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifOperStatus
    oid: 1.3.6.1.2.1.2.2.1.8
    type: gauge
    help: The current operational state of the interface - 1.3.6.1.2.1.2.2.1.8
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
    enum_values:
      1: up
      2: down
      3: testing
      4: unknown
      5: dormant
      6: notPresent
      7: lowerLayerDown
  - name: ifHCOutOctets
    oid: 1.3.6.1.2.1.31.1.1.1.10
    type: counter
    help: The total number of octets transmitted out of the interface, including framing
      characters - 1.3.6.1.2.1.31.1.1.1.10
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifHighSpeed
    oid: 1.3.6.1.2.1.31.1.1.1.15
    type: gauge
    help: An estimate of the interface's current bandwidth in units of 1,000,000 bits
      per second - 1.3.6.1.2.1.31.1.1.1.15
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifHCInOctets
    oid: 1.3.6.1.2.1.31.1.1.1.6
    type: counter
    help: The total number of octets received on the interface, including framing
      characters - 1.3.6.1.2.1.31.1.1.1.6
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: hwEntityTemperature
    oid: 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11
    type: gauge
    help: This object indicates the entity temperature - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11
    indexes:
    - labelname: entPhysicalIndex
      type: gauge
  - name: hwEntityCpuUsage
    oid: 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5
    type: gauge
    help: This object indicates the CPU usage of an entity - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5
    indexes:
    - labelname: entPhysicalIndex
      type: gauge
  - name: hwEntityMemUsage
    oid: 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7
    type: gauge
    help: This object indicates the memory usage of an entity, that is, the percentage
      of the memory that has been used. - 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7
    indexes:
    - labelname: entPhysicalIndex
      type: gauge
  version: 3
  max_repetitions: 3
  retries: 3
  timeout: 25s
  auth:
    security_level: authPriv
    username: sipo
    password: myPassword
    auth_protocol: SHA256
    priv_protocol: AES256
    priv_password: myPassword
inspur_s6550:
  walk:
  - 1.3.6.1.2.1.2.2.1.1
  - 1.3.6.1.2.1.2.2.1.2
  - 1.3.6.1.2.1.2.2.1.8
  - 1.3.6.1.2.1.31.1.1.1.1
  - 1.3.6.1.2.1.31.1.1.1.10
  - 1.3.6.1.2.1.31.1.1.1.15
  - 1.3.6.1.2.1.31.1.1.1.6
  - 1.3.6.1.2.1.47.1.1.1.1.2
  - 1.3.6.1.2.1.47.1.1.1.1.5
  - 1.3.6.1.2.1.47.1.1.1.1.7
  get:
  - 1.3.6.1.2.1.1.1.0
  - 1.3.6.1.2.1.1.3.0
  - 1.3.6.1.2.1.1.5.0
  metrics:
  - name: sysDescr
    oid: 1.3.6.1.2.1.1.1
    type: DisplayString
    help: A textual description of the entity - 1.3.6.1.2.1.1.1
  - name: sysUpTime
    oid: 1.3.6.1.2.1.1.3
    type: gauge
    help: The time (in hundredths of a second) since the network management portion
      of the system was last re-initialized. - 1.3.6.1.2.1.1.3
  - name: sysName
    oid: 1.3.6.1.2.1.1.5
    type: DisplayString
    help: An administratively-assigned name for this managed node - 1.3.6.1.2.1.1.5
  - name: ifIndex
    oid: 1.3.6.1.2.1.2.2.1.1
    type: gauge
    help: A unique value, greater than zero, for each interface - 1.3.6.1.2.1.2.2.1.1
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifOperStatus
    oid: 1.3.6.1.2.1.2.2.1.8
    type: gauge
    help: The current operational state of the interface - 1.3.6.1.2.1.2.2.1.8
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
    enum_values:
      1: up
      2: down
      3: testing
      4: unknown
      5: dormant
      6: notPresent
      7: lowerLayerDown
  - name: ifHCOutOctets
    oid: 1.3.6.1.2.1.31.1.1.1.10
    type: counter
    help: The total number of octets transmitted out of the interface, including framing
      characters - 1.3.6.1.2.1.31.1.1.1.10
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifHighSpeed
    oid: 1.3.6.1.2.1.31.1.1.1.15
    type: gauge
    help: An estimate of the interface's current bandwidth in units of 1,000,000 bits
      per second - 1.3.6.1.2.1.31.1.1.1.15
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifHCInOctets
    oid: 1.3.6.1.2.1.31.1.1.1.6
    type: counter
    help: The total number of octets received on the interface, including framing
      characters - 1.3.6.1.2.1.31.1.1.1.6
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  version: 3
  max_repetitions: 3
  retries: 3
  timeout: 25s
  auth:
    security_level: authPriv
    username: sipo
    password: myPassword
    auth_protocol: SHA
    priv_protocol: DES
    priv_password: myPassword
inspur_s6820:
  walk:
  - 1.3.6.1.2.1.2.2.1.1
  - 1.3.6.1.2.1.2.2.1.2
  - 1.3.6.1.2.1.2.2.1.8
  - 1.3.6.1.2.1.31.1.1.1.1
  - 1.3.6.1.2.1.31.1.1.1.10
  - 1.3.6.1.2.1.31.1.1.1.15
  - 1.3.6.1.2.1.31.1.1.1.6
  - 1.3.6.1.2.1.47.1.1.1.1.2
  - 1.3.6.1.2.1.47.1.1.1.1.5
  - 1.3.6.1.2.1.47.1.1.1.1.7
  get:
  - 1.3.6.1.2.1.1.1.0
  - 1.3.6.1.2.1.1.3.0
  - 1.3.6.1.2.1.1.5.0
  metrics:
  - name: sysDescr
    oid: 1.3.6.1.2.1.1.1
    type: DisplayString
    help: A textual description of the entity - 1.3.6.1.2.1.1.1
  - name: sysUpTime
    oid: 1.3.6.1.2.1.1.3
    type: gauge
    help: The time (in hundredths of a second) since the network management portion
      of the system was last re-initialized. - 1.3.6.1.2.1.1.3
  - name: sysName
    oid: 1.3.6.1.2.1.1.5
    type: DisplayString
    help: An administratively-assigned name for this managed node - 1.3.6.1.2.1.1.5
  - name: ifIndex
    oid: 1.3.6.1.2.1.2.2.1.1
    type: gauge
    help: A unique value, greater than zero, for each interface - 1.3.6.1.2.1.2.2.1.1
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifDescr
    oid: 1.3.6.1.2.1.2.2.1.2
    type: DisplayString
    help: A textual string containing information about the interface - 1.3.6.1.2.1.2.2.1.2
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifOperStatus
    oid: 1.3.6.1.2.1.2.2.1.8
    type: gauge
    help: The current operational state of the interface - 1.3.6.1.2.1.2.2.1.8
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
    enum_values:
      1: up
      2: down
      3: testing
      4: unknown
      5: dormant
      6: notPresent
      7: lowerLayerDown
  - name: ifHCOutOctets
    oid: 1.3.6.1.2.1.31.1.1.1.10
    type: counter
    help: The total number of octets transmitted out of the interface, including framing
      characters - 1.3.6.1.2.1.31.1.1.1.10
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifHighSpeed
    oid: 1.3.6.1.2.1.31.1.1.1.15
    type: gauge
    help: An estimate of the interface's current bandwidth in units of 1,000,000 bits
      per second - 1.3.6.1.2.1.31.1.1.1.15
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  - name: ifHCInOctets
    oid: 1.3.6.1.2.1.31.1.1.1.6
    type: counter
    help: The total number of octets received on the interface, including framing
      characters - 1.3.6.1.2.1.31.1.1.1.6
    indexes:
    - labelname: ifIndex
      type: gauge
    lookups:
    - labels:
      - ifIndex
      labelname: ifDescr
      oid: 1.3.6.1.2.1.2.2.1.2
      type: DisplayString
    - labels:
      - ifIndex
      labelname: ifName
      oid: 1.3.6.1.2.1.31.1.1.1.1
      type: DisplayString
  version: 3
  max_repetitions: 3
  retries: 3
  timeout: 25s
  auth:
    security_level: authPriv
    username: sipo
    password: myPassword
    auth_protocol: SHA
    priv_protocol: AES
    priv_password: myPassword

prometheus配置文件
1.prometheus.yml

# Prometheus全局配置项
global:
  scrape_interval:     10s # 设定抓取数据的周期,默认为1min
  evaluation_interval: 10s # 设定更新rules文件的周期,默认为1min
  scrape_timeout: 10s      # 设定抓取数据的超时时间,默认为10s
  external_labels:         # 额外的属性,会添加到拉取得数据并存到数据库中

# Alertmanager配置
alerting:
 alertmanagers:
 - static_configs:
   - targets: ["192.168.10.181:9093"] # 设定alertmanager和prometheus交互的接口,即alertmanager监听的ip地址和端口
     
# rule配置,首次读取默认加载,之后根据evaluation_interval设定的周期加载
rule_files:
 - "/etc/prometheus/rules/*.yml"

# scape配置
scrape_configs:
- job_name: snmp
  scrape_interval: 60s
  scrape_timeout: 10s
  file_sd_configs:
  - files:
    - /etc/prometheus/snmp_device.yml
  metrics_path: /snmp
  params:
    module:
      - if_mib   # 指定默认采集 MIB 模块的名称
  relabel_configs:
    - source_labels:
      - __address__
      target_label: __param_target
    - source_labels:
      - __param_target
      target_label: instance
    - replacement: 192.168.10.30:9116
      target_label: __address__
    - source_labels:  # 从目标中获取MIB模块名称
      - mib
      target_label: __param_module

- job_name: ipmi
  params:
    module: ['default']
  scrape_interval: 60s
  scrape_timeout: 10s
  metrics_path: /ipmi
  scheme: http
  file_sd_configs:
  - files:
    - /etc/prometheus/ipmi_device.yml
    refresh_interval: 5m
  relabel_configs:
  - source_labels: [__address__]
    separator: ;
    regex: (.*)
    target_label: __param_target
    replacement: ${1}
    action: replace
  - source_labels: [__param_target]
    separator: ;
    regex: (.*)
    target_label: instance
    replacement: ${1}
    action: replace
  - separator: ;
    regex: .*
    target_label: __address__
    replacement: 192.168.10.30:9290
    action: replace

#remote_write:
#- url: http://192.168.100.181:9201/write
#remote_read:
#- url: http://192.168.100.181:9201/read

2.snmp_device.yml

[
  {
    "targets": [
      "192.168.254.254"
    ],
    "labels": {
      "mib": "huawei_usg6331e",
      "instance": "usg6331e"
    }
  },
  {
    "targets": [
      "192.168.254.2"
    ],
    "labels": {
      "mib": "inspur_s6820",
      "instance": "s6820-1"
    }
  },
  {
    "targets": [
      "192.168.254.3"
    ],
    "labels": {
      "mib": "inspur_s6820",
      "instance": "s6820-2"
    }
  },
  {
    "targets": [
      "192.168.254.4"
    ],
    "labels": {
      "mib": "inspur_s6550",
      "instance": "s6550-ipmi"
    }
  }
]

3.ipmi_device.yml

[
  {
    "targets": [
      "192.168.99.25"
    ],
    "labels": {
      "hostname": "srv-25"
    }
  },
  {
    "targets": [
      "192.168.99.26"
    ],
    "labels": {
      "hostname": "srv-26"
    }
  },
  {
    "targets": [
      "192.168.99.27"
    ],
    "labels": {
      "hostname": "srv-27"
    }
  },
  {
    "targets": [
      "192.168.99.28"
    ],
    "labels": {
      "hostname": "srv-28"
    }
  },
  {
    "targets": [
      "192.168.99.31"
    ],
    "labels": {
      "hostname": "srv-31"
    }
  },
  {
    "targets": [
      "192.168.99.32"
    ],
    "labels": {
      "hostname": "srv-32"
    }
  },
  {
    "targets": [
      "192.168.99.33"
    ],
    "labels": {
      "hostname": "srv-33"
    }
  }
]

3.grafana画图

网络设备(snmp)
1. 防火墙
# 图表类型Cauge
cpu & mem 
max(hwEntityCpuUsage)
max(hwEntityMemUsage)

# 图表类型Time Series
trafficIn & trafficOut  
rate(ifHCInOctets{ifDescr="GigabitEthernet0/0/8", instance="192.168.254.254"}[5m])*8
rate(ifHCOutOctets{ifDescr="GigabitEthernet0/0/8", instance="192.168.254.254"}[5m])*8*-1

2. 交换机 
# 图表类型Table
irate(ifHCInOctets{instance="192.168.254.2", ifDescr=~"eth-0-1|eth-0-2|eth-0-3|eth-0-4|eth-0-5|eth-0-6|eth-0-7|eth-0-19|eth-0-20|eth-0-21|eth-0-22|eth-0-23|eth-0-24"}[5m])*8

irate(ifHCOutOctets{instance="192.168.254.2", ifDescr=~"eth-0-1|eth-0-2|eth-0-3|eth-0-4|eth-0-5|eth-0-6|eth-0-7|eth-0-19|eth-0-20|eth-0-21|eth-0-22|eth-0-23|eth-0-24"}[5m])*8

ifOperStatus{instance="192.168.254.2", ifDescr=~"eth-0-1|eth-0-2|eth-0-3|eth-0-4|eth-0-5|eth-0-6|eth-0-7|eth-0-19|eth-0-20|eth-0-21|eth-0-22|eth-0-23|eth-0-24"}-0

ifHighSpeed{instance="192.168.254.2", ifDescr=~"eth-0-1|eth-0-2|eth-0-3|eth-0-4|eth-0-5|eth-0-6|eth-0-7|eth-0-19|eth-0-20|eth-0-21|eth-0-22|eth-0-23|eth-0-24"}-0

服务器设备(ipmi)
# 图表类型Table
ipmi_power_watts{instance="$instance"}
ipmi_fan_speed_rpm{instance="$instance",name!="FAN_M2_Speed"}
ipmi_temperature_celsius{instance="$instance"}
ipmi_sensor_state{instance="$instance",type="Processor"}
ipmi_sensor_state{instance="$instance",type="Memory",name=~"CPU[0-1]_C[0-1]D0"}
ipmi_sensor_state{instance="$instance",type="Drive Slot",name=~"DISK([0-9]|10|11)_Status"}
posted on 2021-11-29 13:49  北京涛子  阅读(84)  评论(0编辑  收藏  举报