---
apiVersion: v1
data:
config.yaml: |
Server:
port: "9001"
# release / debug / test
mode: "release"
MySQL:
host: w8t-mysql
port: 3306
user: root
pass: w8t.123
dbName: watchalert
timeout: 10s
Redis:
host: w8t-redis
port: 6379
pass: ""
database: 0
Jwt:
# 失效时间
expire: 18000
Ldap:
enabled: false
# LDAP 服务地址
address: "192.168.1.100:399"
# 基础 DN
baseDN: "dc=test,dc=com"
# admin DN
adminUser: "cn=admin,dc=test,dc=com"
# admin 密码
adminPass: "test123."
# 用户 DN
userDN: "ou=people,dc=test,dc=com"
# 用户 DN 前缀
userPrefix: "uid"
# 默认用户角色
defaultUserRole: "ur-cq7nkj1d6gviooaigqi0"
# 定时任务,用于同步 LDAP 用户到W8T
cronjob: "*/1 * * * *"
kind: ConfigMap
metadata:
name: w8t-config
namespace: tools
---
apiVersion: v1
data:
auto_import.sh: >
#!/bin/bash
mysql -h ${MYSQL_HOST} -u root -p${MYSQL_ROOT_PASSWORD}
--default-character-set=utf8mb4 -D ${MYSQL_DATABASE} <
/sql/notice_template_examples.sql
mysql -h ${MYSQL_HOST} -u root -p${MYSQL_ROOT_PASSWORD}
--default-character-set=utf8mb4 -D ${MYSQL_DATABASE} <
/sql/rule_template_groups.sql
mysql -h ${MYSQL_HOST} -u root -p${MYSQL_ROOT_PASSWORD}
--default-character-set=utf8mb4 -D ${MYSQL_DATABASE} <
/sql/rule_templates.sql
mysql -h ${MYSQL_HOST} -u root -p${MYSQL_ROOT_PASSWORD}
--default-character-set=utf8mb4 -D ${MYSQL_DATABASE} < /sql/tenants.sql
mysql -h ${MYSQL_HOST} -u root -p${MYSQL_ROOT_PASSWORD}
--default-character-set=utf8mb4 -D ${MYSQL_DATABASE} <
/sql/tenants_linked_users.sql
notice_template_examples.sql: "use watchalert;\nINSERT ignore INTO watchalert.notice_template_examples (id,name,description,template,enable_fei_shu_json_card,template_firing,template_recover,notice_type) VALUES\n\t ('nt-cqh3uppd6gvj2ctaqd60','飞书通知模版','发送飞书的普通消息模版','{{- define \"Title\" -}}\n{{- if not .IsRecovered -}}\n【报警中】- WatchAlert 业务系统 \U0001F525\n{{- else -}}\n【已恢复】- WatchAlert 业务系统 ✨\n{{- end -}}\n{{- end }}\n\n{{- define \"TitleColor\" -}}\n{{- if not .IsRecovered -}}\nred\n{{- else -}}\ngreen\n{{- end -}}\n{{- end }}\n\n{{ define \"Event\" -}}\n{{- if not .IsRecovered -}}\n**\U0001F916 报警类型:** ${rule_name}\n**\U0001FAE7 报警指纹:** ${fingerprint}\n**\U0001F4CC 报警等级:** ${severity}\n**\U0001F5A5 报警主机:** ${metric.instance}\n**\U0001F558 开始时间:** ${first_trigger_time_format}\n**\U0001F464 值班人员:** ${duty_user}\n**\U0001F4DD 报警事件:** ${annotations}\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- else -}}\n**\U0001F916 报警类型:** ${rule_name}\n**\U0001FAE7 报警指纹:** ${fingerprint}\n**\U0001F4CC 报警等级:** ${severity}\n**\U0001F5A5 报警主机:** ${metric.instance}\n**\U0001F558 开始时间:** ${first_trigger_time_format}\n**\U0001F558 恢复时间:** ${recover_time_format}\n**\U0001F464 值班人员:** ${duty_user}\n**\U0001F4DD 报警事件:** ${annotations}\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- end -}}\n{{ end }}\n\n{{- define \"Footer\" -}}\n\U0001F9D1\U0001F4BB WatchAlert - 运维团队\n{{- end }}',0,'','','FeiShu'),\n\t ('nt-cqh4361d6gvj80netqk0','飞书卡片通知模版','发送飞书的高级消息卡片模版','',1,'{\n \"elements\": [\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001FAE7 报警指纹:**\\n${fingerprint}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n },\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F916 报警类型:**\\n${rule_name}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F4CC 报警等级:**\\n${severity}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n },\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F558 开始时间:**\\n${first_trigger_time_format}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F464 值班人员:**\\n${duty_user}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n },\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F5A5 报警主机:**\\n${metric.instance}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F4DD 报警事件:**\\n${annotations}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"hr\",\n \"flexMode\": \"\",\n \"background_style\": \"\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": null,\n \"elements\": null\n },\n {\n \"tag\": \"note\",\n \"flexMode\": \"\",\n \"background_style\": \"\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": null,\n \"elements\": [\n {\n \"tag\": \"plain_text\",\n \"content\": \"\U0001F9D1\U0001F4BB WatchAlert - 运维团队\"\n }\n ]\n }\n ],\n \"header\": {\n \"template\": \"red\",\n \"title\": {\n \"content\": \"【报警中】- WatchAlert 业务系统 \U0001F525\",\n \"tag\": \"plain_text\"\n }\n },\n \"tag\": \"\"\n}','{\n \"elements\": [\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001FAE7 报警指纹:**\\n${fingerprint}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n },\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F916 报警类型:**\\n${rule_name}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F4CC 报警等级:**\\n${severity}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n },\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F558 开始时间:**\\n${first_trigger_time_format}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F558 恢复时间:**\\n${recover_time_format}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n },\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F5A5 报警主机:**\\n${metric.instance}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F464 值班人员:**\\n${duty_user}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"column_set\",\n \"flexMode\": \"none\",\n \"background_style\": \"default\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": [\n {\n \"tag\": \"column\",\n \"width\": \"weighted\",\n \"weight\": 1,\n \"vertical_align\": \"top\",\n \"elements\": [\n {\n \"tag\": \"div\",\n \"text\": {\n \"content\": \"**\U0001F4DD 报警事件:**\\n${annotations}\",\n \"tag\": \"lark_md\"\n }\n }\n ]\n }\n ],\n \"elements\": null\n },\n {\n \"tag\": \"hr\",\n \"flexMode\": \"\",\n \"background_style\": \"\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": null,\n \"elements\": null\n },\n {\n \"tag\": \"note\",\n \"flexMode\": \"\",\n \"background_style\": \"\",\n \"text\": {\n \"content\": \"\",\n \"tag\": \"\"\n },\n \"actions\": null,\n \"columns\": null,\n \"elements\": [\n {\n \"tag\": \"plain_text\",\n \"content\": \"\U0001F9D1\U0001F4BB WatchAlert - 运维团队\"\n }\n ]\n }\n ],\n \"header\": {\n \"template\": \"green\",\n \"title\": {\n \"content\": \"【已恢复】- WatchAlert 业务系统 ✨\",\n \"tag\": \"plain_text\"\n }\n },\n \"tag\": \"\"\n}','FeiShu'),\n\t ('nt-cqh4599d6gvj80netql0','邮件通知模版','发送邮件的普通消息模版','{{ define \"Event\" -}}\n{{- if not .IsRecovered -}}\n
==========告警通知==========
\n\U0001F916 报警类型: ${rule_name}
\n\U0001FAE7 报警指纹: ${fingerprint}
\n\U0001F4CC 报警等级: ${severity}
\n\U0001F5A5 报警主机: ${metric.node_name}
\n\U0001F9DA 容器名称: ${metric.pod}
\n☘️ 业务环境: ${metric.namespace}
\n\U0001F558 开始时间: ${first_trigger_time_format}
\n\U0001F464 值班人员: ${duty_user}
\n\U0001F4DD 报警事件: ${annotations}
\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- else -}}\n==========恢复通知==========
\n\U0001F916 报警类型: ${rule_name}
\n\U0001FAE7 报警指纹: ${fingerprint}
\n\U0001F4CC 报警等级: ${severity}
\n\U0001F5A5 报警主机: ${metric.node_name}
\n\U0001F9DA 容器名称: ${metric.pod}
\n☘️ 业务环境: ${metric.namespace}
\n\U0001F558 开始时间: ${first_trigger_time_format}
\n\U0001F558 恢复时间: ${recover_time_format}
\n\U0001F464 值班人员: ${duty_user}
\n\U0001F4DD 报警事件: ${annotations}
\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- end -}}\n{{ end }}',0,'','','Email'),\n\t ('nt-crscirlvi7nhfu2tpf00','钉钉通知模版','发送钉钉的普通消息模版','{{- define \"Title\" -}}\n{{- if not .IsRecovered -}}\n【报警中】- WatchAlert 业务系统 \U0001F525\n{{- else -}}\n【已恢复】- WatchAlert 业务系统 ✨\n{{- end -}}\n{{- end }}\n\n{{- define \"TitleColor\" -}}\n{{- if not .IsRecovered -}}\nred\n{{- else -}}\ngreen\n{{- end -}}\n{{- end }}\n\n{{ define \"Event\" -}}\n{{- if not .IsRecovered -}}\n**\U0001F916 报警类型:** ${rule_name}\n**\U0001FAE7 报警指纹:** ${fingerprint}\n**\U0001F4CC 报警等级:** ${severity}\n**\U0001F5A5 报警主机:** ${metric.instance}\n**\U0001F558 开始时间:** ${first_trigger_time_format}\n**\U0001F464 值班人员:** ${duty_user}\n**\U0001F4DD 报警事件:** ${annotations}\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- else -}}\n**\U0001F916 报警类型:** ${rule_name}\n**\U0001FAE7 报警指纹:** ${fingerprint}\n**\U0001F4CC 报警等级:** ${severity}\n**\U0001F5A5 报警主机:** ${metric.instance}\n**\U0001F558 开始时间:** ${first_trigger_time_format}\n**\U0001F558 恢复时间:** ${recover_time_format}\n**\U0001F464 值班人员:** ${duty_user}\n**\U0001F4DD 报警事件:** ${annotations}\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- end -}}\n{{ end }}\n\n{{- define \"Footer\" -}}\n\U0001F9D1\U0001F4BB WatchAlert - 运维团队\n{{- end }}',0,'','','DingDing'),\n\t ('nt-cte1re5vi7ngs77mh190','企微通知模版','发送企业微信的普通消息模版','{{- define \"Title\" -}}\n{{- if not .IsRecovered -}}\n【报警中】- WatchAlert 业务系统 \U0001F525\n{{- else -}}\n【已恢复】- WatchAlert 业务系统 ✨\n{{- end -}}\n{{- end }}\n\n{{- define \"TitleColor\" -}}\n{{- if not .IsRecovered -}}\nred\n{{- else -}}\ngreen\n{{- end -}}\n{{- end }}\n\n{{ define \"Event\" -}}\n{{- if not .IsRecovered -}}\n>**\U0001F916 报警类型:** ${rule_name}\n>**\U0001FAE7 报警指纹:** ${fingerprint}\n>**\U0001F4CC 报警等级:** ${severity}\n>**\U0001F5A5 报警主机:** ${metric.instance}\n>**\U0001F558 开始时间:** ${first_trigger_time_format}\n>**\U0001F464 值班人员:** ${duty_user}\n>**\U0001F4DD 报警事件:** ${annotations}\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- else -}}\n>**\U0001F916 报警类型:** ${rule_name}\n>**\U0001FAE7 报警指纹:** ${fingerprint}\n>**\U0001F4CC 报警等级:** ${severity}\n>**\U0001F5A5 报警主机:** ${metric.instance}\n>**\U0001F558 开始时间:** ${first_trigger_time_format}\n>**\U0001F558 恢复时间:** ${recover_time_format}\n>**\U0001F464 值班人员:** ${duty_user}\n>**\U0001F4DD 报警事件:** ${annotations}\n[查看事件](http://localhost:3000/events?query=${rule_name})\n{{- end -}}\n{{ end }}\n\n{{- define \"Footer\" -}}\n\U0001F9D1\U0001F4BB WatchAlert - 运维团队\n{{- end }}',0,'','','WeChat');\n"
rule_template_groups.sql: "use watchalert;\nINSERT ignore INTO watchalert.rule_template_groups (name,`number`,description,`type`) VALUES\n\t ('APISIX',0,'APISIX指标监控','Metrics'),\n\t ('服务日志监控',0,'服务日志监控','Logs'),\n\t ('Docker',0,'Docker容器监控','Metrics'),\n\t ('ElasticSearch',0,'ElasticSearch资源监控','Metrics'),\n\t ('ETCD',0,'ETCD','Metrics'),\n\t ('Jaeger',0,'Jaeger链路监控','Traces'),\n\t ('Kafka',0,'Kafka监控','Metrics'),\n\t ('Kubernetes',0,'Kubernetes事件监控','Events'),\n\t ('KubernetesMetric',0,'Kubernetes指标监控','Metrics'),\n\t ('MongoDB',0,'MongoDB监控','Metrics');\nINSERT ignore INTO watchalert.rule_template_groups (name,`number`,description,`type`) VALUES\n\t ('MySQL',0,'MySQL资源监控','Metrics'),\n\t ('Node节点监控',0,'Node服务器监控','Metrics'),\n\t ('Redis',0,'Redis资源监控','Metrics'),\n\t ('RocketMQ',0,'RocketMQ监控','Metrics');\n"
rule_templates.sql: "use watchalert;\nINSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'APISIX',\n 'APISIX ETCD DB Total Size过大',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(etcd_mvcc_db_total_size_in_bytes / etcd_server_quota_backend_bytes) * 100',\n 'annotations', '实例:${instance},ETCD 数据库过大可能导致查询和写入操作的延迟增加,影响 APISIX 的性能。 数据库过大还可能增加 ETCD 集群的负载,导致资源消耗增加,甚至可能触发 OOM(内存溢出)等问题。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'APISIX',\n 'APISIX ETCD leader变更频繁',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'changes(etcd_server_leader_changes_seen_total{}[1h])',\n 'annotations', '实例:${instance},频繁的 leader 变更会导致配置更新延迟和性能下降。 可能引发 ETCD 的可用性问题,从而影响 APISIX 的配置同步和运行稳定性。 可能是由于网络抖动、节点故障或资源瓶颈等问题导致的,需要进一步排查。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>5')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'APISIX',\n 'APISIX ETCD 缺失leader',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum(etcd_server_is_leader{})',\n 'annotations', '实例:${instance},当缺少 leader 时,ETCD 集群将无法处理写操作,这会导致 APISIX 无法进行配置更新。 配置无法更新可能导致流量调度、插件配置等关键功能失效,直接影响业务的运行。 这种情况通常是由于 ETCD 集群的严重故障或节点失联导致的,需及时修复。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '!=1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'APISIX',\n 'APISIX ETCD连接状态',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'apisix_etcd_reachable',\n 'annotations', '实例:${instance},APISIX 无法从 Etcd 读取或写入配置信息,可能导致路由规则更新失败、服务发现异常等问题,进而影响整个 API 网关的正常运行。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '!=1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'APISIX',\n 'APISIX 每秒请求量过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'increase(apisix_http_requests_total{}[1m]) / 60',\n 'annotations', '实例:${instance},生产环境APISix服务正在经历高请求速率。每秒超过1000个请求。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>1000')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'APISIX',\n 'APISIX 活跃连接接近峰值',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum(apisix_nginx_http_current_connections{state=\"active\"})',\n 'annotations', '实例:${instance},连接数超过apisix工作节点的worker connections总数后,网关会停止工作,新的请求会被拒绝,导致业务受影响。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>135313')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Docker',\n 'Docker ContainerKilled',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'time() - container_last_seen',\n 'annotations', '容器:${instance},被意外杀死,请注意排查!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>60')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Docker',\n 'Docker容器CPU使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(sum(rate(container_cpu_usage_seconds_total{container!=\"\"}[5m])) by (pod, container) / sum(container_spec_cpu_quota{container!=\"\"}/container_spec_cpu_period{container!=\"\"}) by (pod, container) * 100)',\n 'annotations', '容器:${instance},CPU使用率过高,当前:${value}%,请注意排查!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Docker',\n 'Docker容器内存使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(sum(container_memory_working_set_bytes{name!=\"\"}) BY (instance, name) / sum(container_spec_memory_limit_bytes > 0) BY (instance, name) * 100)',\n 'annotations', '容器:${instance},内存使用率过高,当前:${value}%,请注意排查!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Docker',\n 'Docker容器存储使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(1 - (sum(container_fs_inodes_free{name!=\"\"}) BY (instance) / sum(container_fs_inodes_total) BY (instance))) * 100',\n 'annotations', '容器:${instance},存储使用率过高,当前:${value}%,请注意排查!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'ElasticSearch',\n 'ES慢查询告警',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'rate(elasticsearch_indices_search_query_time_seconds[5m])',\n 'annotations', '实例:${instance},当前:${value},慢查询占用较多计算和存储资源,可能导致其他查询任务响应变慢,影响系统的整体性能。 频繁的慢查询会增加 Elasticsearch 集群的负载,导致 CPU、内存和磁盘 I/O 的压力增大,甚至导致集群不稳定。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>0.2')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES节点CPU使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(elasticsearch_process_cpu_percent{})',\n 'annotations', '实例:${instance},当前:${value},高 CPU 使用率可能是由于高查询或写入负载、复杂的查询操作、数据压缩或解压引起的,可能导致节点性能下降、响应时间变长,甚至引发故障。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES节点堆内存使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(((elasticsearch_jvm_memory_used_bytes{area=\"heap\"} / elasticsearch_jvm_memory_max_bytes{area=\"heap\"}) * 100 ) * 100) / 100',\n 'annotations', '实例:${instance},当前:${value},内存使用率过高可能导致频繁的垃圾回收 (GC),增加延迟,甚至导致“out of memory” (OOM) 错误,使节点宕机。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES节点状态',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'elasticsearch_node_stats_up',\n 'annotations', '实例:${instance},当前:${value},节点状态不等于1可能是节点出现down机的情况,会影响到整个集群的稳定性。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '!=1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES节点磁盘使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round((100 - (elasticsearch_filesystem_data_available_bytes{}/elasticsearch_filesystem_data_size_bytes{} * 100)) * 100 ) / 100',\n 'annotations', '实例:${instance},当前:${value},磁盘空间不足会导致分片无法写入或重新分配,影响集群的正常运行,可能导致集群进入黄色或红色状态。超过 90% 时,集群可能会停止写入。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES集群写入QPS大于50',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'rate(elasticsearch_indices_indexing_index_total[5m])',\n 'annotations', '实例:${instance},当前:${value},写入 QPS 过高可能导致写入延迟增加、集群性能下降,甚至引发写入失败。大量写入请求可能导致分片分配不均、节点负载过高等问题。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>50')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES集群查询QPS大于50',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'rate(elasticsearch_indices_search_query_total[5m])',\n 'annotations', '实例:${instance},当前:${value},查询 QPS 过高可能导致查询延迟增加、响应时间变长,影响查询性能。集群的查询负载增加,可能造成节点资源紧张。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>50')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES集群状态为红色',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'elasticsearch_cluster_health_status{color=\"red\"}',\n 'annotations', '实例:${instance},红色状态表示集群中有主分片和副本分片不可用,数据丢失或无法访问。此时,部分或全部数据不可用,可能影响业务的正常运行。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ElasticSearch',\n 'ES集群状态为黄色',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'elasticsearch_cluster_health_status{color=\"yellow\"}',\n 'annotations', '实例:${instance},黄色状态表示集群中的主分片可用,但副本分片有问题,通常是由于资源不足、分片分配失败等原因。虽然数据可以读取,但副本的不可用会降低数据冗余性和容灾能力。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ETCD',\n 'Etcd大量失败的 GRPC 请求',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum(rate(grpc_server_handled_total{grpc_code!=\"OK\"}[1m])) BY (grpc_service, grpc_method) / sum(rate(grpc_server_handled_total[1m])) BY (grpc_service, grpc_method)',\n 'annotations', 'Etcd 中检测到超过 1% 的 GRPC 请求失败,当前:${value}%',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>0.01')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'ETCD',\n 'Etcd大量失败的 HTTP 请求',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum(rate(etcd_http_failed_total[1m])) BY (method) / sum(rate(etcd_http_received_total[1m])) BY (method)',\n 'annotations', 'Etcd 中检测到超过 1% 的 HTTP 故障,当前:${value}%',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>0.01')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ETCD',\n 'Etcd成员不足',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'count(etcd_server_id) % 2',\n 'annotations', 'Etcd 集群应具有奇数个成员,当前成员个数:${value}',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ETCD',\n 'Etcd无Leader',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'etcd_server_has_leader',\n 'annotations', 'Etcd 集群没有领导者',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'ETCD',\n 'Etcd频繁发生领导者变更',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'increase(etcd_server_leader_changes_seen_total[10m])',\n 'annotations', 'Etcd 领导者在 10 分钟内变更超过 2 次。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>2')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kafka',\n 'KafkaTopic偏移量过低',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'rate(kafka_topic_partition_current_offset{topic!=\"\"}[2m])',\n 'annotations', 'Kafka集群偏移量异常,当前:${value}。可能存在数据异常问题,请观察!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '< 1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kafka',\n 'KafkaTopic副本丢失',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'count(kafka_topic_partition_under_replicated_partition{topic!=\"\",partition=\"0\"}==0) by(topic,job)',\n 'annotations', 'Kafka集群节点缺失,当前:${value}个副本。当一个分区的某个副本所在的 broker 宕机、网络不可达、数据损坏或由于其他原因导致副本不可用时,就会发生副本丢失。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '<3')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kafka',\n 'Kafka节点离线告警',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'kafka_brokers',\n 'annotations', 'Kafka集群节点缺失,当前:${value}个节点。Kafka 集群中的某个节点下线,可能会导致部分分区数据无法读取或写入,并可能导致消费者或生产者请求失败。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '<3')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'KubernetesMetric',\n 'KubernetesAPI 服务器延迟',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{verb!~\"(?:CONNECT|WATCHLIST|WATCH|PROXY)\"} [10m])) WITHOUT (subresource))',\n 'annotations', 'Kubernetes API 服务器对于 ${verb} ${resource} 的第 99 个百分位延迟为 ${value} 秒。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesHPA获取外部指标失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'HPA', 'reason', 'FailedGetExternalMetric', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesHPA获取资源指标失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'HPA', 'reason', 'FailedGetResourceMetric', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'Kubernetes',\n 'KubernetesHPA调整副本数失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'HPA', 'reason', 'FailedRescale', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesNode内存压力过大',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Nodes', 'reason', 'NodeUnderMemoryPressure', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesNode磁盘压力过大',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Nodes', 'reason', 'NodeUnderDiskPressure', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesNode节点不可用',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Nodes', 'reason', 'NodeNotReady', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPod不健康',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'Unhealthy', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPod反覆崩溃',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'CrashLoopBackOff', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPod启动失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'Failed', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPod挂载卷失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'FailedMount', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPod调度失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'FailedScheduling', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPod超出运行期限',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'DeadlineExceeded', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'Kubernetes',\n 'KubernetesPod附加卷到节点失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'Pods', 'reason', 'FailedAttachVolume', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Kubernetes',\n 'KubernetesPV/PVC绑定失败',\n 'KubernetesEvent',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Events',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', 'PVC/PV', 'reason', 'FailedBinding', 'value', 1, 'filter', NULL, 'scope', 10),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'KubernetesMetric',\n 'Kubernetes客户端证书下周到期',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'apiserver_client_certificate_expiration_seconds_count{job=\"apiserver\"} > 0 and histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job=\"apiserver\"}[5m])))',\n 'annotations', 'K8s集群证书下周到期,请立即处理。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '<604800')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'KubernetesMetric',\n 'Kubernetes节点网络不可用',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'kube_node_status_condition{condition=\"NetworkUnavailable\",status=\"true\"}',\n 'annotations', '节点 ${instance},存在 NetworkUnavailable 情况',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'KubernetesMetric',\n 'Kubernetes节点超出 pod 容量',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum by (node) ((kube_pod_status_phase{phase=\"Running\"} == 1) + on(uid, instance) group_left(node) (0 * kube_pod_info{pod_template_hash=\"\"})) / sum by (node) (kube_node_status_allocatable{resource=\"pods\"}) * 100',\n 'annotations', '节点 ${instance},超出 pod 容量',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>110')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MongoDB',\n 'MongoDB副本成员复制存在延迟',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'mongodb_mongod_replset_member_optime_date{state=\"PRIMARY\"} - on (set) group_right mongodb_mongod_replset_member_optime_date{state=\"SECONDARY\"}',\n 'annotations', 'MongoDB实例:${instance} ,复制延迟过高,当前:${value}。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>10')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MongoDB',\n 'MongoDB副本成员状态异常',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'mongodb_mongod_replset_member_health',\n 'annotations', '实例:${instance} 不健康,如果副本集中有节点健康状态异常,可能会导致数据同步延迟、读写操作失败,甚至可能引发服务不可用的问题。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '!=1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MongoDB',\n 'MongoDB节点宕机',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'mongodb_up',\n 'annotations', 'MongoDB实例:${instance} ,节点宕机。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MongoDB',\n 'MongoDB连接数过多',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round((max(mongodb_connections{state=\"current\"}) by (instance,job) / sum(mongodb_connections{state=~\"current|available\"}) by (instance,job) * 100) * 100) / 100',\n 'annotations', '实例:${instance} 连接数过多,当连接数达到上限时,新的客户端连接请求将被拒绝,进而影响应用程序的正常运行,可能引发严重的系统不可用问题。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>50')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MySQL',\n 'MySQL存在慢查询',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'increase(mysql_global_status_slow_queries[1m])',\n 'annotations', 'MySQL实例:${instance},存在慢查询,当前条数:${value}。慢查询通常表明数据库中存在未优化的 SQL 操作,可能导致查询性能下降,影响整体响应时间。需要通过优化查询语句、添加索引、调整表结构或优化数据库配置来解决慢查询问题。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'MySQL',\n 'MySQL宕机',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'mysql_up',\n 'annotations', 'MySQL实例:${instance},意外宕机。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MySQL',\n 'MySQL实例发生重启',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'mysql_global_status_uptime',\n 'annotations', 'MySQL实例:${instance},发生重启。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '<60')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MySQL',\n 'MySQL连接数过多',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'max_over_time(mysql_global_status_threads_connected[1m]) / mysql_global_variables_max_connections * 100',\n 'annotations', 'MySQL实例:${instance},连接数过多,当前:${value}。连接数接近上限意味着数据库负载很高,可能导致连接请求被拒绝,影响业务操作。 连接数耗尽时,新请求会被拒绝,导致数据库不可用。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'MySQL',\n 'MySQL高线程运行',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'max_over_time(mysql_global_status_threads_running[1m]) / mysql_global_variables_max_connections * 100',\n 'annotations', '实例:${instance},当前:${value},高线程数可能导致数据库负载增加,需要检查数据库的并发操作、慢查询、事务等待等问题,优化线程池配置和查询效率。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>60')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'KubernetesMetric',\n 'Pod CPU使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round((sum(rate(container_cpu_usage_seconds_total{namespace=\"kube-system\",container!~\"^POD$\"}[5m])) by (namespace,pod,container) / sum(kube_pod_container_resource_limits{namespace=\"kube-system\",resource=\"cpu\"}) by (container,namespace,pod) * 100) * 100) / 100',\n 'annotations', 'Namespace:${namespace}\\nPod:${pod}\\nCPU使用率过高,当前:${value}%',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'KubernetesMetric',\n 'Pod 内存使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(((avg by (namespace,pod,container) (container_memory_usage_bytes{namespace=\"kube-system\",container!~\"^POD$\"}) / avg by (namespace,pod,container) (container_spec_memory_limit_bytes{namespace=\"kube-system\",container!=\"\"})) * 100) * 100) / 100',\n 'annotations', 'Namespace:${namespace}\\nPod:${pod}\\n内存使用率过高,当前:${value}%',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Redis',\n 'Redis主节点过多',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'count(redis_instance_info{role=\"master\"})',\n 'annotations', 'Redis实例:${instance},集群中有太多节点标记为主节点。!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Redis',\n 'Redis实例宕机',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'redis_up',\n 'annotations', 'Redis实例:${instance},发生宕机,请跟进排查!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Redis',\n 'Redis拒绝连接',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'increase(redis_rejected_connections_total[1m])',\n 'annotations', 'Redis实例:${instance},一些与 Redis 的连接已被拒绝。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Redis',\n 'Redis系统内存不足',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'redis_memory_used_bytes / redis_total_system_memory_bytes * 100',\n 'annotations', 'Redis实例:${instance},系统内存不足(> 80%),当前:${value}%。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'Redis',\n 'Redis缺少主节点',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(count(redis_instance_info{role=\"master\"}) or vector(0))',\n 'annotations', 'Redis实例:${instance},集群没有标记为主节点!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '<1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Redis',\n 'Redis连接数过多',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'redis_connected_clients / redis_config_maxclients * 100',\n 'annotations', 'Redis实例:${instance},连接数不足(使用率 > 90%),当前:${value}%。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'RocketMQ',\n 'RocketMQ Broker5分钟内QPS增长量过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(increase(rocketmq_broker_qps[5m]) * 100) / 100',\n 'annotations', '实例:${instance},QPS 的突然增长通常意味着突发的业务流量或异常的请求量。 如果增长过快且超出系统处理能力,可能会导致请求积压,响应时间增加,甚至服务不可用。 持续的高 QPS 可能导致资源耗尽,如 CPU、内存和 I/O 负载增高。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'RocketMQ',\n 'RocketMQ Broker5分钟内TPS增长量过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(increase(rocketmq_broker_tps[5m]) * 100) / 100',\n 'annotations', '实例:${instance},TPS 的快速增长通常意味着大量的消息发送或消费请求。这可能导致 Broker 的压力增加。 当 TPS 增长过快时,Broker 可能面临资源瓶颈(例如内存、CPU、磁盘 I/O),导致处理效率下降。 突增的 TPS 可能由于异常业务流量或系统故障,需进一步排查原因。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'RocketMQ',\n 'RocketMQ磁盘使用率过高',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum(rocketmq_brokeruntime_commitlog_disk_ratio) by (brokerIP) * 100',\n 'annotations', '实例:${instance},磁盘空间不足可能导致消息无法写入,导致消息积压,甚至服务中断。 当磁盘使用率过高时,文件系统性能也可能下降,影响读写效率。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Jaeger',\n 'Trace链路存在异常状态码',\n 'Jaeger',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Traces',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 10, 'tags', '%7B\\\"http.status_code\\\"%3A\\\"5.%2A%3F\\\"%7D'),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n '服务日志监控',\n '接口耗时大于300ms',\n 'Loki',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '{app=\"apisix\"} !~ `socket.io` | json | upstream_response_time > 0.3 | upstream_response_time != \"\"',\n 'logScope', 10,\n 'evalCondition', JSON_OBJECT('type', 'count', 'operator', '>=', 'queryValue', 0, 'value', 1)\n ),\n 10,\n 0,\n 'Logs',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n '服务日志监控',\n '服务ERROR错误日志「占比超过1%」',\n 'Loki',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', 'sum(count_over_time({namespace=\"prod\"} |~ `ERROR`[10m])) / sum(count_over_time({namespace=\"prod\"}[10m])) * 100 > 1',\n 'logScope', 10,\n 'evalCondition', JSON_OBJECT('type', 'count', 'operator', '>=', 'queryValue', 0, 'value', 1)\n ),\n 10,\n 0,\n 'Logs',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n '服务日志监控',\n '服务ERROR错误日志「增长率超过2%」',\n 'Loki',\n JSON_OBJECT(\n 'promQL', '',\n 'annotations', '',\n 'forDuration', 0,\n 'rules', NULL\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', 'sum(rate({namespace=\"prod\"} |~ `level` |~ `ERROR`[5m])) by (app) > 2',\n 'logScope', 10,\n 'evalCondition', JSON_OBJECT('type', 'count', 'operator', '>=', 'queryValue', 0, 'value', 1)\n ),\n 10,\n 0,\n 'Logs',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器CPU使用率监控',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(100 - (avg(irate(node_cpu_seconds_total{mode=\"idle\",}[5m])) by (instance) * 100))',\n 'annotations', '节点:${instance},CPU使用率过高,当前:${value}%,高 CPU 使用率意味着服务器可能接近处理能力上限,影响性能,导致应用程序响应变慢或服务中断!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80'),\n JSON_OBJECT('severity', 'P1', 'expr', '>75'),\n JSON_OBJECT('severity', 'P2', 'expr', '>70')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n '',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );INSERT ignore INTO watchalert.rule_templates (\n rule_group_name,\n rule_name,\n datasource_type,\n prometheus_config,\n ali_cloud_sls_config,\n loki_config,\n eval_interval,\n for_duration,\n type,\n repeat_notice_interval,\n description,\n effective_time,\n jaeger_config,\n kubernetes_config,\n elastic_search_config\n) VALUES\n (\n 'Node节点监控',\n '服务器TCP连接数监控',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'sum(label_replace(max(node_sockstat_TCP_alloc{}) by (instance),\"host_ip\",\"$1\",\"instance\",\"(.*):.*\"))by(instance)',\n 'annotations', '节点:${instance},TCP连接数过高,当前:${value}%,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>500')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器入网络吞吐量异常监控',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(sum by (instance) (rate(node_network_transmit_bytes_total[2m])) / 1024 / 1024 > 100) * on(instance) group_left (nodename) node_uname_info{nodename=~\\\".+\\\"}\\n',\n 'annotations', '节点:${instance},主机网络接口可能接收了太多数据(> 100 MB/s),当前:${value}%,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>100')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器内存使用率监控',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(100 - (node_memory_MemAvailable_bytes{} / node_memory_MemTotal_bytes{} * 100))',\n 'annotations', '节点:${instance},内存使用率过高,当前:${value}%,内存紧张可能导致系统频繁进行内存交换(swap),进而引起性能下降。如果内存耗尽,应用程序可能崩溃或无法分配更多资源。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>80'),\n JSON_OBJECT('severity', 'P1', 'expr', '>75'),\n JSON_OBJECT('severity', 'P2', 'expr', '>70')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器出网络吞吐量异常监控',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(sum by (instance) (rate(node_network_receive_bytes_total[2m])) / 1024 / 1024 > 100) * on(instance) group_left (nodename) node_uname_info{nodename=~\\\".+\\\"}',\n 'annotations', '节点:${instance},主机网络接口可能发送了太多数据(> 100 MB/s),当前:${value}%,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>100')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器文件系统设备错误',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'node_filesystem_device_error',\n 'annotations', '节点:${instance},${mountpoint} 文件系统出现设备错误,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==1')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器时钟偏差',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '((node_timex_offset_seconds > 0.05 and deriv(node_timex_offset_seconds[5m]) >= 0) or (node_timex_offset_seconds < -0.05 and deriv(node_timex_offset_seconds[5m]) <= 0)) * on(instance) group_left (nodename) node_uname_info{nodename=~\\\".+\\\"}\\n',\n 'annotations', '节点:${instance},检测到时钟偏差,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>=0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器状态异常',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'up{}',\n 'annotations', '实例:${instance},节点状态可能是exporter运行状态异常,也能是服务器宕机,当此告警发生后,需要进一步排查来确保节点的状态。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '==0')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器磁盘IO写流量过大',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(sum by (instance) (rate(node_disk_written_bytes_total[2m])) / 1024 / 1024 > 100) * on(instance) group_left (nodename) node_uname_info{nodename=~\\\".+\\\"}\\n',\n 'annotations', '节点:${instance},磁盘可能写入了太多数据 (> 100 MB/s),当前:${value}%,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>100')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器磁盘IO读流量过大',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', '(sum by (instance) (rate(node_disk_read_bytes_total[2m])) / 1024 / 1024 > 100) * on(instance) group_left (nodename) node_uname_info{nodename=~\\\".+\\\"}',\n 'annotations', '节点:${instance},磁盘可能读取了太多数据 (> 100 MB/s),当前:${value}%,请尽快处理!',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>100')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n ),\n (\n 'Node节点监控',\n '服务器磁盘使用率监控',\n 'Prometheus',\n JSON_OBJECT(\n 'promQL', 'round(max((node_filesystem_size_bytes{fstype=~\\\"ext.?|xfs\\\",}-node_filesystem_free_bytes{fstype=~\\\"ext.?|xfs\\\",}) *100/(node_filesystem_avail_bytes {fstype=~\\\"ext.?|xfs\\\",}+(node_filesystem_size_bytes{fstype=~\\\"ext.?|xfs\\\",}-node_filesystem_free_bytes{fstype=~\\\"ext.?|xfs\\\",})))by(ecs_cname,instance))',\n 'annotations', '节点:${instance},磁盘使用率过高,当前:${value}%,磁盘空间不足会导致文件无法写入、新日志无法记录,甚至可能使服务无法正常运行。尤其在数据增长迅速的系统中,这需要重点监控。',\n 'forDuration', 60,\n 'rules', JSON_ARRAY(\n JSON_OBJECT('severity', 'P0', 'expr', '>85'),\n JSON_OBJECT('severity', 'P1', 'expr', '>80'),\n JSON_OBJECT('severity', 'P2', 'expr', '>75')\n )\n ),\n JSON_OBJECT(\n 'project', '',\n 'logstore', '',\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n JSON_OBJECT(\n 'logQL', '',\n 'logScope', 0,\n 'evalCondition', JSON_OBJECT('type', '', 'operator', '', 'queryValue', 0, 'value', 0)\n ),\n 10,\n 0,\n 'Metrics',\n 0,\n\t\t'',\n JSON_OBJECT('week', NULL, 'startTime', 0, 'endTime', 0),\n JSON_OBJECT('service', '', 'scope', 0, 'tags', ''),\n JSON_OBJECT('resource', '', 'reason', '', 'value', 0, 'filter', NULL, 'scope', 0),\n JSON_OBJECT('index', '', 'scope', 0, 'filter', NULL)\n );"
tenants.sql: >+
use watchalert;
INSERT ignore INTO `tenants` (`id`, `name`, `create_at`, `create_by`,
`manager`, `description`, `user_number`, `rule_number`, `duty_number`,
`notice_number`, `remove_protection`) VALUES ('default', 'default',
1711876400, 'system', 'admin', 'default 租户', 999, 999, 999, 999, 1);
tenants_linked_users.sql: >-
use watchalert;
INSERT ignore INTO `tenant_linked_users`(`id`, `users`) VALUES ('default',
'[{"userId":"admin","userName":"admin","userRole":"admin"}]');
kind: ConfigMap
metadata:
name: w8t-init-config
namespace: tools