共计 2023 个字符,预计需要花费 6 分钟才能阅读完成。
实用功能总结
label 正则 / 正则非匹配
- 举例:pod 状态
kube_pod_status_phase{pod!~"filebeat.*",job="kube-state-metrics", namespace !~"druid",phase=~"Pending|Unknown"}
agg 去掉 / 保留 label,散布状况
- 去掉举例:
sum without(code) (rate(apiserver_request_total[2m] ) )
- 保留举例:
sum by(code) (rate(apiserver_request_total[2m] ) )
- 举例:apiserver 申请 qps 和按动作散布
sum (rate(apiserver_request_total[2m] ) ) by(verb)
- 举例:apiserver 申请 qps 和按动作,code 散布
sum (rate(apiserver_request_total[2m] ) ) by(verb,code)
label_replace 变动 label
- 举例:新增 host 标签内容为 instance 的 ipaddr
label_replace(up, "host", "$1", "instance", "(.*):.*")
- 原始 series
` up{instance="localhost:8080",job="cadvisor"} 1
- 革新后 series
` up{host="localhost",instance="localhost:8080",job="cadvisor"} 1
topk bottomK 看 top
- 举例:查看容器 cpu 使用率 top5
topk(5,sum(rate (container_cpu_usage_seconds_total[1m])) by(pod))
同环比 相减
- 举例:qps 环比 1 小时 掉 10
sum (rate(apiserver_request_total[2m] offset 1h) ) - sum (rate(apiserver_request_total[2m] ) ) > 10
absent nodata 报警
- == 1 代表 absent 失效
- 举例:
absent(container_cpu_usage_seconds_total{pod=~"k8s-mon.*jddj2"})
查问时间接增加 value 过滤
- 举例: 容器处于 waiting 状态
kube_pod_container_status_waiting==1
- 举例: 过滤 cpu 核数大于 8 的节点
kube_node_status_capacity_cpu_cores>8
- 举例:pod 状态异样:
sum by (namespace, pod,cluster,phase) (kube_pod_status_phase{pod!~"filebeat.*",job="kube-state-metrics", namespace !~"druid",phase=~"Pending|Unknown"}) > 0
查问时间接做 value 计算
- 举例: 依据 idle 算 util 百分比
100 * (1 - avg by(instance)(irate(node_cpu{mode='idle'}[5m])))
组合条件 and
- 举例: m3db read 大于并且 db_write 大于 1000
avg by(cluster) (rate(database_read_success{cluster="hawkeye-inf",instance="10.21.72.147:9004"}[1m]) ) > 100 and avg by(cluster) (rate(service_writeTaggedBatchRaw_success{cluster="hawkeye-inf",instance="10.21.77.55:9004"}[1m]) ) >1000
- 前后 label 统一
- or 同理
分位值 histogram_quantile
- 举例查看 apiserver 申请提早 90 分位
histogram_quantile(0.90, sum(rate(apiserver_request_duration_seconds_bucket{verb!~"CONNECT|WATCH"}[5m])) by (le))
两组 series 关联
- 举例:apiserver 申请成功率
sum(apiserver_request_total{code=~"2.*|3.*"})/ sum(apiserver_request_total)
agg_over_time 给所有 ts 的 value 做 agg
- 举例查看一天的 alert
sort_desc(sum(sum_over_time(ALERTS{alertstate=`firing`}[24h])) by (alertname))
- 举例查看一天的 alert
sort_desc(sum(sum_over_time(ALERTS{alertstate=`firing`}[24h])) by (alertname))
正文完