问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

通过Prometheus-Operator实现对k8s集群的监控

发布网友 发布时间:2024-09-30 12:07

我来回答

1个回答

热心网友 时间:2024-11-19 01:45

特此说明:本篇时基于prometheus-operator官网提供的kube-prometheus原生包进行部署的,由于我的k8s集群为1.18.0版本,考虑到对原生的兼容性,发现官方从release-0.5已经开始支持k8s1.18了,但是在实际使用中我使用的最新版本安装包并没有报错。 参考链接:https://zhuanlan.hu.com/p/100406234

1. 简介

随着云原生概念盛行,对于容器、服务、节点以及集群的监控变得越来越重要。Prometheus 作为 Kubernetes 监控的事实标准,有着强大的功能和良好的生态。但是它不支持分布式,不支持数据导入、导出,不支持通过 API 修改监控目标和报警规则,所以在使用它时,通常需要写脚本和代码来简化操作。Prometheus Operator 为监控 Kubernetes service、deployment 和 Prometheus 实例的管理提供了简单的定义,简化在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群。

Prometheus Operator (后面都简称 Operater) 提供如下功能:

创建/销毁:在 Kubernetes namespace 中更加容易地启动一个 Prometheues实例,一个特定应用程序或者团队可以更容易使用 Operator。

便捷配置:通过 Kubernetes 资源配置 Prometheus 的基本信息,比如版本、存储、副本集等。

通过标签标记目标服务: 基于常见的 Kubernetes label 查询自动生成监控目标配置;不需要学习 Prometheus 特定的配置语言。

2. 架构

上面架构图中,各组件以不同的方式运行在 Kubernetes 集群中:

Operator:根据自定义资源(Custom Resource Definition / CRDs)来部署和管理 Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。

Prometheus:声明 Prometheus deployment 期望的状态,Operator 确保这个 deployment 运行时一直与定义保持一致。

Prometheus Server: Operator 根据自定义资源 Prometheus 类型中定义的内容而部署的 Prometheus Server 集群,这些自定义资源可以看作是用来管理 Prometheus Server 集群的 StatefulSets 资源。

ServiceMonitor:声明指定监控的服务,描述了一组被 Prometheus 监控的目标列表。该资源通过 Labels 来选取对应的 Service Endpoint,让 Prometheus Server 通过选取的 Service 来获取 Metrics信息。

Service:简单的说就是 Prometheus 监控的对象。

Alertmanager:定义 AlertManager deployment 期望的状态,Operator 确保这个 deployment 运行时一直与定义保持一致。

3. Prometheus Operater 定义了如下的四类自定义资源:

Prometheus

ServiceMonitor

Alertmanager

PrometheusRule

3.1 Prometheus

Prometheus 自定义资源(CRD)声明了在 Kubernetes 集群中运行的 Prometheus 的期望设置。包含了副本数量,持久化存储,以及 Prometheus 实例发送警告到的 Alertmanagers等配置选项。

每一个 Prometheus 资源,Operator 都会在相同 namespace 下部署成一个正确配置的 StatefulSet,Prometheus 的 Pod 都会挂载一个名为

的 Secret,里面包含了 Prometheus 的配置。Operator 根据包含的 ServiceMonitor 生成配置,并且更新含有配置的 Secret。无论是对 ServiceMonitors 或者 Prometheus 的修改,都会持续不断的被按照前面的步骤更新。3.2 ServiceMonitor

ServiceMonitor 自定义资源(CRD)能够声明如何监控一组动态服务的定义。它使用标签选择定义一组需要被监控的服务。这样就允许组织引入如何暴露 metrics 的规定,只要符合这些规定新服务就会被发现列入监控,而不需要重新配置系统。

要想使用 Prometheus Operator 监控 Kubernetes 集群中的应用,Endpoints 对象必须存在。Endpoints 对象本质是一个 IP 地址列表。通常,Endpoints 对象由 Service 构建。Service 对象通过对象选择器发现 Pod 并将它们添加到 Endpoints 对象中。

一个 Service 可以公开一个或多个服务端口,通常情况下,这些端口由指向一个 Pod 的多个 Endpoints 支持。这也反映在各自的 Endpoints 对象中。

Prometheus Operator 引入 ServiceMonitor 对象,它发现 Endpoints 对象并配置 Prometheus 去监控这些 Pods。

ServiceMonitorSpec 的 endpoints 部分用于配置需要收集 metrics 的 Endpoints 的端口和其他参数。在一些用例中会直接监控不在服务 endpoints 中的 pods 的端口。因此,在 endpoints 部分指定 endpoint 时,请严格使用,不要混淆。

