尝试实施自定义Kubernetes监控系统时的最佳做法

时间:2019-07-27 18:39:20

标签: kubernetes prometheus

我有两个Kubernetes集群,分别代表开发和登台环境。

另外,我还将部署自定义DevOps仪表板,该仪表板将用于监视这两个集群。在此仪表板上,我将需要显示以下信息:

  • 每个环境中每个已部署Pod的RAM / HD空间/ CPU使用情况
  • 容器运行状况(如容器重启次数过多等)
  • 豆荚正常运行时间

所有这些统计信息都必须处于群集级别,并且还最好位于每个命名空间。与之类似,如果我查询一个特定的名称空间,则必须获取该名称空间的所有资源使用情况。

因此,我的信息中心的Web服务层将向我各自集群的主节点发送服务请求,以获取此信息。

我需要做的另一件事是在DevOps仪表板中实现实时通知。每当容器发生故障时,我都需要赶上该事件并通知相关人员。

我一直在阅读,出现了很多东西:Prometheus和Metric Server。我需要两个还是一个?我在本地群集上设置了Prometheus,但找不到它公开的任何端点,这些端点可由仪表板服务调用。我也在尝试设置Prometheus AlertManager,但到目前为止它没有按预期工作。现在尝试修复它。只是想检查一下这些技术是否具有满足我要求的功能。

谢谢!

2 个答案:

答案 0 :(得分:1)

我不知道您为什么要考虑使用自己的自定义监视系统。 Prometheus operator提供了您提到的所有功能。 您最终只会拥有自己的grafana仪表板,其中包含所有必需的信息。

如果您需要自定义通知,可以在Alertmanager中进行设置以创建正确的prometheusrules.monitoring.coreos.com,然后在kubernetes-mixin 中找到许多预先配置的方法。 使用Alertmanager中的标签和名称空间,您可以设置正确的路由来通知负责给定部署的人员。

Do I need both or will one do?,是的,您同时需要-Prometheus收集并汇总指标,而Metrick server公开了群集节点中的指标以供Prometheus抓取。

如果您对Prometheus,Alertmanger等有疑问,请考虑使用helm chart作为入口点。

答案 1 :(得分:1)

Prometheus + Grafana是一个非常标准的设置。

通过kube-prometheus安装prometheus-operatorhelm将为您提供  默认情况下,Grafana,Alertmanager,node-exporterkube-state-metrics均已设置为kubernetes指标。

将Alertmanager配置为do something with the alerts。 SMTP通常是第一件事,但是如果这是人们需要依赖的服务,则我建议使用某种事件管理器。

尽管仪表盘不是您的要求的一部分,但这将告诉您如何将Prometheus作为数据源进行连接。 There is docco on adding prometheus data source for grafana

有许多prebuilt charts available to add to Grafana。也有一些charts to visualise alertmanager

您的外部服务将不会直接使用Prometheus查询指标,而是会查询存储在群集中的Prometheus中收集的数据。要从外部访问API,您将需要设置Prometheus服务的外部路径。可以通过头盔部署中的入口控制器进行配置:

prometheus.ingress.enabled: true

如果需要,您可以对alertmanager API和grafana执行相同的操作。

alertmanager.ingress.enabled: true
grafana.ingress.enabled: true

如果证明有用,则可以通过相同的Prometheus入口将集群外部的Grafana用作仪表板。