我有一个运行Docker容器化应用程序的实验主机。cAdvisor和普罗米修斯容器也在运行。
该应用程序生成容器以运行与一组命名空间(可能是数千个命名空间)中的一个相关的作业,并使用uuid命名容器。cAdvisor拿起这些OK,我可以看到每个容器的prometheus OK中的指标使用情况。这些容器的运行时间从几秒钟到大约一个小时。
我需要能够将名称空间ID (来自容器中的API调用)与prometheus中的指标相关联,因为容器名称对于运行是唯一的,并且我需要通过名称空间ID来使用它。
This doc说不要使用很多不同的标签,因为它生成了很多单独的时间序列,但添加kv似乎是最方便的方式。
This doc说要为服务级别的批处理作业使用推送网关,因为我的容器是与命名空间相关的,而不是与整个服务相关的,所以使用它似乎是不正确的。
我可能每天有5-10个容器,它们在不同的容器名称下运行,这些容器名称对应于应用程序中的相同命名空间,我需要所有5-10个容器的时间序列。
进行这种关联的最佳方式是什么?
如何从容器内部向prometheus发送少量的任意数据?
发布于 2021-07-02 22:08:32
如果您需要通过某些特征来区分一组相同的指标,那么除了使用标签之外,没有其他合理的方法。当有太多的标签或太多的标签值时,就会出现标签和存储的问题。请允许我向您展示此示例中的问题:
http_requests{code="200",client="8.8.8.8",uri="/hello"}只有三个标签,但每个标签都可以产生大量不同的时间序列。响应代码、客户端地址和访问URL的每个唯一组合一个。我认为,您的名称空间ID的可能值有限且数量很少,因此不会有任何危害。甚至唯一的容器名称(cAdvisor将它们公开为标签)的影响可能比名称空间ID更大。
还有一种使用relabel_config重写、添加或删除标签的方法。但是,如果您决定重写,那么解决方案就有点难以掌握,而且很容易中伤。如果可能的名称空间数量很少,我建议继续添加一个新标签。
https://stackoverflow.com/questions/68161993
复制相似问题