Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
告警梳理
梳理需要用于监控的指标以及规则。告警规则前置设定如下:
执行间隔:以
1
分钟作为默认的告警规则执行间隔。触发阈值:以连续
3
次达到触发阈值为前提才触发一次告警。阈值触发在未特殊提醒的前提下,统一使用>=
的计算方式。告警分级:告警分
3
个优先级,普通告警(info
)、严重告警(warn
)、致命告警(crit
),分别对应3
个不同的阈值。
以下告警阈值初始值为经验设定,在现网配置时会需要根据实际情况进行适当调整,并不断完善该文档。
告警配置
对接中台告警的配置
excel
地址:公有云星云配置地址:https://qcloud.woa.com/v3/platform/alarmSystem/alarmSubscribe
集群纬度
告警名称 | 告警描述 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|
集群CPU使用率
重要程序:一般 | 集群的 单位 |
|
|
|
集群内存使用率
重要程序:一般 | 集群的内存使用率过高时,意味着需要排查个别容器是否有异常,抑或需要扩展节点资源。 单位 |
|
|
|
集群Pods使用率
重要程序:可有可无 | 每个 单位 该规则默认不启用。 |
|
|
|
节点纬度
告警名称 | 告警描述 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|
节点CPU使用率
重要程序:重要 |
单位 |
|
|
|
节点内存使用率
重要程序:重要 | 主机内存利用率高会导致进程响应慢。 单位 |
|
|
|
节点磁盘使用率
重要程序:可有可无 | 由于节点上挂载的磁盘比较多,我们并不需要关心所有挂载点的磁盘使用率,因此该规则默认不启用。 单位 | |
|
|
节点系统磁盘使用率
重要程序:重要 | 系统盘使用率过高会影响系统稳定性。 单位 |
|
|
|
磁盘
重要程序:重要 | 使用率如果达到 单位 | |
|
|
磁盘读延迟过高
重要程序:重要 | 影响磁盘内容读取。 单位 | |
|
|
磁盘写延迟过高
重要程序:重要 | 影响磁盘内容写入。 单位 | |
|
|
节点TCP每秒出包错误率
重要程序:重要 | 网络出入包错误率过高会严重影响数据面及管控面网络访问。
单位 |
|
|
|
节点TCP每秒入包错误率 alert.node.network.tcp.error_rate.in 重要程序:重要 | 网络出入包错误率过高会严重影响数据面及管控面网络访问。
单位 |
|
|
|
节点网络流量过大
重要程序:重要 | 流量过大可能会影响节点上所有进程的网络通信。原理是 单位 |
|
|
|
节点网络带宽使用率
重要程序:重要 | 流量过大可能会影响节点上所有进程的网络通信。原理是 单位 注意事项:
|
|
|
|
节点
重要程序:重要 | 主机上的 按照持续时间划分不同告警级别。 |
|
|
|
节点
重要程序:重要 |
|
| ||
节点
重要程序:重要 |
|
| ||
节点Pods使用率
重要程序:可有可无 | 每个 该规则默认不启用。 单位 |
|
|
|
节点异常关机或重启
重要程序:重要 | 节点5分钟内系统启动时间发生变化,可能发生异常关机或者重启,请注意查看。 |
|
|
|
容器纬度
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|---|
容器CPU使用率
重要程序:可有可无 | 前置条件:只有在容器配置了 单位 该规则默认不启用。 |
|
|
| |
容器内存使用率
重要程序:可有可无 | 前置条件:只有在容器配置了 单位 该规则默认不启用。 |
|
|
| |
容器磁盘使用率
重要程序:可有可无 | 由于容器内部的挂载点可能很多,并且在 单位 |
|
|
| |
容器持续 (该告警包含数据面容器)
重要程序:重要 | 通过
需要注意: 数据面的告警仅针对内核容器,按照container="khaos-biz"通用配置,并不关心业务Pod中的sidecar容器。 按照持续时间划分不同告警级别。 | 通过跳板机登录 | 管控面: 管控面容器处于异常状态,该容器提供的管控能力失效。 带
数据面: 数据面容器异常,会影响用户实例,请优先查看! 带
|
|
|
容器持续 (该告警包含数据面容器)
重要程序:重要 |
|
| |||
容器持续 (该告警包含数据面容器)
重要程序:重要 |
|
| |||
容器发生持续重启 (该告警包含数据面容器)
重要程序:重要 | 通过
需要注意:
| 通过跳板机登录 | 管控面:
数据面(非平台管控面空间):
|
|
|
Pod纬度
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|---|
Pod长期处于无法调度状态 (该告警包含数据面容器)
重要程序:重要 | Pod在一定时间内没有被调度成功,通常是Pod依赖没有满足要求,例如资源请求、亲和性等前置条件无法满足。 | 通过跳板机登录集群,使用 |
|
|
|
Pod PVC使用率 (该告警包含数据面容器)
重要程序:重要 | PVC对应的PV使用率高时,会影响存储,进而影响服务功能。 需要注意,数据面现网的PVC磁盘使用率都很高。 单位 | 清理或扩容PV磁盘。 |
|
|
|
Pod网络入流量过大 alert.pod.network.flow_rate.in 重要程序:一般 | 原理是 单位 |
|
|
| |
Pod网络出流量过大
重要程序:一般 | 原理是 单位 |
|
|
|
服务纬度
云巢组件
khaos-alleyway
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|---|
重要程序:重要 |
单位 |
|
|
|
khaos-workflow/argo
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|---|
重要程序:重要 |
单位 | 登录 |
|
|
|
vmagent
告警名称 | 告警描述 | 处理方式 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|---|
重要程序:一般 | 有部分集群的集群ID没有更新到 当集群ID配置错误时,可能会影响上层的告警通知、大盘展示,影响问题的准确定位。 该问题通常与集群ID配置错误一起出现。 | 首先在 如果无法找到,那么使用 |
|
|
|
重要程序:一般 | 有部分集群的产品标识没有更新到 当集群ID配置错误时,可能会影响上层的告警通知、大盘展示,影响问题的准确定位。 该问题通常与集群ID配置错误一起出现。 | 同上。 |
|
|
|
重要程序:重要 | 错误日志一段时间内增加过多,可能会影响监控采集能力。 单位 | 需要去控制台查看 |
|
|
|
重要程序:重要 | 当 单位 | 需要去控制台查看 |
|
|
|
Kubernetes组件
etcd
告警名称 | 告警描述 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|
重要程序:重要 | 表示 需要注意:TKE托管类型集群的 |
|
|
|
apiserver
告警英文名 | 告警描述 | 表达式 | 阈值设置 | 告警方式 |
---|---|---|---|---|
重要程序:重要 |
单位 |
|
|
|
客户端向
重要程序:重要 |
单位 |
|
|
|
重要程序:重要 |
单位 |
|
|
|
TCS中间件告警
复用TCS告警规则,仅在TCS场景下有效,具体请参考文档:https://iwiki.woa.com/p/4009965831
告警范围
平台管控面告警
数据库平台管控面默认负责集群稳定性监控告警,包括集群维度、节点维度、平台管控组件及Kubernetes基础管控组件的监控告警。其中命名空间只监控以下空间:
khaos
kube-system
argo
obs
因此label filter
使用 namespace=~"argo|khaos|obs|kube-system"
。
默认数据面告警
数据库平台默认会对数据面的实例状态进行告警,如:
实例一段时间内(
10m
)处于CrashLoopBackOff
、Pending
等状态时。实例持续重启,如
5m
内重启5
次以上。
默认数据面告警依靠内核容器名称container="khaos-biz"
识别(其中khaos-biz
为业务对接云巢时规范的内核容器名称),不关注sidecar
状态。
业务管控面及自定义告警
业务管控面的监控告警以及其他自定义的告警需要业务自行添加,具体有相关接入文档:
参考资料
以下为PromeQL
的执行模板。其中:
- 范围时间
5m
是写死的,用于检索指定范围的数据执行指标检索,根据业务场景需要适当调整范围。 #LABELS#
用于Label
过滤,不同的指标过滤的Label
条件不同。#GROUPBY#
用于操作语句对结果数据进行分组,便于操作符两边的Label
能够对应,对应才能够执行操作,也便于上层获取#GROUPBY#
指定的Label
。
主机类
需要依赖node-exporter
。
节点CPU使用率
NodeCpuUsageRate
Code Block |
---|
100*(
1 - (avg by (#GROUPBY#) (irate(node_cpu_seconds_total{job="node-exporter", mode="idle" #LABELS#}[5m])))
) |
节点CPU使用量
NodeCpuUsage
Code Block |
---|
sum(irate(node_cpu_seconds_total{
job="node-exporter", mode="idle" #LABELS#}[5m]
)) by (#GROUPBY#) |
节点内存使用率
NodeMemoryUsageRate
Code Block |
---|
100*(
1 - (
avg(
(
avg_over_time(node_memory_MemFree_bytes{job="node-exporter"#LABELS#}[5m]) +
avg_over_time(node_memory_Cached_bytes{job="node-exporter"#LABELS#}[5m]) +
avg_over_time(node_memory_Buffers_bytes{job="node-exporter"#LABELS#}[5m])
)
/
avg_over_time(node_memory_MemTotal_bytes{job="node-exporter"#LABELS#}[5m])
)
by (#GROUPBY#)
)
) |
节点内存占用量
NodeMemoryUsage
Code Block |
---|
avg(
node_memory_MemTotal_bytes{job="node-exporter"#LABELS#} - node_memory_MemFree_bytes{job="node-exporter"#LABELS#} -
(
node_memory_Cached_bytes{job="node-exporter"#LABELS#} + node_memory_Buffers_bytes{job="node-exporter"#LABELS#}
)
) by (#GROUPBY#) |
节点磁盘使用率
NodeStorageUsageRate
Code Block |
---|
100*sum(
1 - (
node_filesystem_avail_bytes{job="node-exporter", mountpoint="/", fstype!="rootfs"#LABELS#}
/
node_filesystem_size_bytes{job="node-exporter", mountpoint="/", fstype!="rootfs"#LABELS#}
)
) by (#GROUPBY#) |
节点磁盘使用量
NodeStorageUsage
Code Block |
---|
sum(
node_filesystem_size_bytes{job="node-exporter", mountpoint="/",fstype!="rootfs" #LABELS#}
-
node_filesystem_avail_bytes{job="node-exporter", mountpoint="/",fstype!="rootfs" #LABELS#}
) by (#GROUPBY#) |
节点内网出流量
NodeBytesSent
Code Block |
---|
sum(irate(node_network_transmit_bytes_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])) by (#GROUPBY#) |
节点内网入流量
NodeBytesReceived
Code Block |
---|
sum(irate(node_network_receive_bytes_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])) by (#GROUPBY#) |
节点内网出带宽
NodeBytesSentBandWidth
Code Block |
---|
sum(irate(node_network_transmit_bytes_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])/128) by (#GROUPBY#) |
节点内网入带宽
NodeBytesReceivedBandWidth
Code Block |
---|
sum(irate(node_network_receive_bytes_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])/128) by (#GROUPBY#) |
节点硬盘读IOPS
NodeStorageReadIOPS
Code Block |
---|
sum(rate(node_disk_read_time_seconds_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])) by (#GROUPBY#) |
节点硬盘写IOPS
NodeStorageWriteIOPS
Code Block |
---|
sum(rate(node_disk_writes_completed_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])) by (#GROUPBY#) |
节点硬盘读流量
NodeStorageReadFlow
Code Block |
---|
sum(rate(node_disk_read_bytes_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])) by (#GROUPBY#) |
节点硬盘写流量
NodeStorageWriteFlow
Code Block |
---|
sum(rate(node_disk_written_bytes_total{
job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#
}[5m])) by (#GROUPBY#) |
节点TCP连接数
NodeNetstatTCP
Code Block |
---|
node_netstat_Tcp_CurrEstab{job="node-exporter", device!~"lo|nbd.*|sr.*|docker.*" #LABELS#} |
容器类
需要依赖cadvisor
、kube-state
的exporter
。
pod
PodCPU使用率
PodCpuUsageRate
Code Block |
---|
100*
sum(irate(container_cpu_usage_seconds_total{#LABELS#}[5m])) by (#GROUPBY#)
/
sum(container_spec_cpu_quota{#LABELS#}/container_spec_cpu_period{#LABELS#})
by (#GROUPBY#) |
PodCPU使用量
PodCpuUsage
Code Block |
---|
sum(rate(container_cpu_usage_seconds_total{#LABELS#}[5m])) by (#GROUPBY#) |
Pod内存使用率
PodMemoryUsageRate
Code Block |
---|
sum(container_memory_working_set_bytes{#LABELS#}) by (#GROUPBY#)
/
sum(container_spec_memory_limit_bytes{#LABELS#}) by (#GROUPBY#) <= 1 |
Pod内存占用量
PodMemoryUsage
Code Block |
---|
avg(container_memory_working_set_bytes{#LABELS#}) by (#GROUPBY#) |
Pod磁盘使用率
PodStorageUsageRate
Code Block |
---|
100*
sum(
container_fs_usage_bytes{#LABELS#} / (container_fs_limit_bytes{#LABELS#} !=0 )
) by (#GROUPBY#) |
Pod磁盘使用量
PodStorageUsage
Code Block |
---|
avg(container_fs_usage_bytes{#LABELS#}) by (#GROUPBY#) |
Pod内网出流量
PodBytesSent
Code Block |
---|
sum(rate(container_network_transmit_bytes_total{#LABELS#}[5m])) by (#GROUPBY#) |
Pod内网入流量
PodBytesReceived
Code Block |
---|
sum(rate(container_network_receive_bytes_total{#LABELS#}[5m])) by (#GROUPBY#) |
Pod内网出带宽
PodBytesSentBandWidth
Code Block |
---|
sum(rate(container_network_transmit_bytes_total{#LABELS#}[5m])/128) by (#GROUPBY#) |
Pod内网入带宽
PodBytesReceivedBandWidth
Code Block |
---|
sum(rate(container_network_receive_bytes_total{#LABELS#}[5m])/128) by (#GROUPBY#) |
Pod硬盘读IOPS
PodStorageReadIOPS
Code Block |
---|
sum(rate(container_fs_reads_total{#LABELS#}[5m])) by (#GROUPBY#) |
Pod硬盘写IOPS
PodStorageWriteIOPS
Code Block |
---|
sum(rate(container_fs_writes_total{#LABELS#}[5m])) by (#GROUPBY#) |
Pod硬盘读流量
PodStorageReadFlow
Code Block |
---|
sum(rate(container_network_tcp_usage_total{#LABELS#}[5m])) by (#GROUPBY#) |
Pod硬盘写流量
PodStorageWriteFlow
Code Block |
---|
sum(rate(container_fs_reads_bytes_total{#LABELS#}[5m])) by (#GROUPBY#) |
PodTCP连接数
PodNetstatTCP
Code Block |
---|
sum(rate(container_fs_writes_total{#LABELS#}[5m])) by (#GROUPBY#) |
container
容器CPU使用率
ContainerCpuUsageRate
Code Block |
---|
100*
sum(irate(container_cpu_usage_seconds_total{#LABELS#}[5m])) by (#GROUPBY#)
/
sum(container_spec_cpu_quota{#LABELS#}/container_spec_cpu_period{#LABELS#})
by (#GROUPBY#) |
容器CPU使用量
ContainerCpuUsage
Code Block |
---|
sum(rate(container_cpu_usage_seconds_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器内存使用率
ContainerMemoryUsageRate
Code Block |
---|
sum(container_memory_working_set_bytes{#LABELS#}) by (#GROUPBY#)
/
sum(container_spec_memory_limit_bytes{#LABELS#}) by (#GROUPBY#) <= 1 |
容器内存占用量
ContainerMemoryUsage
Code Block |
---|
avg(container_memory_working_set_bytes{#LABELS#}) by (#GROUPBY#) |
容器磁盘使用率
ContainerStorageUsageRate
Code Block |
---|
100*
sum(
container_fs_usage_bytes{#LABELS#} / (container_fs_limit_bytes{#LABELS#} != 0 )
) by (#GROUPBY#) |
容器磁盘使用量
ContainerStorageUsage
Code Block |
---|
avg(container_fs_usage_bytes{#LABELS#}) by (#GROUPBY#) |
容器内网出流量
ContainerBytesSent
Code Block |
---|
sum(rate(container_network_transmit_bytes_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器内网入流量
ContainerBytesReceived
Code Block |
---|
sum(rate(container_network_receive_bytes_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器内网出带宽
ContainerBytesSentBandWidth
Code Block |
---|
sum(rate(container_network_transmit_bytes_total{#LABELS#}[5m])/128) by (#GROUPBY#) |
容器内网入带宽
ContainerBytesReceivedBandWidth
Code Block |
---|
sum(rate(container_network_receive_bytes_total{#LABELS#}[5m])/128) by (#GROUPBY#) |
容器硬盘读IOPS
ContainerStorageReadIOPS
Code Block |
---|
sum(rate(container_fs_reads_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器硬盘写IOPS
ContainerStorageWriteIOPS
Code Block |
---|
sum(rate(container_fs_writes_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器硬盘读流量
ContainerStorageReadFlow
Code Block |
---|
sum(rate(container_network_tcp_usage_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器硬盘写流量
ContainerStorageWriteFlow
Code Block |
---|
sum(rate(container_fs_reads_bytes_total{#LABELS#}[5m])) by (#GROUPBY#) |
容器TCP连接数
ContainerNetstatTCP
Panel | ||||
---|---|---|---|---|
| ||||
|