如何定期获取kubernetes pod指标并将其附加到文件中



我正在运行kubernetes pod上的负载测试,我想每5分钟采样一次它的CPU和内存使用情况。我目前在kubernetes pod上手动使用linuxtop命令。

是否有任何方法给定kubernetes pod每X分钟获取CPU/内存使用情况并将其附加到文件中?

试试下面这行代码:

while [ true ]; do echo $(date) $(date +%s) $(kubectl top -n your-namespace pod $(kubectl get pods -n your-namespace -l your-label-name=your-label-value -o jsonpath='{..metadata.name}') | tail -n 1) | tee -a /path/to/save/your/logs.txt; done

每5分钟加入sleep 300取样,而不是连续取样。

它将在名称空间your-namespace中找到一个具有标签your-label-name的pod,其值为your-label-value,取其名称,并且只取最后一个这样的pod,如果您有多个具有相同标签的pod(这就是| tail -n 1的用途)。这样,您就不必手动确定pod的名称。然后它会输出如下内容:

Sun, Mar 12, 2023 4:59:05 PM 1678640345 your-pod-name-5c64678fc6-rsldm 47m 657Mi

其中1678640345是由$(date +%s)写入的Unix毫秒时间戳。输出将在控制台(stdout)中打印,并镜像到/path/to/save/your/logs.txt文件中。

您可以安装度量服务器,然后编写一个小bash脚本,该脚本在循环中调用kubectl top pods --all-namespaces的组合并输出到文件。如果你想要更多的内容,另一个选择是运行Prometheus和/或kube-state-metrics,并将其设置为从系统中的所有pod中抓取指标。

相关内容

  • 没有找到相关文章

最新更新