prometheus表达式计算pod的cpu占用率
时间: 2023-08-28 10:07:46 浏览: 553
可以使用以下Prometheus表达式计算Pod的CPU占用率:
```
sum(rate(container_cpu_usage_seconds_total{container_name!="POD"}[1m])) by (pod_name) / sum(kube_pod_container_resource_limits_cpu_cores) by (pod_name) * 100
```
其中,`container_cpu_usage_seconds_total`是Prometheus内置的指标,表示容器的CPU使用时间;`kube_pod_container_resource_limits_cpu_cores`表示Pod中容器的CPU限制总量。
这个表达式会计算出每个Pod的CPU使用率,并将结果以`pod_name`标签分组。最后的结果会以百分比的形式呈现。
相关问题
prometheus查询k8s各个节点的 Pod 总磁盘占用率
Prometheus是一个强大的开源监控系统,它能够监控Kubernetes(k8s)集群的状态,包括Pod的资源使用情况。如果你想查询k8s各个节点上Pod的总磁盘占用率,你需要使用PromQL(Prometheus查询语言),这是一种类似SQL的语言,用于从Prometheus数据存储中提取指标。
在PromQL中,你可以使用`container_fs_usage_bytes`指标家族来获取Pod的磁盘使用信息。例如,要计算每个节点所有Pod的总磁盘使用量,可以编写这样的查询:
```promql
sum(container_fs_usage_bytes{job="k8s", container!="POD", node_name=<node_name>}) by (node_name)
```
这里 `<node_name>` 需要替换为你想要查询的具体节点名称。这个查询将对每个节点的所有非-Pod容器(比如应用容器)的磁盘使用情况进行求和。
如果你想要汇总整个集群的总磁盘占用,可以去掉`node_name`标签:
```promql
sum(container_fs_usage_bytes{job="k8s", container!="POD"})
```
这将返回所有节点所有非Pod容器的磁盘总使用量。
prometheus设置容器中cpu使用率超过百分之90的告警规则
在Prometheus中设置容器CPU使用率超过90%的告警规则,可以通过以下步骤实现:
1. **创建告警规则文件**:
在Prometheus的规则目录下创建一个YAML文件,例如 `cpu_alerts.yml`。
2. **编写告警规则**:
在 `cpu_alerts.yml` 文件中添加如下内容:
```yaml
groups:
- name: cpu_alerts
rules:
- alert: HighCpuUsage
expr: 100 - (avg by(instance) (irate(container_cpu_usage_seconds_total{pod="<your-pod-name>"}[5m])) * 100) > 90
for: 1m
labels:
severity: critical
annotations:
summary: "Container CPU usage is above 90%"
description: "The container {{ $labels.pod }} is using more than 90% of CPU."
```
请将 `<your-pod-name>` 替换为你要监控的容器所在的Pod名称。
3. **配置Prometheus**:
编辑Prometheus的主配置文件 `prometheus.yml`,在 `rule_files` 字段下添加你刚刚创建的告警规则文件路径:
```yaml
rule_files:
- "path/to/your/cpu_alerts.yml"
```
4. **重启Prometheus**:
重启Prometheus服务以使更改生效。
5. **配置Alertmanager**:
确保你的Alertmanager已经正确配置,以便在触发告警时发送通知。你可以在 `alertmanager.yml` 中配置接收器(如Webhook、邮件等)来接收告警通知。
6. **测试告警**:
你可以通过增加容器的负载来测试告警是否能正确触发。如果一切配置正确,当容器的CPU使用率超过90%时,你应该会收到相应的告警通知。
阅读全文