告警梳理
梳理需要用于监控的指标以及规则。告警规则前置设定如下:
执行间隔:以 1
分钟作为默认的告警规则执行间隔。
触发阈值:以连续3
次达到触发阈值为前提才触发一次告警。阈值触发在未特殊提醒的前提下,统一使用 >=
的计算方式。
告警分级:告警分3
个优先级,普通告警(info
)、严重告警(warn
)、致命告警(crit
),分别对应3
个不同的阈值。
以下告警阈值初始值为经验设定,在现网配置时会需要根据实际情况进行适当调整,并不断完善该文档。
告警配置
集群纬度
告警方式 | 集群CPU使用率 alert.cluster.cpu.usage_rate
重要程序:一般 | 集群的CPU 使用率过高时,意味着需要排查个别容器是否有异常,亦或需要扩展节点资源。 单位% 。 | sum(rate(container_cpu_usage_seconds_total{id="/"}[5m])) by (khaos_product,khaos_cluster) / sum (machine_cpu_cores{}) by (khaos_product,khaos_cluster) * 100
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
集群内存使用率 alert.cluster.memory.usage_rate
重要程序:一般 | 集群的内存使用率过高时,意味着需要排查个别容器是否有异常,抑或需要扩展节点资源。 单位% 。 | sum (container_memory_working_set_bytes{id="/"}) by (khaos_product,khaos_cluster) / sum (machine_memory_bytes{}) by (khaos_product,khaos_cluster) * 100
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
|
集群Pods使用率 alert.cluster.pods.usage_rate
重要程序:可有可无 | 每个Node 节点能够维护的Pods 数量是有限制的,当每个Node 的Pods 使用率过高时会引发集群的Pods 使用率过高,会影响Pod 的调度,甚至无法创建Pod 。 单位% 。 该规则默认不启用。 | sum(kube_pod_status_phase{phase="Running"})) by (khaos_product,khaos_cluster) / sum(kube_node_status_allocatable{resource="pods"}) by (khaos_product,khaos_cluster) * 100
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
| 节点纬度
告警方式info: 企微
warn: 企微
crit: 企微、邮件
| 节点内存使用率
|
---|
节点CPU使用率 alert.node.cpu.usage_rate
重要程序:重要 | CPU 使用率过高会导致进程响应慢。
单位% 。 | sum by(khaos_product,khaos_cluster,instance) (irate(node_cpu_seconds_total{mode!="idle"}[5m])) / on(khaos_product,khaos_cluster,instance) group_left sum by (khaos_product,khaos_cluster,instance)((irate(node_cpu_seconds_total{}[5m]))) * 100
| info: 80
warn: 90
crit: 95
|
alert.node.memory.usage_rate
重要程序:重要 | 主机内存利用率高会导致进程响应慢。 单位% 。 | 100 - ((avg_over_time(node_memory_MemAvailable_bytes{}[5m]) * 100) / avg_over_time(node_memory_MemTotal_bytes{}[5m]))
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
节点磁盘使用率 alert.node.storage.usage_rate
重要程序:可有可无 | 由于节点上挂载的磁盘比较多,我们并不需要关心所有挂载点的磁盘使用率,因此该规则默认不启用。 单位% 。 | 100 - 100*(sum(node_filesystem_avail_bytes{device=~"/dev.*", mountpoint!~".*pods.*|.*pvc.*"}) by(khaos_product,khaos_cluster, instance, device) / sum(node_filesystem_size_bytes{device=~"/dev.*", mountpoint!~".*pods.*|.*pvc.*"}) by (khaos_product,khaos_cluster, instance, device)) | info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
|
节点系统磁盘使用率 alert.node.storage.root.usage_rate
重要程序:重要 | 系统盘使用率过高会影响系统稳定性。 单位% 。 | 100 - 100*(sum(node_filesystem_avail_bytes{device=~"/dev.*", mountpoint="/"}) by(khaos_product,khaos_cluster, instance, device) / sum(node_filesystem_size_bytes{device=~"/dev.*", mountpoint="/"}) by (khaos_product,khaos_cluster, instance, device))
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
| 磁盘 inode 使用率 alert.node.storage.inode.usage_rate
重要程序:重要 | 使用率如果达到100% 会影响磁盘文件的创建。 单位% 。 | 100 - node_filesystem_files_free{fstype=~"ext4|xfs"}/node_filesystem_files{fstype=~"ext4|xfs"} * 100 | info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
磁盘读延迟过高 alert.node.storage.io_delay_ms.read
重要程序:重要 | 影响磁盘内容读取。 单位ms 。 | rate(node_disk_read_time_seconds_total{}[5m]) / (rate(node_disk_reads_completed_total{}[5m])>0) * 1000 | info: 1000
warn: 3000
crit: 5000
|
info: 企微
warn: 企微
crit: 企微、邮件
| 磁盘写延迟过高
alert.node.storage.io_delay_ms.write
重要程序:重要 | 影响磁盘内容写入。 单位ms 。 | rate(node_disk_write_time_seconds_total{}[5m]) / (rate(node_disk_writes_completed_total{}[5m])>0) * 1000 | info: 1000
warn: 3000
crit: 5000
|
info: 企微
warn: 企微
crit: 企微、邮件
节点TCP每秒出包错误率 alert.node.network.tcp.error_rate.out
重要程序:重要 | 网络出入包错误率过高会严重影响数据面及管控面网络访问。 5m 内的平均网络出包错误率。
单位% 。 | 100*(sum(node_network_transmit_errs_total{device="eth0"}[5m]) by (khaos_product,khaos_cluster, device, instance)/sum(node_network_transmit_packets_total{device="eth0"}[5m]) by (khaos_product,khaos_cluster, device, instance))
| info: 5
warn: 10
crit: 30
|
info: 企微
warn: 企微
crit: 企微、邮件
|
节点TCP每秒入包错误率 alert.node.network.tcp.error_rate.in 重要程序:重要 | 网络出入包错误率过高会严重影响数据面及管控面网络访问。 5m 内的平均网络入包错误率。
单位% 。 | 100*(sum(node_network_receive_errs_total{device="eth0"}[5m]) by (khaos_product,khaos_cluster, device, instance)/sum(node_network_receive_packets_total{device="eth0"}[5m]) by (khaos_product,khaos_cluster, device, instance))
| info: 5
warn: 10
crit: 30
|
info: 企微
warn: 企微
crit: 企微、邮件
| 节点网络流量过大 alert.node.network.flow
重要程序:重要
| 流量过大可能会影响节点上所有进程的网络通信。原理是1 分钟内对外网卡的平均流量,包含出+入的流量。流量阈值根据集群硬件条件灵活配置。 单位mb/s 。 | (rate(node_network_receive_bytes_total{device=~"eth.+"}[1m])+rate(node_network_transmit_bytes_total{device=~"eth.+"}[1m]))/1024/1024
| info: 5000
warn: 8000
crit: 9000
|
info: 企微
warn: 企微
crit: 企微、邮件
节点网络带宽使用率 alert.node.network.bandwidth_usage_rate
重要程序:重要
| 流量过大可能会影响节点上所有进程的网络通信。原理是1 分钟内对外网卡的平均流量占用总体网卡带宽的百分比。 单位% 。 注意事项: node_network_speed_bytes 指标仅在物理机下有效,虚拟机下的该指标可能会负值或者无效。因此该告警作为流量告警的辅助告警规则。
| 100*(rate(node_network_receive_bytes_total{device=~"eth.+"}[1m])+rate(node_network_transmit_bytes_total{device=~"eth.+"}[1m]))/(node_network_speed_bytes{device=~"eth.+"} > 0)
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
| 节点 NotReady
持续时间(5分钟)
节点 NotReady 持续时间(5分钟) alert.node.status.not_ready5
重要程序:重要 | 主机上的kubelet 无法上报主机状态,可能主机宕机或者不稳定,可能会引发后续Kubernetes 集群内部针对该节点的调度、网络访问等问题。 按照持续时间划分不同告警级别。 | kube_node_status_condition{condition="Ready",status="true"} == 0
| info: 1
|
info: 企微
|
节点 NotReady 持续时间(10分钟) alert.node.status.not_ready10
重要程序:重要 | warn: 1
|
warn: 企微、邮件
| 节点 NotReady 持续时间(15分钟) alert.node.status.not_ready15
重要程序:重要 | crit: 1
|
crit: 企微、邮件、电话
| 节点Pods使用率 alert.node.status.pods.usage_rate
重要程序:可有可无 | 每个Node 节点能够维护的Pods 数量是有限制的,当使用率过高时,Kuberntes 调度器将法调度新的Pod 到该节点,从而影响节点上的Pod 装箱。 该规则默认不启用。 单位% 。 | 100*sum(kube_pod_info{}) by (khaos_product,khaos_cluster,node) / sum(kube_node_status_allocatable{resource="pods"}) by (khaos_product,khaos_cluster,node)
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
节点异常关机或重启 alert.node.status.shut_reboot
重要程序:重要 | 节点5分钟内系统启动时间发生变化,可能发生异常关机或者重启,请注意查看。 | abs((node_boot_time_seconds{} or 0) - node_boot_time_seconds{} offset 5m != 0)
| crit: 1
|
crit: 企微、邮件、电话
| 容器纬度
告警方式 | 容器CPU使用率 alert.container.cpu.usage_rate
重要程序:可有可无 | 前置条件:只有在容器配置了resources.limits.cpu 条件下才能使用。 单位% 。 该规则默认不启用。 |
| 100*sum(rate(container_cpu_usage_seconds_total{namespace=~"argo|khaos|obs|kube-system"}[5m])) by (khaos_product,khaos_cluster,namespace,app_name,pod,container)/sum(container_spec_cpu_quota{namespace=~"argo|khaos|obs|kube-system"}/container_spec_cpu_period{namespace=~"argo|khaos|obs|kube-system"}) by (khaos_product,khaos_cluster,namespace,app_name,pod,container)
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
容器内存使用率 alert.container.memory.usage_rate
重要程序:可有可无 | 前置条件:只有在容器配置了resources.limits.memory 条件下才能使用。 单位% 。 该规则默认不启用。 |
| 100*(sum (container_memory_working_set_bytes{namespace=~"argo|khaos|obs|kube-system"}) by (khaos_product,khaos_cluster,namespace,app_name,pod,container)/sum (container_spec_memory_limit_bytes{namespace=~"argo|khaos|obs|kube-system"}) by (khaos_product,khaos_cluster,namespace,app_name,pod,container) <= 1)
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
| 容器磁盘使用率
alert.container.storage.usage_rate
重要程序:可有可无 | 由于容器内部的挂载点可能很多,并且在Kubernetes 下都是通过pv 的方式申请存储,对应也有pv 的磁盘使用率告警,因此该告警规则默认未启用。 单位% 。 |
| 100*sum(container_fs_usage_bytes{namespace=~"argo|khaos|obs|kube-system"} / (container_fs_limit_bytes{namespace=~"argo|khaos|obs|kube-system"} != 0 )) by (khaos_product,khaos_cluster,namespace,app_name,pod,container,device)
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
容器持续 10 分钟 NotReady (该告警包含数据面容器) alert.container.not_ready10
重要程序:重要 | 通过reason 字段告警具体原因,reason 字段可能得取值如下: 需要注意: 数据面的告警仅针对内核容器,按照container="khaos-biz"通用配置,并不关心业务Pod中的sidecar容器。 按照持续时间划分不同告警级别。 | 通过跳板机登录kubernetes 集群查看Pod 状态,异常容器日志定位准确原因。 | 管控面: 管控面容器处于异常状态,该容器提供的管控能力失效。 带reason 的异常容器: (
(kube_pod_container_status_terminated_reason{reason!="Completed",namespace=~"argo|khaos|obs|kube-system"} + kube_pod_container_status_terminated_reason{reason!="Completed",namespace=~"argo|khaos|obs|kube-system"} offset 10m) == 2
or
(kube_pod_container_status_waiting_reason{reason!="Completed",namespace=~"argo|khaos|obs|kube-system"} + kube_pod_container_status_waiting_reason{reason!="Completed",namespace=~"argo|khaos|obs|kube-system"} offset 10m) == 2
)
unkhown 的异常容器:
((kube_pod_container_status_ready{namespace=~"argo|khaos|obs|kube-system"} + kube_pod_container_status_ready{namespace=~"argo|khaos|obs|kube-system"} offset 10m) == 0)
unless on(uid)
(
kube_pod_container_status_terminated_reason{namespace=~"argo|khaos|obs|kube-system"}
or
kube_pod_container_status_waiting_reason{namespace=~"argo|khaos|obs|kube-system"}
)
数据面: 数据面容器异常,会影响用户实例,请优先查看! 带reason 的异常容器: (
(kube_pod_container_status_terminated_reason{reason!="Completed",container="khaos-biz"} + kube_pod_container_status_terminated_reason{reason!="Completed",container="khaos-biz"} offset 10m) == 2
or
(kube_pod_container_status_waiting_reason{reason!="Completed",container="khaos-biz"} + kube_pod_container_status_waiting_reason{reason!="Completed",container="khaos-biz"} offset 10m) == 2
)
unkhown 的异常容器:
((kube_pod_container_status_ready{container="khaos-biz"} + kube_pod_container_status_ready{container="khaos-biz"} offset 10m) == 0)
unless on(uid)
(
kube_pod_container_status_terminated_reason{container="khaos-biz"}
or
kube_pod_container_status_waiting_reason{container="khaos-biz"}
)
| info: 1
|
crit: 企微
| 容器持续 20 分钟 NotReady (该告警包含数据面容器) alert.container.not_ready20
重要程序:重要 | warn: 1
|
crit: 企微、邮件
|
容器持续 30 分钟 NotReady (该告警包含数据面容器) alert.container.not_ready30
重要程序:重要 | crit: 1
|
crit: 企微、邮件、电话
|
容器发生持续重启 (该告警包含数据面容器) alert.pod.status.crash_loop
重要程序:重要 | 通过reason 字段告警具体原因,reason 字段可能得取值如下: 需要注意: | 通过跳板机登录kubernetes 集群查看Pod 状态,异常容器日志定位准确原因。 | 管控面: (delta(kube_pod_container_status_restarts_total{namespace=~"argo|khaos|obs|kube-system"} [15m]) > 1) + on(khaos_product,khaos_cluster, namespace, app_name, pod, container) group_right(kube_pod_container_status_last_terminated_reason) 0*(kube_pod_container_status_last_terminated_reason{reason!="Completed",namespace=~"argo|khaos|obs|kube-system"})
数据面(非平台管控面空间): (delta(kube_pod_container_status_restarts_total{namespace!~"argo|khaos|obs|kube-system"} [15m]) > 1) + on(khaos_product,khaos_cluster, namespace, app_name, pod, container) group_right(kube_pod_container_status_last_terminated_reason) 0*(kube_pod_container_status_last_terminated_reason{reason!="Completed",namespace!~"argo|khaos|obs|kube-system"})
| info: 15m 2
warn: 20m 4
crit: 30m 5
|
info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
| Pod纬度
告警方式 |
---|
Pod长期处于无法调度状态 (该告警包含数据面容器) alert.pod.status.unschedulable
重要程序:重要 | Pod在一定时间内没有被调度成功,通常是Pod依赖没有满足要求,例如资源请求、亲和性等前置条件无法满足。 | 通过跳板机登录集群,使用kubectl describe 命令查看具体原因。 | kube_pod_status_unschedulable{}
| info: 10分钟
warn: 20分钟
crit: 30分钟
|
info: 企微
warn: 企微
crit: 企微、邮件
Pod PVC使用率 (该告警包含数据面容器) alert.pod.storage.volume.usage_rate
重要程序:重要 | PVC对应的PV使用率高时,会影响存储,进而影响服务功能。 需要注意,数据面现网的PVC磁盘使用率都很高。 单位% 。 | 清理或扩容PV磁盘。 | 100*(kubelet_volume_stats_used_bytes{}/kubelet_volume_stats_capacity_bytes{})+on(khaos_product,khaos_cluster,persistentvolumeclaim,namespace) group_right(persistentvolumeclaim) 0*kube_pod_spec_volumes_persistentvolumeclaims_info{}
| info: 80
warn: 90
crit: 95
|
info: 企微
warn: 企微
crit: 企微、邮件
| Pod网络入流量过大
alert.pod.network.flow_rate.in 重要程序:一般
| 原理是1 分钟内的平均流量。需要注意,Pod 的网络流量大部分属于集群内部的内网流量。 单位mb/s 。 |
| rate(container_network_receive_bytes_total{image!="",interface=~"eth.+",namespace=~"argo|khaos|obs|kube-system"}[1m])/1024/1024
| info: 800
warn: 900
crit: 1000
|
info: 企微
warn: 企微
crit: 企微、邮件
Pod网络出流量过大 alert.pod.network.flow_rate.out
重要程序:一般 | 原理是1 分钟内的平均流量。需要注意,Pod 的网络流量大部分属于集群内部的内网流量。 单位mb/s 。 |
| rate(container_network_transmit_bytes_total{image!="",interface=~"eth.+",namespace=~"argo|khaos|obs|kube-system"}[1m])/1024/1024
| info: 800
warn: 900
crit: 1000
|
info: 企微
warn: 企微
crit: 企微、邮件
服务纬度
云巢组件
khaos-alleywayvmagent
告警方式 | alleyway 5m
内 GRPC
请求失败率
vmagent 存在错误的集群ID配置
alert.service.khaos.
|
alleywaygrpcerrorrate重要程序:重要
5m 内非OK 结果状态的GRPC 请求数占总体请求数的百分比。
单位% 。 | 100*sum(grpc_server_handled_total{grpc_code!="OK",app_name="khaos-alleyway"}[5m]) by (khaos_product,khaos_cluster,namespace, app_name, pod_name)/sum(grpc_server_handled_total{app_name="khaos-alleyway"}[5m]) by (khaos_product,khaos_cluster, namespace, app_name, pod_name)
| info: 50
warn: 80
crit: 90
| info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
| khaos-workflow/argo
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|
workflow
执行时长
重要程序:一般 | 有部分集群的集群ID没有更新到vmagent 配置中,可能是集群的cluster_values.yaml 配置或者CI 脚本存在问题。 当集群ID配置错误时,可能会影响上层的告警通知、大盘展示,影响问题的准确定位。 该问题通常与集群ID配置错误一起出现。 | 首先在catalog 仓库中的tencentcloud/arcod/deploys 目录检索关键字khaos-cluster 看看哪个集群的配置文件有问题。 如果无法找到,那么使用count(kube_pod_info{khaos_cluster="khaos-cluster"})by(namespace) 看看是哪个产品的实例,随后对该产品的所有集群遍历查找ns 定位是否该集群。 | count(kube_pod_info{khaos_cluster="khaos-cluster"})
| info: 1
|
vmagent 存在错误的产品标识配置
alert.service.khaos.vmagent.incorrect_khaos_product
重要程序:一般 | 有部分集群的产品标识没有更新到vmagent 配置中,可能是集群的cluster_values.yaml 配置或者CI 脚本存在问题。 当集群ID配置错误时,可能会影响上层的告警通知、大盘展示,影响问题的准确定位。 该问题通常与集群ID配置错误一起出现。 | 同上。 | count(kube_pod_info{khaos_product=""})
| info: 1
|
vmagent 错误日志激增
|
workflowexecdurationworkflow
执行时长。错误日志一段时间内增加过多,可能会影响监控采集能力。 单位 |
s
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|
vmagent
存在错误的集群ID配置
登录workflow 对应的eros 集群查看阻塞的workflow 日志,根据日志信息定位具体阻塞原因。 | argo_workflows_exec_duration_gauge{}
| info: 1800
warn: 3600
crit: 7200
| info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
| vmagent
需要去控制台查看vmagent pod 的日志确定原因。 | sum(increase(vm_log_messages_total{level!="info"}[10m])) by (khaos_product, khaos_cluster, app_name, namespace, pod)
| info: 1000
warn: 3000
crit: 5000
|
vmagent 本地缓存激增
|
alert.service.khaos.vmagent.
|
incorrectkhaos_cluster重要程序:一般有部分集群的集群ID没有更新到vmagent 配置中,可能是集群的cluster_values.yaml 配置或者CI 脚本存在问题。 当集群ID配置错误时,可能会影响上层的告警通知、大盘展示,影响问题的准确定位。 该问题通常与集群ID配置错误一起出现。 | 首先在catalog 仓库中的tencentcloud/arcod/deploys 目录检索关键字khaos-cluster 看看哪个集群的配置文件有问题。 如果无法找到,那么使用count(kube_pod_info{khaos_cluster="khaos-cluster"})by(namespace) 看看是哪个产品的实例,随后对该产品的所有集群遍历查找ns 定位是否该集群。 | count(kube_pod_info{khaos_cluster="khaos-cluster"})
| info: 1
| 当vmagent 上报失败时,会按照远端地址缓存本地数据,如果本地缓存数据激增,表示远端写入失败过多。 单位mb 。 | 需要去控制台查看vmagent pod 的日志确定原因。判断是否地址配置错误,或者远端写入地址对应的服务异常。 | sum(vmagent_remotewrite_pending_data_bytes{}) by (job, url)/1024/1024
| info: 100
warn: 500
crit: 1000
|
Kubernetes组件
etcd
告警名称 | 告警描述 | 表达式 | 阈值设置 |
---|
etcd 是否存在主节点
|
info: 企微
| vmagent
存在错误的产品标识配置khaosvmagentincorrectkhaos_product重要程序:一般
有部分集群的产品标识没有更新到vmagent 配置中,可能是集群的cluster_values.yaml 配置或者CI 脚本存在问题。 当集群ID配置错误时,可能会影响上层的告警通知、大盘展示,影响问题的准确定位。 该问题通常与集群ID配置错误一起出现。 | 同上。 | count(kube_pod_info{khaos_product=""})
| info: 1
| info: 企微
| 重要程序:重要
| 表示etcd 是否可用。 需要注意:TKE托管类型集群的 etcd 服务由于部署在其他独立的集群中,当前集群内的监控组件没有权限访问因此无法采集其指标。 | etcd_server_has_leader{}
| crit: ==0
|
apiserver
告警英文名 | 告警描述 | 表达式 | 阈值设置 |
---|
apiserver 服务端请求错误率
alert.service.kube.apiserver.server.error_rate
重要程序:重要
| 5 分钟内apiserver 处理的请求错误率较高。
单位% 。 | 100*sum(rate(apiserver_request_total{code=~"(?:5..)"}[5m])) by (khaos_product,khaos_cluster,app_name,instance,group,version,resource) / sum(rate(apiserver_request_total{}[5m
|
vmagent 错误日志激增
alert.service.khaos.vmagent.log_errors
重要程序:重要 | 错误日志一段时间内增加过多,可能会影响监控采集能力。 单位条 。 | 需要去控制台查看vmagent pod 的日志确定原因。 | sum(increase(vm_log_messages_total{level!="info"}[10m])) by (khaos_product,khaos_cluster,app_name,instance,group,
|
namespace pod 1000 3000 5000info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
| vmagent 本地缓存激增
alert.service.khaos.vmagent.local_cache
重要程序:重要 | 当vmagent 上报失败时,会按照远端地址缓存本地数据,如果本地缓存数据激增,表示远端写入失败过多。 单位mb 。 | 需要去控制台查看vmagent pod 的日志确定原因。判断是否地址配置错误,或者远端写入地址对应的服务异常。 | sum(vmagent_remotewrite_pending_data_bytes{}) by (job, url)/1024/1024
| info: 100
warn: 500
crit: 1000
| info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
|
Kubernetes组件
etcd
告警名称 | 告警描述 | 表达式 | 阈值设置 | 告警方式 |
---|
etcd
是否存在主节点
alert.service.kube.etcd.has_leader
重要程序:重要
表示etcd 是否可用。 需要注意:TKE托管类型集群的 etcd 服务由于部署在其他独立的集群中,当前集群内的监控组件没有权限访问因此无法采集其指标。 | etcd_server_has_leader{}
| crit: ==0
| crit: 企微、邮件、电话
| apiserver
告警英文名 | 告警描述 | 表达式 | 阈值设置 | 告警方式 |
---|
apiserver
服务端请求错误率
alert.service.kube.apiserver.server.error_rate
重要程序:重要
5 分钟内apiserver 处理的请求错误率较高。
单位% 。 | 100*sum(rate(apiserver_request_total{code=~"(?:5..)"}[5m])) by (khaos_product,khaos_cluster,app_name,instance,group,version,resource) / sum(rate(apiserver_request_total{}[5m])) by (khaos_product,khaos_cluster,app_name,instance,group,version,resource)
| info: 50
warn: 80
crit: 90
| info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
| 客户端向 apiserver
请求错误率
alert.service.kube.apiserver.client.error_rate
重要程序:重要
5
分钟内客户端请求apiserver
的错误率较高。instance
为客户端,host
为目标端,job
用于识别是否kubelet
访问。
单位%
。
90
|
客户端向 apiserver 请求错误率 alert.service.kube.apiserver.client.error_rate
重要程序:重要
| 5 分钟内客户端请求apiserver 的错误率较高。instance 为客户端,host 为目标端,job 用于识别是否kubelet 访问。
单位% 。 | 100*(sum(rate(rest_client_requests_total{code=~"(4|5).."}[5m])) by (khaos_product,khaos_cluster,app_name,instance,host) / sum(rate(rest_client_requests_total[5m])) by (khaos_product,khaos_cluster,app_name,instance,host))
| info: 50
warn: 80
crit: 90
|
apiserver 服务端请求处理延迟
alert.service.kube.apiserver.latency
重要程序:重要 | 5 分钟内p99 的请求处理延迟较高。
单位ms 。 | 1000*histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{verb!~"(?:CONNECT|WATCHLIST|WATCH|PROXY)"} [5m])) without (subresource))
| info: 3000
warn: 5000
crit: 10000
|
100*(sum(rate(rest_client_requests_total{code=~"(4|5).."}[5m])) by (khaos_product,khaos_cluster,app_name,instance,host) / sum(rate(rest_client_requests_total[5m])) by (khaos_product,khaos_cluster,app_name,instance,host))
| info: 50
warn: 80
crit: 90
| info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
| apiserver 服务端请求处理延迟
alert.service.kube.apiserver.latency
重要程序:重要 | 5 分钟内p99 的请求处理延迟较高。
单位ms 。 | 1000*histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{verb!~"(?:CONNECT|WATCHLIST|WATCH|PROXY)"} [5m])) without (subresource))
| info: 3000
warn: 5000
crit: 10000
| info: 企微
warn: 企微、邮件
crit: 企微、邮件、电话
|
TCS中间件告警
复用TCS告警规则,仅在TCS场景下有效,具体请参考文档:https://iwiki.woa.com/p/4009965831
告警范围
平台管控面告警
数据库平台管控面默认负责集群稳定性监控告警,包括集群维度、节点维度、平台管控组件及Kubernetes基础管控组件的监控告警。其中命名空间只监控以下空间:
因此label filter
使用 namespace=~"argo|khaos|obs|kube-system"
。
默认数据面告警
数据库平台默认会对数据面的实例状态进行告警,如:
默认数据面告警依靠内核容器名称container="khaos-biz"
识别(其中khaos-biz
为业务对接云巢时规范的内核容器名称),不关注sidecar
状态。
业务管控面及自定义告警
业务管控面的监控告警以及其他自定义的告警需要业务自行添加,具体有相关接入文档:参考资料