Prometheus监控MongoDB报警规则、MySQL报警规则、Nginx报警规则、Redis报警规则。

MongoDB报警规则

报警名称 表达式 采集数据时间(分钟) 报警触发条件
MongodbReplicationLag avg(mongodb_replset_member_optime_date{state=“PRIMARY”}) - avg(mongodb_replset_member_optime_date{state=“SECONDARY”}) > 10 5 复制延迟过长。
MongodbReplicationHeadroom (avg(mongodb_replset_oplog_tail_timestamp - mongodb_replset_oplog_head_timestamp) - (avg(mongodb_replset_member_optime_date{state=“PRIMARY”}) - avg(mongodb_replset_member_optime_date{state=“SECONDARY”}))) <= 0 5 复制余量不足。
MongodbReplicationStatus3 mongodb_replset_member_state == 3 5 复制状态为3。
MongodbReplicationStatus6 mongodb_replset_member_state == 6 5 复制状态为6。
MongodbReplicationStatus8 mongodb_replset_member_state == 8 5 复制状态为8。
MongodbReplicationStatus10 mongodb_replset_member_state == 10 5 复制状态为10。
MongodbNumberCursorsOpen mongodb_metrics_cursor_open{state=“total_open”} > 10000 5 打开数字光标数量过多。
MongodbCursorsTimeouts sum (increase increase(mongodb_metrics_cursor_timed_out_total[10m]) > 100 5 若光标超。
MongodbTooManyConnections mongodb_connections{state=“current”} > 500 5 连接过多。
MongodbVirtualMemoryUsage (sum(mongodb_memory{type=“virtual”}) BY (ip) / sum(mongodb_memory{type=“mapped”}) BY (ip)) > 3 5 虚拟内存使用率过高。

MySQL报警规则

报警名称 表达式 采集数据时间(分钟) 报警触发条件
MySQL is down mysql_up == 0 1 MySQL下线。
open files high mysql_global_status_innodb_num_open_files > (mysql_global_variables_open_files_limit) * 0.75 1 打开文件数量偏高。
Read buffer size is bigger than max. allowed packet size mysql_global_variables_read_buffer_size > mysql_global_variables_slave_max_allowed_packet 1 读取缓存区超过数据包最大限制。
Sort buffer possibly missconfigured mysql_global_variables_innodb_sort_buffer_size <2561024 or mysql_global_variables_read_buffer_size > 41024*1024 1 排序缓冲区可能存在配置错误。
Thread stack size is too small mysql_global_variables_thread_stack <196608 1 线程堆栈太小。
Used more than 80% of max connections limited mysql_global_status_max_used_connections > mysql_global_variables_max_connections * 0.8 1 使用超过80%连接限制。
InnoDB Force Recovery is enabled mysql_global_variables_innodb_force_recovery != 0 1 启用强制恢复。
InnoDB Log File size is too small mysql_global_variables_innodb_log_file_size < 16777216 1 日志文件过小。
InnoDB Flush Log at Transaction Commit mysql_global_variables_innodb_flush_log_at_trx_commit != 1 1 在事务提交时刷新日志。
Table definition cache too small mysql_global_status_open_table_definitions > mysql_global_variables_table_definition_cache 1 表定义缓存过小。
Table open cache too small mysql_global_status_open_tables >mysql_global_variables_table_open_cache * 99/100 1 表打开缓存过小。
Thread stack size is possibly too small mysql_global_variables_thread_stack < 262144 1 线程堆栈可能过小。
InnoDB Buffer Pool Instances is too small mysql_global_variables_innodb_buffer_pool_instances == 1 1 缓冲池实例过小。
InnoDB Plugin is enabled mysql_global_variables_ignore_builtin_innodb == 1 1 插件启用。
Binary Log is disabled mysql_global_variables_log_bin != 1 1 二进制日志禁用。
Binlog Cache size too small mysql_global_variables_binlog_cache_size < 1048576 1 缓存过小。
Binlog Statement Cache size too small mysql_global_variables_binlog_stmt_cache_size <1048576 and mysql_global_variables_binlog_stmt_cache_size > 0 1 声明缓存过小。
Binlog Transaction Cache size too small mysql_global_variables_binlog_cache_size <1048576 1 交易缓存过小。
Sync Binlog is enabled mysql_global_variables_sync_binlog == 1 1 二进制日志启用。
IO thread stopped mysql_slave_status_slave_io_running != 1 1 IO线程停止。
SQL thread stopped mysql_slave_status_slave_sql_running == 0 1 SQL线程停止。
Mysql_Too_Many_Connections rate(mysql_global_status_threads_connected[5m])>200 5 连接过多。
Mysql_Too_Many_slow_queries rate(mysql_global_status_slow_queries[5m])>3 5 慢查询过多。
Slave lagging behind Master rate(mysql_slave_status_seconds_behind_master[1m]) >30 1 从机表现落后于主机。
Slave is NOT read only(Please ignore this warning indicator.) mysql_global_variables_read_only != 0 1 从机权限不是只读。

Nginx报警规则

报警名称 表达式 采集数据时间(分钟) 报警触发条件
NginxHighHttp4xxErrorRate sum(rate(nginx_http_requests_total{status=~"^4…"}[1m])) / sum(rate(nginx_http_requests_total[1m])) * 100 > 5 5 HTTP 4xx错误率过高。
NginxHighHttp5xxErrorRate sum(rate(nginx_http_requests_total{status=~"^5…"}[1m])) / sum(rate(nginx_http_requests_total[1m])) * 100 > 5 5 HTTP 5xx错误率过高。
NginxLatencyHigh histogram_quantile(0.99, sum(rate(nginx_http_request_duration_seconds_bucket[30m])) by (host, node)) > 10 5 延迟过高。

Redis报警规则

报警名称 表达式 采集数据时间(分钟) 报警触发条件
RedisDown redis_up == 0 5 Redis下线。
RedisMissingMaster count(redis_instance_info{role=“master”}) == 0 5 Master缺失。
RedisTooManyMasters count(redis_instance_info{role=“master”}) > 1 5 Master过多。
RedisDisconnectedSlaves count without (instance, job) (redis_connected_slaves) - sum without (instance, job) (redis_connected_slaves) - 1 > 1 5 Slave连接断开。
RedisReplicationBroken delta(redis_connected_slaves[1m]) < 0 5 复制中断。
RedisClusterFlapping changes(redis_connected_slaves[5m]) > 2 5 副本连接识别变更。
RedisMissingBackup time() - redis_rdb_last_save_timestamp_seconds > 60 * 60 * 24 5 备份中断。
RedisOutOfMemory redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90 5 内存不足。
RedisTooManyConnections redis_connected_clients > 100 5 连接过多。
RedisNotEnoughConnections redis_connected_clients < 5 5 连接不足。
RedisRejectedConnections increase(redis_rejected_connections_total[1m]) > 0 5 连接被拒绝。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