使用VictoriaMetrics监控大规模Kubernetes集群

2022-03-23 00:00:00 数据 集群 多个 指标 监控

目前大多数关于Kubernetes集群监控的文章主要介绍如何使用Prometheus在Kubernetes集群上设置监控和报警系统,以及如何使用Grafana在其上建立出色的可视化系统。这本身就是一个很棒的系统,但是确实有一些问题,例如:

  • 如果Prometheus异常怎么办?如果那是在关键阶段发生的呢?现在,可以通过部署多个Prometheus实例来解决此问题,但是仍然需要全局视图
  • 如果您需要分析旧的监控数据怎么办? Prometheus默认情况下仅将数据保留15天。因此,需要维护用于保持历史数据的数据库和查询系统。
  • 如果您的架构可扩展到数百个集群/环境,该怎么办?在这种情况下,将有多个Prometheus部署,并且同样需要全局视图。

在扩展和创建高度可用的监控系统方面,存在很多问题。通过VictoriaMetrics解决所有问题。
可以将其无缝添加到现有Prometheus部署之上。而且,它提供了与Prometheus非常相似的仪表板,因此学习曲线很平。

本文主要介绍如何使用victoriametrics监控大规模Kubernetes 集群,并提供高可用,可扩展,全局视图等优势。

整体架构

下图是整体架构图,主要包括4大块:

  • 采集
  • 存储
  • 查询
  • 报警

整体架构图,可以让大家一目了然我们如何使用victoriametrics扩展Prometheus功能,从而完成对大规模集群的监控。

下面我们将对这4块一一解读。

采集

Prometheus正在迅速成为Docker和Kubernetes监控工具之一。本节介绍包括Prometheus server,kube-state-metrics,各种用到的exporter,以及监控目标自动发现。

  • 1 – Prometheus server 需要尽可能多的服务发现.
    • 有几种方法可以实现此目的::
      • Consul
      • Prometheus Kubernetes SD 插件
      • Prometheus operator 和 Custom Resource Definitions
  • 2 – 除了应用程序指标,我们还希望Prometheus收集与Kubernetes服务,节点和业务流程状态相关的指标。
    • Node exporter, 收集与主机相关的经典指标:cpu,mem,网络等
    • Kube-state-metrics 收集架构和集群维度的指标: deployments, pod 指标, resource reservation等
    • 来自内部组件的Kube-system指标: kubelet, etcd, dns, scheduler等等

关于该部分组件的安装和Promethues的配置相关,我们不做详细介绍。

更加云原生的话,可以使用 prometheus-operator 。Prometheus Operator能够帮助用户自动化的创建以及管理Prometheus Server以及其相应的配置。

当你的单个集群非常大的时候,我们可以考虑使用Prometheus relabel 中 hashmod 功能,实现采集对象的分片。

不过必须为Prometheus配置remote_write才能将数据发送到VictoriaMetrics。将以下行添加到Prometheus配置文件(通常位于/etc/prometheus/prometheus.yml中):

remote_write:
  - url: http://<victoriametrics-addr>:8428/api/v1/write

相关文章