Kubernetes(k8s)-Prometheus(监控项目)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。

我们上一些小节介绍Pormetheus的安装,已经可以通过查看监控项目&报警等信息,但是这些监控信息是怎么来的,又有哪些监控指标,今天我们这小节就来介绍这些信息。

1.监控项目

#他就通CRD 注册的资源kubectl get servicemonitor -n monitoring  

图片

但是在默认的 Prometheus Targets 页面只有12个选项,其中prometheus-grafana这个监控项目未自动监控,那是因为这个资源未添加对应的标签,给这个资源添加这个标签以后,就会进入监控项目,包括其他项目也可以通过添加标签进入监控。

图片

如果是第三方暴露mariadb-metrics,也可以通过添加这个标签进行Prometheus监控。

图片

当然这里还有监控项目存在多个暴露地址的情况,比如下图的Kubelet。

这里就包括kubelet自身的监控,节点Pod的等监控。

图片

2.异常的监控项目

默认只有下面几个是异常状态,其中除了kube-proxy其他3个都是都是静态Pod,通过修改静态Pod的yaml文件即可。

#kube-proxy修改这个cm即可,然后把所有Pod重启。metricsBindAddress: "0.0.0.0"

图片

3.监控项目介绍

这10多个监控项目,每个监控项目都有很多监控子项,下面就是关于每个监控项目的介绍:

3.1prometheus-grafana:监控grafana组件的健康状态。

3.2prometheus-kube-prometheus-alertmanager:监控告警组件的状态。

3.3prometheus-kube-prometheus-apiserver:监控 Kubernetes APIServer 的性能和健康状态。

3.4prometheus-kube-prometheus-coredns:监控 CoreDNS 的 DNS 解析性能。

3.5prometheus-kube-prometheus-kube-controller-manager:监控 Kubernetes 控制器管理器(Controller Manager)。

3.6prometheus-kube-prometheus-kube-etcd:监控 etcd 集群的健康状态和性能。

3.7prometheus-kube-prometheus-kube-proxy:监控 kube-proxy 的网络代理性能。

3.8prometheus-kube-prometheus-kube-scheduler:监控 Kubernetes 调度器(Scheduler)的性能。

3.9prometheus-kube-prometheus-kubelet:监控 kubelet 和节点资源及Pod状态。

3.10prometheus-kube-prometheus-operator:监控prometheus的opterator的状态。

3.11prometheus-kube-prometheus-prometheus:监控prometheus自己的监控。

3.12prometheus-kube-state-metrics:将 Kubernetes 资源状态(如 Deployment、Pod、Service)转换为 Prometheus 指标

3.13prometheus-prometheus-node-exporter:Node Exporter,收集节点级硬件和操作系统指标。

4.监控指标介绍

上面涉及到13个监控项目,每个监控项目下面都有很多指标,通过https方式暴露,我们可以通过访问https地址进行查看(客户端请求也需要带上证书才可以)。并且这里的监控指标和prometheus的查询的指标就可以进行重叠。如果监控其他项目也支持http方式监控,只是这里集成的云集都是https监控。

# 提取客户端证书
grep 'client-certificate-data' ~/.kube/config | awk '{print $2}' | base64 -d > client.crt

# 提取客户端私钥
grep 'client-key-data' ~/.kube/config | awk '{print $2}' | base64 -d > client.key

# 提取集群 CA 证书
grep 'certificate-authority-data' ~/.kube/config | awk '{print $2}' | base64 -d > ca.crt
​​​​​​​
#当然也可以获取其他监控指标,这里以kubelet指标为例
curl --cert client.crt --key client.key --cacert ca.crt -k \
  "https://<节点IP>:10250/metrics/" 

​​​​​​​

然后这里的指标可以和prom查询的指标重合。

图片

后面的数据类型代表了不同类型的指标。

这样我们通过Prometheus完成了监控来源(监控项目)和监控指标的汇聚,这样我们的Pormetheus里面就会存在很多监控指标,我们可以基于这些指标做告警和图表展示。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

### 使用 Prometheus 实现 Kubernetes 集群监控 #### 定义抓取目标 Prometheus 的抓取目标可以通过 `ServiceMonitor` 和 `PodMonitor` 资源来定义,这些资源由 Prometheus Operator 简化管理,在 Kubernetes 中配置 Prometheus 变得更加便捷[^2]。 ```yaml apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: example-servicemonitor spec: selector: matchLabels: app: my-app endpoints: - port: http-metrics ``` 此 YAML 文件展示了如何创建一个 `ServiceMonitor` 来指定 Prometheus 应该从哪些服务收集度量标准。通过这种方式可以轻松地将任何应用的服务暴露给 Prometheus 进行监控。 #### 关键指标与告警规则设置 对于 Kubernetes 监控的最佳实践而言,除了关注应用程序级别的性能外,还需要特别注意一些核心组件的状态,比如节点健康状况、容器重启次数等重要参数,并据此设定合理的阈值触发警告通知机制[^3]。 例如,针对 CPU 利用率过高情况下的报警规则: ```yaml groups: - name: example rules: - alert: HighCpuUsage expr: sum(rate(container_cpu_usage_seconds_total{job="kubernetes-cadvisor"}[5m])) by (node) > 0.9 for: 1m labels: severity: page annotations: summary: "High CPU usage on {{ $labels.node }}" description: "{{ $labels.node }} has had greater than 90% cpu utilization for the last minute." ``` 这段 PromQL 表达式用于检测某个节点在过去一分钟内的平均 CPU 占用是否超过了 90%,一旦满足条件就会发出警报提醒管理员采取相应措施。 #### 自身状态监测 为了保障整个监控体系稳定运行,同样不可忽视对 Prometheus Server 自身健康的持续跟踪,确保其正常工作不会成为潜在风险点之一。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值