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"}
标签:
grafana
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
2017-11-29 Flask + WSGI + Nginx 环境