首页 / 最佳实践 / 配置数据服务自定义告警指标

配置数据服务自定义告警指标

本节列举了数据服务组件常用的自定义告警指标及其表达式,可用于实现更全面的性能监控和告警。

注意与建议

阅读本最佳实践前,您应大概了解平台通用的 创建告警策略 操作。当您开始为数据服务各组件配置自定义告警指标时,请注意以下事项:

常用指标及表达式

MySQL

本节所列指标的监控对象均为 MySQL 节点。如果希望监控 MySQL 集群,需要去除 service_name 变量,并增加 sum 函数,例如下图表示将对 MySQL 集群的排序行数进行告警。

PXC 架构

MGR 架构

指标名称 表达式
响应最大连接数 max_over_time(mysql_global_status_max_used_connections{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
使用连接数 max_over_time(mysql_global_status_threads_connected{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
运行线程数 max_over_time(mysql_global_status_threads_running{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
立即释放的表锁数量 irate(mysql_global_status_table_locks_immediate{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
表锁等待次数 irate(mysql_global_status_table_locks_waited{service="有状态副本集",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
慢查询数 irate(mysql_global_status_slow_queries{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
排序行数 irate(mysql_global_status_sort_rows{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
innodb 读请求数 irate(mysql_global_status_innodb_buffer_pool_read_requests{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
innodb 写请求数 irate(mysql_global_status_innodb_buffer_pool_write_requests{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称"}[5m])
delete 语句数 irate(mysql_global_status_commands_total{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称",command="delete"}[5m])
insert 语句数 irate(mysql_global_status_commands_total{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称",command="insert"}[5m])
replace 语句数 irate(mysql_global_status_commands_total{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称",command="replace"}[5m])
select 语句数 irate(mysql_global_status_commands_total{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称",command="select"}[5m])
update 语句数 irate(mysql_global_status_commands_total{service="有状态副本集名称",namespace="命名空间",service_name="MySQL 容器组名称",command="update"}[5m])

Redis

本节所列指标的监控对象均为 Redis 节点。如果希望监控 Redis 集群,需要去除 pod 变量,并增加 sum 函数,例如下图表示将对 Redis 集群客户端连接数进行告警。

哨兵模式

集群模式

Redis 容器组命名规则:drc-{实例名称}-{有序数字}-{有序数字},例如 rfr-sentinel-0-1

指标名称 表达式
客户端连接数 redis_connected_clients{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}
内存使用情况 redis_memory_used_bytes{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"})
redis 流入字节数 rate(redis_net_input_bytes_total{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}[1m])
redis 流出字节数 rate(redis_net_output_bytes_total{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}[1m])
key 过期数 irate(redis_expired_keys_total{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}[1m])
请求键被命中的次数 redis_keyspace_hits_total{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}
处理请求总数 irate(redis_commands_processed_total{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}[1m])
key 驱逐数 irate(redis_evicted_keys_total{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}[1m])
慢日志数量 rate(redis_slowlog_length{service="有状态副本集名称(哨兵模式) 或 实例名称(集群模式)",namespace="命名空间",pod="redis 容器组名称"}[1m])

Kafka

本节所列指标的监控对象均为 Kafka 节点。如果希望监控 Kafka 集群,需要去除 pod 变量,并增加 sum 函数,例如下图表示将对 Kakfa 集群的在线 broker 数进行告警。

指标名称 表达式
在线 broker 数 kafka_server_replicamanager_leadercount{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}
活跃控制器数 kafka_controller_kafkacontroller_activecontrollercount{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}
争议的 leader 选举次数 irate(kafka_controller_controllerstats_uncleanleaderelections_total{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}[5m])
分区数量 kafka_server_replicamanager_partitioncount{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}
输入的流量 irate(kafka_server_brokertopicmetrics_bytesin_total{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}[1m])
输出的流量 irate(kafka_server_brokertopicmetrics_bytesout_total{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}[1m])
消息写入总量 irate(kafka_server_brokertopicmetrics_messagesin_total{service="有状态副本集名称",namespace="命名空间",pod="Kafka 容器组名称"}[1m])

RabbitMQ

本节所列指标的监控对象均为 RabbitMQ 节点。如果希望监控 RabbitMQ 集群,需要去除 pod 变量,并增加 sum 函数,例如下图表示将对 RabbitMQ 集群的队列数进行告警。

RabbitMQ 容器组命名规则:{RabbitMQ 实例名称}-server-{有序数字},例如 rabbitmq-server-0

指标名称 表达式
流入消息数 rate(rabbitmq_channel_messages_published_total[60s]) * on(instance) group_left(rabbitmq_cluster) rabbitmq_identity_info{rabbitmq_cluster="实例名称", namespace="命名空间",pod="RabbitMQ 容器组名称"}
连接数 rabbitmq_connections * on(instance) group_left(rabbitmq_cluster) rabbitmq_identity_info{rabbitmq_cluster="实例名称", namespace="命名空间",pod="RabbitMQ 容器组名称"}
信道数 rabbitmq_channels * on(instance) group_left(rabbitmq_cluster) rabbitmq_identity_info{rabbitmq_cluster="实例名称", namespace="命名空间",pod="RabbitMQ 容器组名称"}
队列数 rabbitmq_queues * on(instance) group_left(rabbitmq_cluster) rabbitmq_identity_info{rabbitmq_cluster="实例名称", namespace="命名空间",pod="RabbitMQ 容器组名称"}