一、Prometheus监控指标
-
系统级指标
- CPU使用率
node_cpu_seconds_total
:记录每个CPU核心在各种状态(如用户态、内核态、空闲态等)下花费的总时间。通过计算可以得到CPU使用率,例如可以通过查询1 - (rate(node_cpu_seconds_total{mode='idle'}[5m]))
来得到过去5分钟内非空闲CPU时间占比,即CPU使用率。
- 内存使用
node_memory_MemTotal_bytes
和node_memory_MemFree_bytes
:分别表示系统总的内存量和空闲的内存量。可以通过1-(node_memory_MemFree_bytes/node_memory_MemTotal_bytes)
来计算内存使用率。
- 磁盘I/O
node_disk_io_time_seconds_total
:表示磁盘I/O操作花费的总时间。指标如rate(node_disk_io_time_seconds_total[5m])
可以用于查看磁盘I/O的速率。node_disk_read_bytes_total
和node_disk_write_bytes_total
:分别记录磁盘的读字节数和写字节数总量,可用于分析磁盘读写流量。
- 网络流量
node_network_receive_bytes_total
和node_network_send_bytes_total
:分别表示网络接收和发送的字节总数。例如,rate(node_network_receive_bytes_total[5m])
可得到网络接收速率。
- CPU使用率
-
容器相关指标(如果在Kubernetes环境下)
- 容器CPU使用率
container_cpu_usage_seconds_total
:记录容器中CPU的使用时间。通过与容器的CPU请求或限制等信息结合,可以计算出容器CPU使用率。
- 容器内存使用
container_memory_usage_bytes
:表示容器当前使用的内存字节数。结合容器的内存请求等信息,可以分析容器内存使用情况。
- 容器CPU使用率
-
应用层指标(取决于应用暴露的指标)
- 对于Web应用,可能会暴露如
http_requests_total
(总的HTTP请求数量)、http_request_duration_seconds
(HTTP请求的持续时间分布)等指标。 - 对于数据库应用,像MySQL如果使用了相关的Exporter,可以暴露如
mysql_global_status_connections
(当前连接数)、mysql_global_status_queries
(总的查询数量)等指标。
- 对于Web应用,可能会暴露如
二、Grafana监控指标(实际上Grafana更多是展示Prometheus等数据源的指标)
- 可视化通用指标类型
- 时间序列数据
- Grafana擅长展示随时间变化的指标数据,如上述Prometheus提供的各种系统、容器、应用层的指标在不同时间点的值。例如,绘制一个CPU使用率随时间变化的折线图,其中时间轴(X轴)为时间,Y轴为CPU使用率(由Prometheus的相关指标计算得出)。
- 聚合指标
- 可以对多个指标进行聚合展示。比如,在一个集群环境中,将多个节点的CPU使用率进行平均,以展示整个集群的平均CPU使用率。这可以通过Grafana的查询和聚合功能,结合Prometheus的指标数据来实现。
- 分位数指标(用于性能分析)
- 对于像
http_request_duration_seconds
这样的指标,可以展示如90分位数、95分位数等。这有助于了解大部分请求的性能情况,而不是只关注平均值。例如,在Grafana中配置查询Prometheus指标的95分位数http_request_duration_seconds
,并以柱状图展示不同时间段内的95分位数情况。
- 对于像
- 时间序列数据