转眼间,10月已经悄然过去,距离上次与大家分享见闻的时光又过了一月有余。不知各位读者近来可好?愿你们都能好好照顾自己。
国庆假期,大家的选择都不尽相同,有的人选择外出旅行,去探亲访友,有的人则在家中享受宁静。而我则回了一趟老家,去看望爷爷奶奶,奶奶的身体欠佳,近来常住院。今年倒是因为这个原因,回家乡的次数是外出打工这几年里最多的。愈发意识到,踏入三十岁这个门槛后,不得不接受身边长辈逐渐老去的事实,而自己身心状态也无法像二十几岁时那般肆无忌惮了。
往年的长假,只要回到家乡,总是和朋友们聚在一起,去欣赏辽阔的戈壁滩、眺望连绵起伏的祁连山,或只是徜徉在一条清澈的小溪边。享受着当地鲜美的牛羊肉,搭配一口生蒜,再与好友畅聊聊外面的世界,高兴处将杯中的青稞酒一饮而尽,那时的快乐,真的是年轻时特有的滋味。
而这次回去那几天,几乎奔波于市县里的医院,心中祈祷着一切顺利,短暂几天后又回来打工干活,继续忙碌。有时候想想,这工作到底没有个头,而人生中的许多重要时刻,往往都是在短暂的假期中完成的,因此,那些时光显得格外珍贵,令人难以忘怀。
上次发文时,有读者留言表示对我技术文章不甚感兴趣,却对读书分享充满期待。这让我思索良久,与其单一地写技术文章,不如开设一个新栏目,如此不仅能保持公众号的专一性,也为读书分享提供一个归宿。我希望将自己读过的那些触动心灵的作品分享给大家,激发大家的阅读热情。即使现在忙碌无暇,也可以透过我的文字了解书中的大意,待有闲暇时再细细品味,欢迎大家关注我的新栏目。
因为有一段时间没有写文章,所以对于业界新闻的了解收集就没有多少,就不在这里复制粘贴了,不过顺带推荐下国内外技术新闻网站,感兴趣的读者朋友们可以关注下:
https://www.itnews.com.au/
https://www.oschina.net/
在 Kubernetes 监控领域,一个备受欢迎的 Helm Chart 名为 kube-prometheus-stack,它能够同时部署 Prometheus、Grafana 及其他相关监控组件。该Helm Chart由 prometheus-community 维护,为用户提供了完整的Kubernetes 监控解决方案。
详细的安装方法在我之前的这一篇文章《k8s-1.30.1版本一站式部署监控服务》,今天,我将重点分享如何在完成安装后,仅采集所需的指标,以减少资源消耗并提升监控系统的效率。
项目地址:https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack
chart包地址:https://github.com/prometheus-community/helm-charts/
k8s版本:v1.31.0
Helm chart版本:kube-prometheus-stack-65.5.1
promrtheus:v2.55.0
grafana:11.2.2
在默认配置下,kube-prometheus-stack 会采集大量指标,而并非所有指标都是用户所需的。通过精简指标,可以显著减少 Prometheus 的存储负担和查询开销,从而提升系统性能。
前提条件
这里我们思考下,一般精简指标应该怎么做?我们可以通过以下几种方式来精简 Prometheus 的指标采集:
本文将重点介绍如何通过配置抓取规则精简指标。
通常由 Kubernetes 的 Kubelet 集成,用于收集节点上运行的所有容器的资源使用情况,如 CPU、内存、文件系统和网络等。指标可以直接被 Prometheus 抓取和存储。
kube-proxy 维护节点上的网络规则,允许 Kubernetes 服务之间的网络通信。监控 kube-proxy 的指标可以帮助了解服务间流量的行为和网络性能。
负责监控未调度的 Pod,并为其分配运行的节点。它的指标通常用于监控调度延迟、调度成功率等。
它与 kube-apiserver 通信,并确保容器在 Pod 中运行。监控 kubelet 可以提供关于节点状态、Pod 生命周期管理以及资源使用的详细信息。
kube-apiserver 是 Kubernetes 控制平面的中心组件,处理所有 REST API 请求。监控它可以提供关于 API 请求速率、延迟和错误率的信息。
这是一个用于生成关于 Kubernetes 集群状态的指标的服务。如 Deployment 的副本计数、Pod 的状态等。
这是 Kubernetes 的一个核心组件,负责运行控制循环以实现集群的期望状态。监控它可以帮助理解控制器的性能和功能,如节点控制器、副本控制器等。
node-exporter 是 Prometheus 官方提供的工具,用于公开机器级别的硬件和操作系统指标。它通常用于监控节点的 CPU、内存、磁盘 I/O 和其他系统级指标。
以下是配置示例,展示如何为不同组件设置抓取规则及指标过滤:
kube-state-metrics:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: kube_pod_container_info
kubelet:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: kubelet_running_container_count
- sourceLabels: ["__name__"]
regex: container_cpu_usage_seconds_total
node-exporter:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: node_filesystem_files_free
kubeControllerManager:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: rest_client_request_duration_seconds_bucket
kubeApiServer:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: apiserver_current_inflight_requests
kubeScheduler:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: process_cpu_seconds_total
kubeProxy:
serviceMonitor:
interval: 30s
metricRelabelings:
- sourceLabels: ["__name__"]
regex: rest_client_requests_total
action: keep
可以发现,主要是加了这四行
metricRelabelings:
- sourceLabels: ["__name__"] # 要检测的label名称,__name__ 表示指标名称,也可以是任意这个点所带的label
regex: kube_node_info|kube_node_role # 上述label是否满足这个正则,在这里,我们希望__name__满足kube_node_info或kube_node_role
action: keep # 如果点满足上述条件,则保留,否则就自动抛弃
sourceLabels: 这是一个列表,用于指定应该从哪些标签中获取值进行匹配。["name"] 表示使用指标的名称作为匹配源。name 是一个内置标签,用于指代指标的完整名称。
regex: 这个是正则表达式,用于匹配 sourceLabels 中组合后的值。
action: 这个参数意思是在匹配成功后执行的操作。keep 表示保持这些匹配到的指标,而将未匹配的指标丢弃。 drop(丢弃匹配项)、replace(替换标签值)、labeldrop(删除标签)等。
以上配置为您提供了精简指标的整体思路与实践示例,可以根据自身需求采集自己想监控的指标。快去实践吧,打造属于自己的个性化监控面板!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有