博客/工程

问我们任何问题:我应该把普罗米修斯放在容器里运行吗?

2019年5月7日2分钟

在Grbob电竞频道afana实验室,我们一直在回答客户关于最佳实践的问题。一家公司最近询问是否应该运行一个容器化的Prometheus环境,而不是基于虚拟机的环境。我们也想在这里分享我们的答案。

那么:你应该跑步吗普罗米修斯装在集装箱里?

如果您在Kubernetes中监视服务,您可能希望在Kubernetes中运行Prometheus,因此将其作为容器运行。这是因为Prometheus需要能够直接连接到每个目标以获取指标。Kubernetes给每个Pod一个唯一的IP地址,但通常这些只能在Kubernetes集群内访问。

一般来说,您希望Prometheus服务器尽可能靠近您的服务运行。如果您有多个不能相互通信的私有网络,那么您很可能需要多个Prometheus服务器,每个私有网络一台,或者HA两台。

除此之外,普罗米修斯是一个没有依赖关系的二进制文件。它在容器内或容器外都能很好地运行。Prometheus可以很好地“扩展”,对于大型Kubernetes集群,通常会将整个节点专用于Prometheus—即使它仍然是一个容器。

系统中的一些其他组件,例如node_exporter(对于节点级度量),在容器中运行有点棘手。他们需要直接访问大量的内核接口。因此,在这些情况下,直接在主机上运行可能更可取。我们在Kubernetes集群上运行它们作为DaemonSet,使用通过正确的接口映射一些特殊的配置

现在问题来了:谁监视监视器?如果Kubernetes集群面临问题,而Prometheus无法通知您该怎么办?在这种情况下,你应该让Prometheus发出一个总是会触发的警报(也就是Dead Man’s Switch),如果警报没有触发很长时间,就会由外部服务通知。这确保了Prometheus正常工作,并且整个警报管道正常工作。

关于监控最佳实践有什么问题吗?电邮至help@www.tubolov.com

想了解更多,请看我们所有的与普罗米修斯相关的博客文章