Kubernetes 的监控与告警

本文介绍如何对 Kubernetes 集群进行监控及配置告警。

Kubernetes 的监控

随集群部署的 TiDB 监控只关注 TiDB 本身各组件的运行情况,并不包括对容器资源、宿主机、Kubernetes 组件和 TiDB Operator 等的监控。对于这些组件或资源的监控,需要在整个 Kubernetes 集群维度部署监控系统来实现。

宿主机监控

对宿主机及其资源的监控与传统的服务器物理资源监控相同。

如果在你的现有基础设施中已经有针对物理服务器的监控系统,只需要通过常规方法将 Kubernetes 所在的宿主机添加到现有监控系统中即可;如果没有可用的监控系统,或者希望部署一套独立的监控系统用于监控 Kubernetes 所在的宿主机,也可以使用你熟悉的任意监控系统。

新部署的监控系统可以运行于独立的服务器、直接运行于 Kubernetes 所在的宿主机,或运行于 Kubernetes 集群内,不同部署方式除在安装配置与资源利用上存在少许差异,在使用上并没有重大区别。

常见的可用于监控服务器资源的开源监控系统有:

一些云服务商或专门的性能监控服务提供商也有各自的免费或收费的监控解决方案可以选择。

我们推荐通过 Prometheus Operator 在 Kubernetes 集群内部署基于 Node Exporter 和 Prometheus 的宿主机监控系统,这一方案同时可以兼容并用于 Kubernetes 自身组件的监控。

Kubernetes 组件监控

对 Kubernetes 组件的监控可以参考官方文档提供的方案,也可以使用其他兼容 Kubernetes 的监控系统来进行。

一些云服务商可能提供了自己的 Kubernetes 组件监控方案,一些专门的性能监控服务商也有各自的 Kubernetes 集成方案可以选择。

由于 TiDB Operator 实际上是运行于 Kubernetes 中的容器,选择任一可以覆盖对 Kubernetes 容器状态及资源进行监控的监控系统即可覆盖对 TiDB Operator 的监控,无需再额外部署监控组件。

我们推荐通过 Prometheus Operator 部署基于 Node Exporter 和 Prometheus 的宿主机监控系统,这一方案同时可以兼容并用于对宿主机资源的监控。

Kubernetes 告警

如果使用 Prometheus Operator 部署针对 Kubernetes 宿主机和服务的监控,会默认配置一些告警规则,并且会部署一个 AlertManager 服务,具体的设置方法请参阅 kube-prometheus 的说明。

如果使用其他的工具或服务对 Kubernetes 宿主机和服务进行监控,请查阅该工具或服务提供商的对应资料。