多云集群监控是用户常见的诉求,本文介绍如何使用托管 Prometheus 监控自定义 Kubernetes 集群。
背景信息
多云集群监控面临的挑战
使用多云集群(多厂商集群、公有云和自建集群混合等)可以为企业带来风险分散、成本优化、资源丰富、选择灵活等优势。但同时,跨厂商、跨地域的集群架构也会带来很多问题,尤其在多云监控方向,尤为明显。包括:
- 数据聚合和可视化挑战:监控数据分散在不同的地理位置,无法有效地聚合和统一展示。导致无法构建一个全局视角的监控大盘,管理员也无法一目了然地了解所有集群的状态和性能。
- 资源和成本管理:多云集群意味着需要搭建多个监控系统,这会导致更高的资源消耗和监控成本。
- 配置和管理复杂性:多云集群可能需要重复的配置和管理策略,增加了管理的复杂性。同时,由于监控系统割裂,无法确保监控的一致性,因此也就无法及时发现可能出现的故障和问题。
- 故障诊断和响应:在多云环境中,定位和诊断问题可能更加困难,因为可能涉及到跨云的资源和服务。需要建立一致的监控、故障响应和升级流程,才能确保及时解决问题,减少业务影响。
为解决多云集群带来的监控一致性问题,托管 Prometheus 提供了多云集群监控方案和采集组件。方便用户在实现云服务监控的同时,也能够实现其他厂商集群、自建集群的接入和统一监控。
说明
本文采用最简单的方式,介绍了如何快速地完成多云集群监控配置。相关组件均采用了默认规格,也未涉及挂载持久存储等操作。目的是方便用户能够快速了解自定义集群接入托管 Prometheus 的方法。
监控方案
托管 Prometheus 为您提供了 2 种开箱即用的指标采集方案,支持直接在标准 Kubernetes 集群中安装采集组件,并对接托管 Prometheus 工作区,完成多云集群的相关指标的采集和汇入,实现多云集群统一监控。详情请参见 自建 Kubernetes 集群接入。
前提条件
- 已在集群中安装 ingress-nginx 组件,并配置内网负载均衡,详情请参见 安装组件。
- 已创建托管 Prometheus 工作区,详情请参见 创建工作区。
- 已开通云企业网,并打通火山引擎内网和自定义集群所在网络。详情请参见 云企业网文档。
- 自定义集群的 Kubernetes 版本为 v1.20~v1.24,其他版本的集群可能存在兼容性问题。
- 已创建命名空间,本文中以 volcano-metrics 为例。
注意
请勿在自定义集群中安装开源 Prometheus 或其他监控系统的采集组件,这些组件可能与托管 Prometheus 提供的采集器组件冲突,导致组件异常。
- 在本地环境(Linux/Mac)中能够使用 kubectl 正确连接集群。包括 VKE 集群和自定义 Kubernetes 集群。
配置步骤
步骤一:在 VKE 集群中配置工作区代理
托管 Prometheus 工作区提供 Remote Write 地址,当用户使用云企业网将自定义集群所在私有网络和火山引擎网络打通后,可使用代理的方式长期将大规模指标数据写入 VMP。
- 在左侧导航栏中,选择 服务与路由 > 服务。单击 使用 Yaml 创建,创建服务。通过ExternalName类型的服务访问托管 Prometheus 工作区,获取工作区地址请参见 获取工作区地址。
externalName: write.prometheus-cn-beijing.ivolces.com
- 在左侧导航栏中,选择 工作负载 > 对象浏览器。 单击 使用 Yaml 创建,创建路由规则。指定自定义域名和服务的映射关系。
apiVersion: networking.k8s.io/v1
ingressClassName: nginx
- 配置完成后,您可以在 服务与路由 > 路由规则 界面中,查看 Ingress 对应的私网 IP 地址。
步骤二:在自定义集群中配置 DNS
为保证部署在自定义集群中的采集器能够正确识别自定义域名,您需要在自定义集群中配置 CoreDNS,指定自定义域名和 Ingress 内网 IP 地址之间的解析关系。
- 执行以下命令,修改 CoreDNS 的配置文件。
kubectl edit configmap -n kube-system coredns
在配置文件中增加自定义的 Hosts,例如192.168.48.3 vmp-test.com。
192.168.48.3 vmp-test.com
forward . /etc/resolv.conf {
步骤三:在自定义集群中部署采集器
注意
火山引擎为您提供了 2 个开箱即用的采集方案,分别为 VMP Agent 和 VM Agent,本文以部署 VM Agent 为例。详情请参见 采集器方案概述。 - 在本地环境中下载采集器部署脚本。详情请参见 获取脚本。
--namespace volcano-metrics \
--remote-write-url http://vmp-test.com/workspaces/b762e1a3-37***/api/v1/write \
--basic-auth-username username-demo \
--basic-auth-password password-demo
检查结果
查看组件状态
组件安装完成后,您可以登录自定义集群界面,查看采集器组件的工作状态,每个组件的名称、类型和作用说明如下表所示。
查看 vm-operator 组件工作状态,以阿里云 ACK 为例。
查看采集器工作状态,以阿里云 ACK 为例。
查看 ingress 监控
使用代理的方式向托管 Prometheus 工作区写入监控数据,写入性能与 VKE 集群中的 ingress 实例性能密切相关。建议您通过 VKE 集群的可观测性功能,对 ingress 实例进行监控和运维。可参考如下文档:
监控和告警
指标
您可以使用托管 Prometheus 的 Explore 功能来快速查询和展示指标数据。详情请参见 指标查询。
大盘
您可以自建 Grafana,并通过 Grafana 查看指标和创建大盘。包括:
告警
您可以在托管 Prometheus 的告警中心配置相关告警。详情请参见 创建告警规则。 常见问题
无公网环境如何下载并部署采集器
托管 Prometheus 为您提供的采集器,默认保存在镜像仓库中。如果您的自定义集群无公网环境,无法访问 Internet。则可以遵循以下步骤:
- 部署采集器时,增加私有仓库的字段,允许从私有仓库拉取采集器镜像。
--namespace volcano-metrics \
--remote-write-url http://vmp-test.com/workspaces/b762e1a3-37***/api/v1/write \
--basic-auth-username username-demo \
--basic-auth-password password-demo \
--private-registry xxx \
--private-registry-username xxx \
--private-registry-password yyy