报警管理
本文从业务持续性、集群可用性、机器负载等多个维度介绍需要关注的报警项及其处理办法。
以下示例中,所有变量均以 $
为前缀,请自行根据业务环境自行替换。例如,$job_name
需替换为 Prometheus 配置中对应的 Job Name,$fe_leader
需替换为对应 Leader FE 的 IP 地址。
服务挂起报警
FE 服务挂起
PromSQL
count(up{group="fe", job="$job_name"}) >= 3
报警描述
当存活的 FE 节点个数小于该值时发送报警。您可以根据实际 FE 节点个数调整。
处理办法
尝试拉起挂掉的 FE 节点。
BE 服务挂起
PromSQL
node_info{type="be_node_num", job="$job_name",state="dead"} > 1
报警描述
当挂起的 BE 节点个数大于 1 时发送报警。
处理办法
尝试拉起挂掉的 BE 节点。问题排查参考 BE Crash 问题排查。
机器负载报警
BE CPU 报警
PromSQL
(1-(sum(rate(starrocks_be_cpu{mode="idle", job="$job_name",instance=~".*"}[5m])) by (job, instance)) / (sum(rate(starrocks_be_cpu{job="$job_name",host=~".*"}[5m])) by (job, instance))) * 100 > 90
报警描述
当 BE CPU Utilization 超过 90% 时发送报警。
处理办法
查看当下是否有大查询或者进行过大量数据导入,并发送给支持人员进行定位。
-
通过
top
命令查看进程的资源占用状况。top -Hp $be_pid
-
通过
perf
命令收集分析性能数据。# 建议执行以下命令 1-2 分钟,然后通过 CTRL+C 终止。
sudo perf top -p $be_pid -g >/tmp/perf.txt
紧急情况下,为尽快恢复服务,可尝试在保留 Stack 后重启对应的 BE 节点。此处紧急情况是指 BE 节点进程 CPU 监控持续异常打满,无法通过有效手段定位异常并降低 CPU 使用率。
内存报警
PromSQL
(1-node_memory_MemAvailable_bytes{instance=~".*"}/node_memory_MemTotal_bytes{instance=~".*"})*100 > 90
报警描述
当内存使用率超过 90% 时发送报警。
处理办法
您可以参考 内存问题排查 或者 获取 Heap Profile 排查。
- 紧急情况下,为尽快恢复服务,可尝试重启对应的 BE 服务。此处紧急情况是指 BE 节点进程内存监控持续异常打满,无法通过有效手段定位异常并降低内存使用。
- 如果是其他混合部署的服务影响了系统,紧急情况下可优先考虑终止其他服务。
磁盘报警
磁盘负载报警
PromSQL
rate(node_disk_io_time_seconds_total{instance=~".*"}[1m]) * 100 > 90
报警描述
当磁盘负载超过 90% 时发送报警。
处理办法
如果集群发送了 node_disk_io_time_seconds_total
的报警,首先需要确认业务是否存在变更。如果存在变更,需考虑能否回滚变更,维持先前的资源平衡条件。如果不存在变更或不能回滚,则需考虑是否是正常的业务增长导致需要扩容资源。您可以使用 iotop
工具分析监视磁盘 I/O 使用状况,iotop
具有与 top
相似的 UI,其中包括 pid
、user
、I/O
、进程等相关信息。除此之外,您也可以通过以下 SQL 语句获取当前系统中耗费 I/O 的 Tablet,进而定位到具体的任务和表。
-- all 表示所有服务,10 表示采集过程持续 10 秒,3 表示获取 top3 结果。
ADMIN EXECUTE ON $backend_id 'System.print(ExecEnv.io_profile_and_get_topn_stats("all", 10, 3))';
根目录空间容量报警
PromSQL
node_filesystem_free_bytes{mountpoint="/"} /1024/1024/1024 < 5
报警描述
当根目录空间容量剩余不足 5GB 时发送报警。
处理办法
通常情况下,可能占用较大空间的目录包括 /var、/opt 以及 /tmp。
您可以使用以下命令分析查看占用较多空间,并及时清理不需要的文件。
du -sh / --max-depth=1
数据盘磁盘容量报警
PromSQL
(SUM(starrocks_be_disks_total_capacity{job="$job"}) by (host, path) - SUM(starrocks_be_disks_avail_capacity{job="$job"}) by (host, path)) / SUM(starrocks_be_disks_total_capacity{job="$job"}) by (host, path) * 100 > 90
报警描述
当磁盘容量使用率超过 90% 时发送报警。
处理办法
-
查看导入数据量是否有变化。
可以关注 Grafana 监控中的
load_bytes
监控项,如果新增大量数据导入,建议您扩容系统资源。 -
查看是否有 DROP 操作。
如果数据导入量没有发生太大变化,可在系统中运行
SHOW BACKENDS
。如果返回的磁盘使用量和实际不一致,您可以通过 FE Audit Log 查看近期是否进行过 DROP DATABASE、TABLE 或者 PARTITION 的操作。