Prometheus常用exporter及其常用监控指标
node-exporter
常用监控指标
- CPU相关指标:
node_cpu_seconds_total{mode="idle"}
:CPU空闲时间(秒)的总和。这是评估CPU使用率的重要指标之一。node_cpu_seconds_total{mode="system"}
、node_cpu_seconds_total{mode="user"}
等:分别表示CPU在内核态和用户态的运行时间。
- 内存相关指标:
node_memory_MemTotal_bytes
:内存总量(以字节为单位)。node_memory_MemFree_bytes
:空闲内存大小(以字节为单位)。node_memory_Buffers_bytes
和node_memory_Cached_bytes
:分别表示被内核用作缓冲和缓存的内存大小。node_memory_SwapTotal_bytes
和node_memory_SwapFree_bytes
:分别表示交换空间的总大小和空闲大小。
- 磁盘相关指标:
node_filesystem_size_bytes
:文件系统的大小(以字节为单位)。node_filesystem_free_bytes
和node_filesystem_avail_bytes
:分别表示文件系统的空闲空间和非root用户可用的空间大小。node_disk_io_now
、node_disk_io_time_seconds_total
等:与磁盘I/O操作相关的指标,如当前正在进行的I/O操作数以及花费在I/O操作上的总时间。
- 网络相关指标:
node_network_receive_bytes_total
和node_network_transmit_bytes_total
:分别表示网络接口接收和发送的总字节数。这些指标对于评估网络流量和带宽使用情况非常重要。
- 系统负载相关指标:
node_load1
、node_load5
、node_load15
:分别表示系统在过去1分钟、5分钟和15分钟的平均负载。这些指标有助于了解系统的整体忙碌程度和性能表现。
要获取完整的指标列表,可以访问 node-exporter
的 metrics 端点(通常是 /metrics
)。
mysql-exporter
常用监控指标:
- MySQL 全局状态指标:
mysql_global_status_uptime
:MySQL 服务器的运行时间(以秒为单位)。mysql_global_status_threads_connected
:当前打开的连接数。mysql_global_status_threads_running
:当前正在运行的线程数。mysql_global_status_queries
:从服务器启动开始执行的查询总数。mysql_global_status_questions
:从服务器启动开始接收的客户端查询总数。
- MySQL 复制指标(如果配置了复制):
mysql_slave_status_slave_io_running
:表示 IO 线程是否正在运行(1 为运行,0 为停止)。mysql_slave_status_slave_sql_running
:表示 SQL 线程是否正在运行(1 为运行,0 为停止)。mysql_slave_status_seconds_behind_master
:从服务器相对于主服务器的延迟时间(以秒为单位)。
- InnoDB 存储引擎指标:
mysql_global_status_innodb_buffer_pool_read_requests
:InnoDB 缓冲池执行的逻辑读请求数。mysql_global_status_innodb_buffer_pool_reads
:不能满足 InnoDB 缓冲池而直接从磁盘读取的请求数。mysql_global_status_innodb_row_lock_time_avg
:平均行锁定时间(以毫秒为单位)。mysql_global_status_innodb_row_lock_time_max
:最大行锁定时间(以毫秒为单位)。
- 连接和资源使用指标:
mysql_global_variables_max_connections
:MySQL 配置的最大连接数。mysql_global_status_aborted_connects
:尝试连接到 MySQL 服务器但失败的连接数。mysql_global_status_connection_errors_total
:由于各种原因导致的连接错误总数。
- 查询缓存指标(如果启用了查询缓存):
mysql_global_status_qcache_hits
:查询缓存命中次数。mysql_global_status_qcache_inserts
:插入到查询缓存中的查询次数。mysql_global_status_qcache_not_cached
:由于查询类型或其他原因而无法缓存的查询次数。
- 其他常用指标:
mysql_exporter_last_scrape_duration_seconds
:mysql-exporter
上次抓取指标所花费的时间。mysql_exporter_scrape_errors_total
:mysql-exporter
在抓取过程中遇到的错误总数。
要获取完整的指标列表,可以访问 mysql-exporter
的 metrics 端点(通常是 /metrics
)。此外,对于特定的监控需求,可能还需要结合 MySQL 的性能和配置进行进一步的定制和选择。
redis-exporter
常用监控指标
- Redis 连接相关指标:
redis_connected_clients
:当前连接的 Redis 客户端数量。redis_connected_slaves
:当前连接的 Redis 从节点数量。redis_blocked_clients
:正在等待 Redis 的客户端数量(通常因为 BLPOP、BRPOP、BRPOPLPUSH 等命令阻塞)。
- Redis 性能相关指标:
redis_instantaneous_ops_per_sec
:每秒执行的操作数,反映 Redis 的处理速度。redis_latency_spike_duration_seconds
:最近一次延迟峰值持续了多长时间(秒),这是检测性能问题的一个标志。
- 内存使用相关指标:
redis_mem_used_bytes
:Redis 使用的内存大小(字节)。redis_mem_fragmentation_ratio
:内存碎片率,当该值远大于 1 时,表示存在较多的内存碎片。redis_evicted_keys_total
:由于 maxmemory 限制而被淘汰的 key 的总数量。redis_expired_keys_total
:已过期的 key 的总数量。
- 持久性相关指标:
redis_rdb_last_save_time_seconds
:自从 Redis 服务器启动以来,最后一次 RDB 持久化的 UNIX 时间戳。redis_rdb_changes_since_last_save
:自从最后一次 RDB 持久化以来,数据库发生的改变次数。redis_aof_current_size_bytes
:当前 AOF 文件的大小(字节)。redis_aof_last_rewrite_time_seconds
:上一次 AOF 重写操作的耗时(秒)。
- 其他常用指标:
redis_uptime_in_seconds
:Redis 自启动以来的运行时间(秒)。redis_keyspace_hits_total
和redis_keyspace_misses_total
:键空间命中和未命中的总数,这些可以帮助了解缓存的效率。
blackbox-exporter
常用监控指标
- HTTP指标:
http_status_code
:HTTP响应状态码,如200、404、500等。http_content_length
:HTTP响应内容长度。http_request_duration_seconds
:HTTP请求延迟。http_ssl_expiry_seconds
:HTTPS证书过期时间。
- DNS指标:
dns_lookup_time_seconds
:DNS查询时间。dns_lookup_error
:DNS查询是否出错。
- TCP指标:
tcp_connect_time_seconds
:TCP连接时间。tcp_connection_refused
:TCP连接是否被拒绝。
- ICMP指标:
icmp_response
:ICMP响应是否正常,通常用于检测远程主机是否在线(存活状态)。
kafka-exporter
常用监控指标
Kafka集群和Broker相关指标
kafka_cluster_id
:Kafka集群的唯一标识符。kafka_broker_id
:Broker的唯一标识符。kafka_broker_version
:Kafka Broker的版本号。kafka_controller_count
:集群中控制器的数量。kafka_broker_requests_total
:Broker接收到的请求总数。
主题和分区相关指标
kafka_topic_partitions_count
:每个主题的分区数量。kafka_topic_partition_current_offset
:每个分区的当前偏移量。kafka_topic_partition_leader_replica_count
:每个分区的Leader副本数量。kafka_topic_partition_isr_replica_count
:每个分区的ISR(In-Sync Replicas)副本数量。kafka_topic_partition_replica_count
:每个分区的副本总数。kafka_topic_partition_under_replicated_partitions
:分区副本数量少于期望值的分区数。
生产者相关指标
kafka_producer_request_rate
:生产者发送请求的速率。kafka_producer_request_size_max
:生产者发送的最大请求大小。kafka_producer_record_send_rate
:生产者发送记录的速率。kafka_producer_record_errors_total
:生产者发送失败的消息数量。kafka_producer_batch_size_avg
:生产者批处理大小的平均值。
消费者相关指标
kafka_consumer_group_current_offset
:消费者组在每个分区上的当前偏移量。kafka_consumer_group_lag
:消费者组在每个分区上的滞后量(即当前偏移量与最后一条消息的偏移量之差)。kafka_consumer_group_membership_count
:每个消费者组中的消费者成员数量。kafka_consumer_fetch_rate
:消费者从Broker拉取消息的速率。kafka_consumer_fetch_size_bytes
:消费者从Broker拉取消息的大小(以字节为单位)。
复制和同步相关指标
kafka_replica_fetch_manager_max_lag
:每个副本的最大滞后量。kafka_replica_fetch_manager_min_fetch_rate
:副本拉取的最小速率。kafka_replica_leader_elections_per_sec
:每秒发生的Leader选举次数。
请注意,以上指标列表并不完整,Kafka Exporter可能还提供了其他更详细的监控指标。你可以根据实际需求选择关注哪些指标,并在Prometheus中进行相应的配置和查询。同时,确保Kafka Exporter已经正确配置并运行,以便能够收集到这些指标数据。
Spring Boot Actuator
常用监控指标
Spring Boot Actuator是一个用于暴露应用程序自身信息的模块,它可以提供一系列生产就绪的端点,这些端点可以用于监视和管理Spring Boot应用程序。通过Actuator,您可以轻松地获取应用程序的运行时信息,如健康状态、性能指标、环境属性、系统属性等。
以下是一些常见的可以通过 /actuator/prometheus
监控的指标类型:
- 系统指标:
- CPU 使用率
- 内存使用情况(堆内存、非堆内存、JVM内存池等)
- 系统负载
- 磁盘空间和使用情况
- 网络I/O
- 文件描述符使用
- 线程状态和数量
- 垃圾回收活动
- 应用指标:
- HTTP 请求的计数、速率、延迟和百分位数
- 数据库连接的池使用情况、查询次数和性能
- 消息队列的消费和生产速率
- 缓存命中率、大小和驱逐次数
- 调度任务的执行情况和延迟
- 外部API调用的次数、失败率和延迟
- 业务指标:
- 用户注册、登录和会话数
- 订单处理速率和失败率
- 购物车放弃率
- 页面浏览量和跳出率
- 任何与你的业务逻辑直接相关的自定义指标
- 健康指标:
- 数据库连接健康状态
- 外部服务可达性(如API网关、认证服务等)
- 磁盘空间不足警告
- 应用程序内部特定组件的健康检查(如缓存服务、消息队列等)
- 自定义指标:
- 你可以定义自己的度量来监控应用程序中任何重要的方面。
Prometheus监控Spring Boot应用的方式主要有以下几种:
- 使用Spring Boot Actuator提供的监控功能:首先,在Spring Boot程序中加入
spring-boot-starter-actuator
依赖。这样,Spring Boot在运行时就会自动放开/actuator/health
和/actuator/info
这两个endpoint,我们就可以通过这两个endpoint查看当前Spring Boot运行的情况。然后,Prometheus可以通过这些endpoint来拉取Spring Boot应用的指标数据。 - 集成micrometer-registry-prometheus:这是一种更为专业和详细的监控方式。你需要确保你的Spring Boot和micrometer的版本号相互兼容。然后,你可以使用micrometer提供的各种监控功能来收集Spring Boot应用的指标数据,并通过Prometheus的pull机制来获取这些数据。
- 使用Prometheus的push gateway:虽然Prometheus主要是基于pull模型来获取数据的,但你也可以通过Prometheus的push gateway来实现push效果。这在你需要主动推送数据到Prometheus时非常有用。
spring-boot-starter-actuator主要提供了基本的监控和管理功能,包括暴露应用程序的各种信息;
micrometer-registry-prometheus则是更具体的一个实现,它将Micrometer的指标暴露给Prometheus,以实现与Prometheus的集成和更深入的监控。
在实际项目中,通常会根据具体需求来决定是否需要同时引入这两个模块。如果只需要基本的监控功能,那么引入spring-boot-starter-actuator可能就足够了;如果需要与Prometheus进行集成以实现更深入的监控,那么还需要引入micrometer-registry-prometheus。
总的来说,Prometheus监控Spring Boot应用的方式主要取决于你的具体需求和你的应用环境。你可以根据自己的情况选择最适合你的方式来进行监控。同时,Prometheus还提供了丰富的查询语言和图形化界面,可以帮助你更好地分析和展示监控数据。
本文来自博客园,作者:dashery,转载请注明原文链接:https://www.cnblogs.com/ydswin/p/18067146