注意:endpoints(小写)是 ServiceMonitor CRD 中的一个字段,而 Endpoints(大写)是 Kubernetes 资源类型。 ServiceMonitor 和发现的目标可能来自任何 namespace。这对于跨 namespace 的监控十分重要,比如 meta-monitoring。使用 PrometheusSpec 下 ServiceMonitorNamespaceSelector, 通过各自 Prometheus server * ServiceMonitors 作用 namespece。使用 ServiceMonitorSpec 下的 namespaceSelector 可以现在允许发现 Endpoints 对象的命名空间。要发现所有命名空间下的目标,namespaceSelector 必须为空。

3.3 Alertmanager

Alertmanager 自定义资源(CRD)声明在 Kubernetes 集群中运行的 Alertmanager 的期望设置。它也提供了配置副本集和持久化存储的选项。

每一个 Alertmanager 资源,Operator 都会在相同 namespace 下部署成一个正确配置的 StatefulSet。Alertmanager pods 配置挂载一个名为

的 Secret, 使用 alertmanager.yaml key 对作为配置文件。3.4 PrometheusRule

PrometheusRule CRD 声明一个或多个 Prometheus 实例需要的 Prometheus rule。

Alerts 和 recording rules 可以保存并应用为 yaml 文件,可以被动态加载而不需要重启。

4. 部署kube-prometheus4.1 下载并解压

github地址:https://github.com/prometheus-operator/kube-prometheus

cd?/root/pkg?&&?mkdir?k8s_prometheuswget?https://github.com/prometheus-operator/kube-prometheus/archive/refs/heads/main.zipunzip?main.zip?-d?k8s_prometheuscd?k8s_prometheus/kube-prometheus-maincd?manifests4.2 部署cd?/root/pkg/k8s_prometheus/kube-prometheus-mainkubectl?create?-f?manifests/setup???#等执行完后通过kubectl?get?servicemonitors?--all-namespaces查看都创建完成后在执行下一步kubectl?get?servicemonitors?--all-namespaces?#创建完成后在执行下一步kubectl?create?-f?manifests/4.3 监控访问访问prometheus web端访问alertmanager web端访问grafana web端

添加数据源导入模板

5. 遗留的问题5.1 告警规则优化和告警媒介收发5.2 Prometheus的持久化

都到这儿了,更多文章,详见个人微信公众号ALL In Linux,来扫一扫吧!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 小米手机没有账号存便签,上别人的号以后,原来的便签没了怎么办?_百度... k8s集群+dcgm-exporter + Prometheus + Grafana采集GPU指标 【云原生•监控】基于Prometheus的云原生集群监控(理论+实践)-01 硬盘正常工作温度多少? 有谁知道OPPO Reno2 Z的字幕与音频设置方法吗? 硬盘60度以上正不正常 华为怎么一健静音 五花肉的好吃做法技巧 龙珠超宇宙怎么变身超级赛亚人2 梦见和追求过自己的男生结婚的预兆 天麻三七粉的作用 ...没人住。房子的空地上就是坟,这个梦境预示着什么呢? 真有前世今生嘛?做梦梦见了自己的前世... 我前一星期还跟我老公同床,他昨天去检查是麻风病会传染给我吗 夏天该煲什么汤喝 从来没去过丈母娘家的人是个什么样的人 去未来丈母娘家提亲怎么提法 怎么去丈母娘家提亲 苹果6怎么设置未读短信指示灯 吃完的桃子核可以盘吗 使用Prometheus监控Kubernetes CPU限制 k8s部署-54-如何完善k8s中Prometheus(普罗米修斯)监控项目呢?本文带... 怎么把抖音上的图片发到微信上面 k8s部署-52-k8s之Prometheus(普罗米修斯)监控,简单梳理下K8S监控... iphone如何把照片发到微信上面去呢? 教你使用Prometheus-Operator进行K8s集群监控 来不及解释了,快速入门Prometheus 高考什么时间送花合适? 高考前后送花有何讲究? 高考前可以送花吗? 高考前给孩子送花合适吗? 高考后给孩子送花好吗? 梦见__人搭_的预兆 高考时间什么时候送花合适? 高考送花送什么好? ...电热杯煮什么东西,除了面条和粥。请问有没有其他能够直接煮着吃的... ...版高清视频 钢铁侠2高清完整版 钢铁侠2在线观看 财神放什么方位最旺财 财神摆在什么位置最旺财运 财位上放什么最旺