查询集群Pod服务的NRQL请求:跨AZ分布校验与告警配置
K8s Pod可用区分布的NRQL查询及告警配置
需求说明
需要编写NRQL语句查看集群中服务Pod在可用区(AZones)的分布情况,当某个可用区内的服务Pod占比低于15%时触发通知。
原查询分析
你之前尝试的语句用于统计节点Pod使用率,和可用区分布需求不匹配,翻译后的语句及作用如下:
FROM K8sPodSample SELECT 100 * filter(uniqueCount(nodeName), WHERE ((isReady / (isScheduled + isReady)) > .50)) / uniqueCount(nodeName) AS '% 节点Pod使用率超过50%的占比' SINCE 5分钟前 FACET clusterName该语句统计过去5分钟内,各集群中Pod使用率超过50%的节点占比,无法反映可用区的Pod分布情况。
针对需求的NRQL语句
1. 查看各可用区Pod分布占比
FROM K8sPodSample JOIN K8sNodeSample ON entityGuid SELECT 100 * uniqueCount(podName) / (SELECT uniqueCount(podName) FROM K8sPodSample SINCE 5分钟前) AS '可用区Pod占比(%)' SINCE 5分钟前 FACET K8sNodeSample.az, clusterName
此语句会统计过去5分钟内,每个集群下各可用区的Pod数量占该集群总Pod数的百分比,直观展示分布均匀性。
2. 用于告警触发的查询(筛选占比<15%的情况)
配置告警时,可使用以下语句直接返回符合条件的结果:
FROM ( FROM K8sPodSample JOIN K8sNodeSample ON entityGuid SELECT uniqueCount(podName) AS azPodCount SINCE 5分钟前 FACET K8sNodeSample.az, clusterName ) SELECT 100 * azPodCount / (SELECT sum(azPodCount) FROM FACETS) AS '可用区Pod占比(%)' WHERE '可用区Pod占比(%)' < 15
该查询会筛选出占比低于15%的可用区及对应集群,基于此结果即可配置告警通知。
内容的提问来源于stack exchange,提问作者Benedict Ezeh
相关产品推荐
相关产品推荐

