目录

Rancher监控告警体系

概述

以 Rancher 2.4 为例,告警体系主要分为两个 Scope。

  1. Cluster Level
  2. Project Level

基于这两个 Scope,在 Rancher UI 上的配置是略有不同的,也正如 Scope 的名称,Cluster Level 的是用于整个集群的告警的配置,主要针对节点的物理资源或者是 ETCD 这样的公共组件,而 Project Level 自然就是项目维度的了,比如统一给项目匹配一些服务可用性之类的指标,就可以统一配置了。

配置了告警,当然就是需要通过某种机制把告警通知出来了,在 Rancher 这个概念叫做 notifier。notifier 的配置目前只能是 Cluster Level 的,即使是 Project Owner 也只能调整告警的规则,而不能直接修改 notifier 的通知配置。

https://rancher.com/docs/rancher/v2.0-v2.4/en/cluster-admin/tools/cluster-monitoring/

全局监控

全局监控是全局告警的基础,在 Rancher 2.4 的版本中,是有全局监控支持的,全局监控的实现是基于 Thanos。

/rancher%E7%9B%91%E6%8E%A7%E5%91%8A%E8%AD%A6%E4%BD%93%E7%B3%BB/img_1.png /rancher%E7%9B%91%E6%8E%A7%E5%91%8A%E8%AD%A6%E4%BD%93%E7%B3%BB/img_3.png

尽管有全局监控,但是 Rancher 并没有提供全局告警的配置给用户进行配置,这里可以理解,是因为每个集群的告警,其实都是 Rancher 通过给每个集群单独去配置告警组来实现的,如下图:

/rancher%E7%9B%91%E6%8E%A7%E5%91%8A%E8%AD%A6%E4%BD%93%E7%B3%BB/img_2.png

关于2.4

团队最近在使用 2.6 发现 Rancher 已经没有全局和项目监控的概念了,基本上完全转向了 Prometheus Operator 的骚操作了。如果是基于 2.6 版本来开发一个全局告警平台,大概的思路就是去管理所有集群(全局)的 PrometheusRule,这样可以让各个集群自己的 AlertManager 决定是否发出告警。UI 可以参考 2.4 版本的。

代码部分

整个模块的入口在下图的地方。通过 Register 函数,把告警规则和配置的 Controller 注册到主程序。

/rancher%E7%9B%91%E6%8E%A7%E5%91%8A%E8%AD%A6%E4%BD%93%E7%B3%BB/img.png

最关键的方法入口是这个 sync()。看注解也知道,这个方法是负责同步关于 AM 和 rules 的方法。

/rancher%E7%9B%91%E6%8E%A7%E5%91%8A%E8%AD%A6%E4%BD%93%E7%B3%BB/img_4.png

sync: update the secret which store the configuration of alertmanager given the latest configured notifiers and alerts rules. For each alert, it will generate a route and a receiver in the alertmanager’s configuration file, for metric rules it will update operator crd also.

警告
本文最后更新于 2022年2月19日,文中内容可能已过时,请谨慎参考。