gpt4 book ai didi

java - Kubernetes、Java 和 Grafana - 如何只显示正在运行的容器?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:52:09 25 4
gpt4 key购买 nike

我正在研究一种设置,我们在 kubernetes 平台上托管的 docker 容器中运行我们的 Java 服务。

我想创建一个仪表板,我可以在其中监控我的 grafana 中所有服务实例的堆使用情况。使用以下模式将指标写入 statsd:

<servicename>.<containerid>.<processid>.heapspace运行良好,我可以在图表中看到所有堆使用情况。

重新部署后,容器名称发生变化,因此新值会添加到现有图表中。我的问题是,旧行继续存在于收到的最后一个值的位置,但容器已经死了。

grafana 有什么简单的解决方案吗?我可以说:如果您在超过 X 秒的时间内没有收到某个指标的数据,请中止图表行吗?

Many containers exit at 14:00, but the chart continues

更新:升级到最新的 Grafana 版本并在 Stacking 和 Null Value 中将“null”设置为“Null value”的值无效。

可能是statsd的问题?

我正在以以下形式向 statsd 发送数据:

felix.javaclient.machine<number>-<pid>.heap:<heapvalue>|g

这有什么问题吗?

最佳答案

这可能有两个原因,因为 grafana 正在使用空值的“已连接”设置,和/或(就像这里的情况一样)因为 statsd 在没有更新时发送先前看到的仪表值在当前时期。

Grafana 配置

您需要对图形配置进行 2 次调整:

首先,转到“显示”选项卡,在“堆叠和空值”下将“空值”更改为“空”,这将导致 Grafana 在系列没有数据时停止显示线条。

其次,如果您使用的是图例,您可以转到“图例”选项卡并在“隐藏系列”下选中“仅包含空值”复选框,这将导致项目仅在图例中显示,如果它们有图表期间的非空值。

statsd配置

statsd documentation for gauge metrics告诉我们:

If the gauge is not updated at the next flush, it will send the previous value. You can opt to send no metric at all for this gauge, by setting config.deleteGauges

因此,在这种情况下,仅靠 grafana 更改是不够的,因为 Graphite 中的值实际上不是空的(因为 statsd 不断发送最后的读数)。如果您将 statsd 配置更改为具有 deleteGauges: true,则 statsd 将不会发送任何内容并且 graphite 将包含我们期望的空值。

Graphite 笔记

作为旁注,这样的设置会导致您的数据文件夹在每次启动容器时创建新系列时不断增长。在一段时间不活动后,您肯定会考虑删除旧系列以避免填满磁盘。如果您使用带有 whisper 的 Graphite,它可以像运行 find/var/lib/graphite/whisper/-name '*.wsp' -mtime +30 -delete 的 cron 任务一样简单以删除过去 30 天内未修改的耳语文件。

关于java - Kubernetes、Java 和 Grafana - 如何只显示正在运行的容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40221691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com