能通过 cgroup 看容器的 cpu 和内存,但是负载好像只能看到宿主机的,没法看到某个容器的。
1
momocraft 2021-12-20 15:27:07 +08:00
load 的意义是等待 CPU 的队列的长度
容器一般不独占 CPU, 以容器单位统计好像意义不大 |
3
ch2 2021-12-20 18:59:04 +08:00
自己计算,容器本质上是宿主机里的一组进程
你挨个 docker top 每个容器,把 pid 分组 然后在宿主机上 top ,把所有进程的负载都获取到 按上一步获取的分组来个求和,就得到了每个容器的负载 |
4
locoz 2021-12-20 19:40:10 +08:00
可以直接用现成的比如 kubesphere 来看
|
5
mikuazusa 2021-12-20 19:50:24 +08:00
kubectl top pod POD_NAME --sort-by=cpu
|
6
kangkang 2021-12-20 20:36:17 +08:00
grafana 有现成模板
|
7
zhoudaiyu OP |
9
plko345 2021-12-21 00:53:47 +08:00 via Android
prometheus 一整套解决方案
|
10
SIGEV13 2021-12-21 06:56:23 +08:00
用 prometheus operator, 直接装 Prometheus 和一系列的 recording rules, 里面就有 pod 和容器的资源消耗。
https://github.com/prometheus-operator/prometheus-operator |
11
UnknownR 2021-12-21 10:34:24 +08:00
引入 prometheus ,可以部署在 k8s 里,然后用 Lens 、KuPi 等 IDE 工具查看,直接在面板就能看到负载。也可以接入 Grafana ,做成完整的监控方案,都很容易
|
12
pydiff 2021-12-21 13:25:32 +08:00 via iPhone
还是有点好奇的,你上 k8 没做监控,日志分析这样工作的吗
|
15
zhoudaiyu OP |
17
julyclyde 2021-12-21 17:53:15 +08:00
这是个比例啊
但你怎么定义分母呢 |