Kubernetes 每天可以生成数百万个新指标。监控集群健康状况最具挑战性的方面之一是筛选哪些指标是重要的,需要收集和关注。 在本文中,我将定义应该监控和创建警报的 16 个关键 Kubernetes 指标。 公司组织的列表可能略有不同,但在制定组织的 Kubernetes 监控策略时,这 16 个是了解k8s集群监控状态最好的指标。 8Persistent Volume Failures 持久卷是在集群上指定的存储资源,可用作任何请求它的 Pod 的持久存储。 集群事件能监控 pod 生命周期并观察重大的 pod 故障,并且观察从集群流出的事件速率可以是一个很好的早期预警指标。如果事件发生率突然或显着变化,则可能表明出现问题。
本文主要针对metrics-server展开指标收集链路的梳理,目的在于快速解决容器指标监控中的常见问题,比如: 为何kubectl top node 看到的资源使用率远高于top看到的? 注:阿里云云监控容器监控控制台展示的指标基于metrics-server配置的sinkprovider 8093端口获取数据 # kubectl get svc -n kube-system Metrics server定期向kubelet暴露的endpoint收集数据转换成k8s API格式,暴露给Metrics API. 图片 如果此处apiservice指向有问题导致指标获取异常,可清理资源重装metrics-server: 1,删除 v1beta1.metrics.k8s.io ApiServices kubectl registry-vpc.cn-beijing.aliyuncs.com/acs/metrics-server:v0.3.8.5-307cf45-aliyun 注意,sink中定义的8093端口,用于metrics-server pod向云监控提供指标数据
K8s 是容器编排领域的事实标准,作为一名后端开发,如果对 K8s 的技术原理不够了解,未来无论是在日常工作还是求职面试中,可能都会面临一些挑战问题。 本文是腾讯云可观测平台工程师柯开所总结的 K8s 核心技术原理,帮助你轻松拿捏!长文干货预警,建议先点赞转发收藏一键三连再来仔细阅读,对照问题场景印证效果更佳! 03、Kubernetes 关键组件和指标 既然我们已经知道了为什么需要监控 Kubernetes,接下来咱们就来聊聊到底监控什么? Kubernetes 是一个复杂的系统,涉及很多组件和指标。 如果不知道监控哪些东西,那监控工具再强大也是白搭。 接下来我们将深入探讨 Kubernetes 监控的关键组件和指标。 以及如何通过这些指标构建一个完整的监控体系。 我们可以根据 Kubernetes 监控数据的来源,将其分为三大类: 用户业务 Pod 暴露的指标:这些指标主要与应用性能和业务逻辑相关。
1.1. metrics.go指标定义 pkg/scheduler/metrics/metrics.go SchedulingLatency = prometheus.NewSummaryVec(
今天主要分享下,在 k8s 集群下,微服务的各种状态指标情况的监控,我们都知道 Prometheus 是做数据监控的,但说白点,其独特格式的数据,其实都是靠一些源来的,那么这些源有哪些呢? 已经有了 cadvisor、heapster、metric-server,几乎容器运行的所有指标都能拿到,但是下面这种情况却无能为力: 调度了N个replicas?现在可用的有N个? kube-state-metrics 很简单,增加了注解方便后面使用 坑:源码中的角色授权绑定的是其写的 kind 为 ClusterRole 的资源,但后来发现部署 kube-state-metrics 服务时,其无法成功访问 k8s 的 api-server,故需要修改,弃用其 ClusterRole,使用 k8s 系统最高权限 cluster-admin。 导入模板 最后从 https://grafana.com/grafana/dashboards/8588 下载 state-metrics 监控模版导入模板 导入到 grafana 后,即可看到效果咯:
后渗透:Kubesploit : https://github.com/cyberark/kubesploit 后渗透:k0otkit: https://github.com/Metarget/k0otkit 安全评估:Red Kube :https://github.com/lightspin-tech/red-kube 容器攻击工具:ccat : https://github.com/RhinoSecurityLabs/ccat 安全测试:Kubestriker :https://github.com/vchinnipilli/kubestriker
使用prometheus全方位监控k8s集群 prometheus架构 Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。 Exporters:采集已有的第三方服务监控指标并暴露metrics。 Alertmanager:告警。 Web UI:简单的Web控制台。 prometheus监控k8s架构 ? 监控指标 具体实现 举例 Pod性能 cAdvisor 容器CPU,内存使用率 Node性能 node-exporter 节点CPU,内存使用率 k8s资源对象 kube-state-metrics Pod 监控k8s集群中的pod,node以及资源状态 pod 监控使用的yml(获取这些文件请加QQ122725501) $ ls -l kube-* -rw-r--r-- 1 root root 2362 root root 58945 Dec 23 2019 K8S集群资源监控-20191219.json ?
我们上一些小节介绍Pormetheus的安装,已经可以通过查看监控项目&报警等信息,但是这些监控信息是怎么来的,又有哪些监控指标,今天我们这小节就来介绍这些信息。 4.监控指标介绍 上面涉及到13个监控项目,每个监控项目下面都有很多指标,通过https方式暴露,我们可以通过访问https地址进行查看(客户端请求也需要带上证书才可以)。 并且这里的监控指标和prometheus的查询的指标就可以进行重叠。如果监控其他项目也支持http方式监控,只是这里集成的云集都是https监控。 metrics/" 然后这里的指标可以和prom查询的指标重合。 这样我们通过Prometheus完成了监控来源(监控项目)和监控指标的汇聚,这样我们的Pormetheus里面就会存在很多监控指标,我们可以基于这些指标做告警和图表展示。
一、核心特性 多维数据模型 基于 指标名称(Metric Name) 和 键值对标签(Labels) 标识时间序列数据,支持灵活的查询和聚合。 拉取(Pull)模型 Prometheus 主动从目标服务 拉取指标数据(通过 HTTP 协议),适合动态环境(如 Kubernetes)。 Exporters 将第三方系统(如 MySQL、Node.js、硬件)的指标转换为 Prometheus 格式。 Pushgateway 临时存储短暂任务(如批处理作业)推送的指标数据,供 Prometheus 拉取。 Client Libraries 提供多种语言(Go、Java、Python 等)的 SDK,用于在应用中直接暴露指标。
监控k8s 集群节点 对于集群的监控一般我们需要考虑以下几个方面: Kubernetes 节点的监控:比如节点的 cpu、load、disk、memory 等指标 内部系统组件的状态:比如 kube-scheduler 集群节点监控 这里通过 Prometheus 来采集节点的监控指标数据,可以通过node_exporter来获取,顾名思义,node_exporter 就是抓取用于采集服务器节点的各种运行指标,目前 node_exporter path: /sys - name: rootfs hostPath: path: / EOF 由于要获取到的数据是主机的监控指标数据 上面是不是指定了hostNetwork=true,所以在每个节点上就会绑定一个端口 9100,可以通过这个端口去获取到监控指标数据: # curl 127.0.0.1:9100/metrics | head meta_kubernetes_node_annotation:来自节点对象的每个注释 _meta_kubernetes_node_address:每个节点地址类型的第一个地址(如果存在) * 另外由于 kubelet 也自带了一些监控指标数据
然后,对于每个 Pod,脚本会获取其 CPU 和内存使用情况以及限制,并计算出使用率 0 */1 * * * cd /srv/monitor/k8s_monitor_pod.sh #!
面对这一严峻挑战,嘉为蓝鲸WeOps一体化智能运维平台(订阅制),凭借其强大的分钟级数据采集与深度资源关联分析能力,推出了针对K8s集群的专业监控解决方案。 01.传统监控工具的局限性:难以应对云原生动态性动态性失明:无法有效追踪和适配Pod的弹性扩缩容、节点实时迁移等K8s核心动态特性,监控视图滞后或失效。 02.WeOps破局之道:构建高效监控基石指标深度覆盖:全面采集Pod、Node、etcd等核心K8s资源对象,覆盖超过100项关键指标,洞察细微变化。 嘉为蓝鲸WeOps一体化智能运维平台(订阅制)通过深度指标覆盖、实时关系映射、全景可视监控夯实基础,并积极融合智能分析、预测预警与根因定位能力,不仅有效破解了大规模K8s集群的监控难题,更将运维效率提升至全新高度 ,为企业云原生之旅保驾护航,释放K8s的无限潜能。
之前一直在寻找一个 k8s 监控的工具,因为一直使用的是本地的 lens 的客户端,虽然使用上已经非常方便了,但是其实对于资源消耗的监控少了一点,有些资源消耗并不是能容易看到,并且服务间依赖是没有办法表现出来的 容器交互:实时查看日志和描述信息 支持插件:可以通过插件扩展 部署方便:一个命令即可部署完成 监控页面 资源监控 可以清楚的看到每个 node 的资源使用情况 服务间依赖 因为内部服务与服务之间通过 rpc 进行交互,从这里可以很容易看出,某个服务被别的五个服务所依赖调用 容器交互 可以看到占用的 cpu 和内存的情况,然后占用的端口等,还有日志信息 部署 支持直接部署在 k8s 集群中,不需要额外的任何配置 https://www.weave.works/docs/scope/latest/installing/#k8s # 下面一个命令就能部署完成了 kubectl apply -f "https:// cloud.weave.works/k8s/scope.yaml?
通常我们使用 Prometheus 对 K8S 集群进行监控,但由于 Prometheus 自身单点的问题。 本文就介绍使用 VictoriaMetrics 作为数据存储后端对 K8S 集群进行监控,k8s 部署不再具体描述。 master,node 节点负载状态 k8s 组件状态 etcd 状态 k8s 集群资源状态 (deploy,sts,pod...) # -- k8s cluster domain suffix, uses for building stroage pods' FQDN. 采用 daemonset 的方式部署在 K8S 集群,并通过 scrape 注释。让 vmagent 自动添加 targets。
就不在这里复制粘贴了,不过顺带推荐下国内外技术新闻网站,感兴趣的读者朋友们可以关注下: https://www.itnews.com.au/ https://www.oschina.net/ Helm一站式部署k8s 详细的安装方法在我之前的这一篇文章《k8s-1.30.1版本一站式部署监控服务》,今天,我将重点分享如何在完成安装后,仅采集所需的指标,以减少资源消耗并提升监控系统的效率。 tree/main/charts/kube-prometheus-stack chart包地址:https://github.com/prometheus-community/helm-charts/ k8s 前提条件 一个 K8s 集群 一个prometheus实例 如何精简指标? 这里我们思考下,一般精简指标应该怎么做? 以上配置为您提供了精简指标的整体思路与实践示例,可以根据自身需求采集自己想监控的指标。快去实践吧,打造属于自己的个性化监控面板!
直达原文:可观测容器监控利器:K8s环境下的指标采集与日志治理最佳实践01.K8s容器监控的核心挑战1)动态环境与架构复杂性容器生命周期短且频繁变化,应用由多微服务构成并分布在不同节点。 监控工具需快速适应环境变化并追踪跨服务问题。2)数据量与性能开销高频采集产生的海量指标和日志数据对存储和处理带来压力,监控系统自身需避免影响应用性能。 3)多层次监控需求需覆盖基础设施、容器运行时、编排平台及应用层性能指标。 节点日志:收集K8s Node节点日志。2)精准采集策略支持按需选择指定Pod,并基于过滤条件减少无效数据。3)开箱即用的治理能力内置默认容器监控策略、仪表盘及指标文档,降低配置门槛。 ),显著提升K8s环境可观测性。
本文章已发布到个人博客:https://www.niewx.cn/ 这次要介绍一个 Kubernetes 资源观测工具,实时监控 Kubernetes 集群中各种资源的新建、更新和删除,并实时通知到各种协作软件 an app将kubewatch app关联到test channel image.png 关联成功后,后续消息将会发生到test channel中 image.png 2.部署kubewatch到k8s channel,我这里是test,将之前APP的token填写到token配置项 image.png 查看pod日志,检查服务是否允许,这边pod出现如下日志,则表示接入slack成功 image.png 3.k8s 下面我们尝试重建一个pod,看下slack是否会接收到变更信息,我们在test下部署一个busybox的pod image.png 从下图可以发现,slack有接收到变更的信息,说明我们已经成功部署kubewatch监控 k8s集群并接入到slack image.png
k8s监控组件heapster安装部署 参考文档 https://github.com/kubernetes/heapster/tree/master/deploy k8s集群安装部署 http://jerrymin.blog .51cto.com/3002256/1898243 k8s集群RC、SVC、POD部署 http://jerrymin.blog.51cto.com/3002256/1900260 k8s集群组件kubernetes-dashboard 和kube-dns部署 http://jerrymin.blog.51cto.com/3002256/1900508 k8s集群监控组件heapster部署 http://jerrymin.blog.51cto.com /3002256/1904460 k8s集群反向代理负载均衡组件部署 http://jerrymin.blog.51cto.com/3002256/1904463 k8s集群挂载volume之nfs /kube.sh start 这里是自带监控脚本安装,安装完成后会生成 [root@k8s-master deploy]# kubectl get pods -o wide --namespace=
,因为每一个节点下面都有 kubelet,自然都有cAdvisor采集到的数据指标,配置如下: cat > prometheus-cm.yaml<<EOF apiVersion: v1 kind: ConfigMap 这就是说要想自动发现集群中的 Service,就需要在 Service 的annotation区域添加prometheus.io/scrape=true的声明,现在先将上面的配置更新,查看下效果: k8s 集群中的资源类型监控 上面配置了自动发现 Service(Pod也是一样的)的监控,但是这些监控数据都是应用内部的监控,需要应用本身提供一个/metrics接口,或者对应的 exporter 来暴露对应的指标数据 但通过查看前面从集群中拉取的指标(这些指标主要来自 apiserver 和 kubelet 中集成的 cAdvisor),并没有具体的各种资源对象的状态指标。 对于 Prometheus 来说,当然是需要引入新的 exporter 来暴露这些指标,Kubernetes 提供了一个kube-state-metrics就是我们需要的。
最近在做k8s相关的开发工作,涉及不少k8s的相关知识,这里记录下。 问题引出 遇到一个需求,要使用prometheus监控多个k8s集群。 因此最初的构想是在每套k8s集群里部署prometheus,由它采集该集群的监控指标,再运用prometheus的联邦模式将多个prometheus中的监控数据聚合采集到一个中心prometheus里来 但甲方觉得上述方案中每个k8s集群都要部署prometheus,增加了每套k8s集群的资源开销,希望全局只部署一套prometheus,由它统一采集多个k8s集群的监控指标。 尽管个人不太认可这种方案,中心prometheus今后很有可能成为性能瓶颈,但甲方要求的总得尽力满足,下面开始研究如何用一个prometheus采集多个k8s集群的监控指标。 prometheus采集当前k8s监控数据 首先分析prometheus是如何采集单个k8s集群的监控指标。