您现在的位置是:测试开发营 > 系统运维
Prometheus 的新战场:精准监控阿里云 AKS Serverless 集群
测试开发营2025-11-26 18:46:56【系统运维】8人已围观
简介引言我们紧接着上篇的PromQL,接着往上盖大楼。这篇我们的主角是 Prometheus-Operator 的Prometheus,它的重要性就不言而喻了。Prometheus-Operator 是
引言
我们紧接着上篇的战场 PromQL,接着往上盖大楼。精准监控集群这篇我们的阿里主角是 Prometheus-Operator 的 Prometheus,它的战场重要性就不言而喻了。
Prometheus-Operator 是精准监控集群 Kubernetes 生态中广泛应用的监控组件 ,能够简化 Prometheus 的阿里部署和管理 。然而,战场随着云原生技术的精准监控集群发展 ,源码库监控阿里云 AKS Serverless 集群成为了一个新的阿里挑战 。这些服务本质上是战场无服务器的 ,无法通过传统的精准监控集群节点指标采集方式进行监控。因此 ,阿里我们需要对 Prometheus 自身进行调整 ,战场以更好地适配阿里云 AKS Serverless 场景 。精准监控集群
本文将探讨如何通过重塑 Prometheus ,阿里使其高效监控阿里云 AKS Serverless 环境。
开始
基本设计
prometheus-operator 的控制链路其实非常简单,我们只需要知道以下基本原理就行:
• PodMonitor 和 ServiceMonitor 最终是用于生成 Prometheus 配置文件中的香港云服务器 srape_config;
• Prometheus 可以使用一个 HTTP Post 请求 /-/reload 来在运行时重新加载配置文件使新的 scrape_config 生效;
以上文为例,prometheus-operator 的控制链路是 :
Prometheusprometheus-operator 监听 Promtheus 资源,当有 Add Event 发生时 ,prometheus-operator 将以 StatefulSet 的形式部署 Prometheus 实例。每一个 Prometheus Pod 里有两个容器:
• prometheus 容器:主容器,使用 /etc/prometheus/config_out/prometheus.env.yaml 作为主要的配置文件:
复制... - --config.file=/etc/prometheus/config_out/prometheus.env.yaml ...1.2.3.• prometheus-config-reloader 容器 :辅助容器 ,用于监听上游配置文件的变化并调用主容器的 reload 接口重新加载配置;
当我们观察这个 Pod 的 volumes 时候 ,有两个 volume 可以重点关注:
复制... volumes: - name: config secret: defaultMode: 420 secretName: prom-agent-prometheus-agent - name: config-out emptyDir: medium: Memory ...1.2.3.4.5.6.7.8.9.10.• config-out :EmptyDir 类型的模板下载卷,主要是用于 prometheus 容器与 prometheus-config-reloader 容器的数据共享,同时挂载于两个容器的 /etc/prometheus/config_out/ 中;
• config:底层是一个 Secret,这个 config 将被挂载为 prometheus-config-reloader 容器中的 /etc/prometheus/config/prometheus.yaml.gz 。 prometheus-config-reloader 会监听这个文件的变化 ,一旦有变化 ,将基于新的文件内容生成新的配置文件 /etc/prometheus/config_out/prometheus.env.yaml。 prometheus-config-reloader 将调用主容器的服务器租用 reload API 来重新加载配置文件;
PodMonitor / ServiceMonitor• prometheus-operator 监听 PodMonitor 和 ServiceMonitor 的变化 。一旦对应资源发生了变化 ,prometheus-operator 将基于新的资源生成新的配置文件并将其更新到对应的 Secrets 中。由于对应 Secrets 以文件形式挂载于 prometheus-config-reloader 容器中并被监听文件变化 ,所以当底层 Secrets 发生了变化,kubelet 将分钟级传播变化到对应容器内部,从而触发 prometheus-config-reloader 容器内的监听逻辑 。
• Secrets 内部是一个 Base64 之后的 gz 格式的 prometheus.yaml,云计算比如我们可以用下面这种方式解码出 prometheus.yaml:
复制kubectl get secrets prometheus-k8s -o jsonpath="{ .data.prometheus\.yaml\.gz}" | base64 -d > prometheus.yaml.gz gzip -d prometheus.yaml.gz1.2.3.我们这些了解完成之后 ,对于我们后面的改进可谓是……语文不好 ,有点丢人,想不出来成语了。
Prometheus CRD YAML 优化
我们先从 Prometheus 的持久化数据说起:
复制storage: volumeClaimTemplate: spec: storageClassName: alicloud-nas-subpath accessModes: - ReadWriteOnce resources: requests: storage: 15Gi1.2.3.4.5.6.7.8.9.本地存储优化;
启用 WAL 压缩;
复制wal_compression: true1.减少数据保留时间;
复制retention: 7d1.还有我们资源的优化 ,如果你的集群应用很多,资源太少 ,就会导致 pod 异常,这边你自己调整:
复制resources: limits: cpu: "3" memory: 3Gi requests: cpu: 1000m memory: 1024Mi1.2.3.4.5.6.7.完整文件;
复制apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: labels: app.kubernetes.io/component: prometheus app.kubernetes.io/instance: k8s app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 3.0.1 name: k8s namespace: monitoring spec: alerting: alertmanagers: - apiVersion: v2 name: alertmanager-main namespace: monitoring port: web enableFeatures: [] storage: volumeClaimTemplate: spec: storageClassName: alicloud-nas-subpath accessModes: - ReadWriteOnce resources: requests: storage: 15Gi externalLabels: { } image: quay.io/prometheus/prometheus:v3.0.1 nodeSelector: kubernetes.io/os: linux podMetadata: labels: app.kubernetes.io/component: prometheus app.kubernetes.io/instance: k8s app.kubernetes.io/name: prometheus app.kubernetes.io/part-of: kube-prometheus app.kubernetes.io/version: 3.0.1 podMonitorNamespaceSelector: { } # matchExpressions: # - key: kubernetes.io/metadata.name # operator: In # values: # - monitoring # - lobby podMonitorSelector: { } probeNamespaceSelector: { } probeSelector: { } replicas: 2 resources: limits: cpu: "5" memory: 5Gi requests: cpu: 2000m memory: 2048Mi ruleNamespaceSelector: { } ruleSelector: { } scrapeConfigNamespaceSelector: { } scrapeConfigSelector: { } securityContext: fsGroup: 2000 runAsNonRoot: true runAsUser: 1000 serviceAccountName: prometheus-k8s serviceMonitorSelector: { } serviceMonitorNamespaceSelector: { } # matchExpressions: # - key: kubernetes.io/metadata.name # operator: In # values: # - monitoring # - lobby version: 3.0.1 retention: 15d wal_compression: true1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.扩展
因为 Prometheus 这边优化的还挺多的 ,建站模板所以我们这一篇就先讲到这里,后面我们会更多的剖析相关内容 。
• Prometheus Agent
• PrometheusRule
结语
我们 Prometheus 基础的优化和改进就结束了 ,相比较前几篇,这篇的东西不是很多 。其实还有很多的东西都需要讲,我会把它们给分开。
很赞哦!(33)
热门文章
站长推荐
友情链接
- Draw.io在长方形里面画横线的教程
- 轻松清理联想电脑硬盘灰尘,提升性能(一键清除灰尘,为您的联想电脑注入新生命)
- 小米极简都市双肩包(打造轻松出行,舒适负重)
- 联想电脑打印错误的解决方法(解决联想电脑打印错误的实用技巧)
- 如何解决在苹果电脑上安装JDK路径错误问题(正确设置JDK路径,让开发环境无忧)
- 谷歌浏览器设置随浏览流量一起发送不跟踪请求
- 骁龙821性能绝佳,超越同级处理器(体验骁龙821,开启高性能时代)
- 探索XMOS方案的先进性与应用前景(开创音频处理技术的新纪元)
- 人体细胞的重要性与影响(探索没有细胞的人体是什么样的)
- 以喂喂通讯,让沟通更便捷(喂喂通讯,打破空间壁垒,畅享无限交流) 香港物理机b2b信息平台源码库云服务器企业服务器网站建设亿华云







