Prometheus监控K8S

这篇具有很好参考价值的文章主要介绍了Prometheus监控K8S。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、描述

二、监控流程

三、Kubernetes监控指标

四、使用Prometheus监控k8s


一、描述

Cadvisor + node-exporter + prometheus + grafana是一套非常流行的Kubernetes监控方案。它们的功能如下:

- Cadvisor:容器资源监控工具,可以实时监控CPU、内存、存储、网络等容器指标,并暴露Metrics接口。

- node-exporter:节点级指标导出工具,可以监控节点的CPU、内存、磁盘、网络等指标,并暴露Metrics接口。

- Prometheus:时间序列数据库和监控报警工具,可以抓取Cadvisor和node-exporter暴露的Metrics接口,存储时序数据,并提供PromQL查询语言进行监控分析和报警。

- Grafana:图表和Dashboard工具,可以查询Prometheus中的数据,并通过图表的方式直观展示Kubernetes集群的运行指标和状态。

二、监控流程

1. 在Kubernetes集群的每个节点安装Cadvisor和node-exporter,用于采集容器和节点级指标数据。

2. 部署Prometheus,配置抓取Cadvisor和node-exporter的Metrics接口,存储 containers 和 nodes 的时序数据。

3. 使用Grafana构建监控仪表盘,选择Prometheus作为数据源,编写PromQL查询语句,展示K8S集群的CPU使用率、内存使用率、网络流量等监控指标。

4. 根据监控结果,可以设置Prometheus的报警规则,当监控指标超过阈值时发送报警信息。这套方案能够全面监控Kubernetes集群的容器和节点,通过Metrics指标和仪表盘直观反映集群状态,并实现自动报警,非常适合K8S环境下微服务应用的稳定运行。

具体实现方案如下:

- Cadvisor:在集群中每个节点作为DaemonSet部署cadvisor,采集容器Metrics。

- node-exporter:在每个节点也作为DaemonSet运行,采集节点Metrics。

- Prometheus:部署Prometheus Operator实现,作为Deployment运行,用于抓取Metrics和报警。

- Grafana:部署Grafana Operator实现,用于仪表盘展示。

三、Kubernetes监控指标

K8S本身的监控指标

1. CPU利用率:包括节点CPU利用率、Pod CPU利用率、容器CPU利用率等,用于监控CPU资源使用情况。

2. 内存利用率:包括节点内存利用率、Pod内存利用率、容器内存利用率等,用于监控内存资源使用情况。

3. 网络流量:节点网络流量、Pod网络流量、容器网络流量,用于监控网络收发包大小和带宽利用率。

4. 磁盘使用率:节点磁盘使用率,用于监控节点磁盘空间使用情况。

5. Pod状态:Pod的Running、Waiting、Succeeded、Failed等状态数量,用于监控Pod运行状态。

6. 节点状态:节点的Ready、NotReady和Unreachable状态数量,用于监控节点运行状态。

7. 容器重启次数:单个容器或Pod内所有容器的重启次数,用于监控容器稳定性。

8. API服务指标:Kubernetes API Server的请求LATENCY、请求QPS、错误码数量等,用于监控API Server性能。

9. 集群组件指标:etcd、kubelet、kube-proxy等组件的运行指标,用于监控组件运行状态。这些都是Kubernetes集群运行状态的关键指标,通过Prometheus等工具可以进行收集和存储,然后在Grafana中设计相应的Dashboard进行可视化展示。当这些指标超出正常范围时,也可以根据阈值设置报警,保证Kubernetes集群和服务的稳定运行。

例如:

- CPU利用率超过80%报警

- 内存利用率超过90%报警

- 网络流量/磁盘空间突增报警

- Pod/节点 NotReady状态超过10%报警 

- API Server请求LATENCY超过200ms报警

- etcd节点Down报警等等。

这些报警规则的设置需要根据集群大小和服务负载进行评估。

四、使用Prometheus监控k8s

部署前准备

下载prometheus、grafana、node-exporter

GitHub - redhatxl/k8s-prometheus-grafana: k8s monitor of prometheus-grafanak8s monitor of prometheus-grafana. Contribute to redhatxl/k8s-prometheus-grafana development by creating an account on GitHub.https://github.com/redhatxl/k8s-prometheus-grafana.git
 

 这里我下载下来上传了该附件,可自行下载

https://download.csdn.net/download/qq_40322236/87918488

拉去镜像:

[root@master ~]# docker pull prom/node-exporter 
[root@master ~]# docker pull prom/prometheus:v2.0.0
[root@master ~]# docker pull grafana/grafana:6.1.4

解压zip得到如下

[root@master prometheus]# ls
k8s-prometheus-grafana-master  k8s-prometheus-grafana-master.zip
[root@master prometheus]# cd k8s-prometheus-grafana-master/
[root@master k8s-prometheus-grafana-master]# ls
grafana  node-exporter.yaml  prometheus  README.md
[root@master k8s-prometheus-grafana-master]# ll
总用量 8
drwxr-xr-x 2 root root  81 1月   7 2019 grafana
-rw-r--r-- 1 root root 714 6月  13 22:29 node-exporter.yaml
drwxr-xr-x 2 root root 106 1月   7 2019 prometheus
-rw-r--r-- 1 root root 117 6月  13 22:29 README.md

先安装node-exporter.yaml

[root@master k8s-prometheus-grafana-master]# kubectl apply -f node-exporter.yaml
daemonset.apps/node-exporter created
service/node-exporter created
[root@master k8s-prometheus-grafana-master]# kubectl get pods -A
NAMESPACE       NAME                                        READY   STATUS    RESTARTS   AGE
kube-system     coredns-9d85f5447-7nhgv                     1/1     Running   5          22d
kube-system     coredns-9d85f5447-sfr9j                     1/1     Running   5          22d
kube-system     etcd-master                                 1/1     Running   6          22d
kube-system     kube-apiserver-master                       1/1     Running   6          22d
kube-system     kube-controller-manager-master              1/1     Running   7          22d
kube-system     kube-flannel-ds-77w47                       1/1     Running   4          22d
kube-system     kube-flannel-ds-trrcv                       1/1     Running   6          22d
kube-system     kube-flannel-ds-xcqgs                       1/1     Running   4          22d
kube-system     kube-proxy-674k4                            1/1     Running   4          22d
kube-system     kube-proxy-7l9bk                            1/1     Running   6          22d
kube-system     kube-proxy-kd449                            1/1     Running   4          22d
kube-system     kube-scheduler-master                       1/1     Running   7          22d
kube-system     metrics-server-59d984f5b7-2nt8z             2/2     Running   8          22d
kube-system     node-exporter-5swxx                         1/1     Running   1          3d
kube-system     node-exporter-pbx6c                         1/1     Running   1          3d
[root@master k8s-prometheus-grafana-master]# kubectl get daemonset -A
NAMESPACE     NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
kube-system   kube-flannel-ds   3         3         3       3            3           <none>                        22d
kube-system   kube-proxy        3         3         3       3            3           beta.kubernetes.io/os=linux   22d
kube-system   node-exporter     2         2         2       2            2           <none>                        3d
[root@master k8s-prometheus-grafana-master]# kubectl get service -A
NAMESPACE       NAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                        AGE
default         kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP                                        22d                              3d
kube-system     kube-dns         ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP                         22d
kube-system     node-exporter    NodePort    10.102.164.149   <none>        9100:31672/TCP                                 3d                                 3d

部署prometheus

[root@master k8s-prometheus-grafana-master]# cd prometheus/
[root@master prometheus]# ls
configmap.yaml  prometheus.deploy.yml  prometheus.svc.yml  rbac-setup.yaml
[root@master prometheus]# kubectl apply -f rbac-setup.yaml
clusterrole.rbac.authorization.k8s.io/prometheus configured
serviceaccount/prometheus configured
clusterrolebinding.rbac.authorization.k8s.io/prometheus configured
[root@master prometheus]# kubectl apply -f configmap.yaml
configmap/prometheus-config configured
[root@master prometheus]# kubectl apply -f prometheus.deploy.yml
deployment.apps/prometheus created
[root@master prometheus]# kubectl apply -f prometheus.svc.yml
service/prometheus created

部署grafana

[root@master prometheus]# cd ../grafana/
[root@master grafana]# ls
grafana-deploy.yaml  grafana-ing.yaml  grafana-svc.yaml
[root@master grafana]# kubectl apply -f grafana-deploy.yaml
deployment.apps/grafana-core created
[root@master grafana]# kubectl apply -f grafana-svc.yaml
service/grafana created
[root@master grafana]# kubectl apply -f grafana-ing.yaml
ingress.extensions/grafana created

 查看前面安装的pod和service 

prometheus监控k8s,运维,kubernetes,prometheus

prometheus监控k8s,运维,kubernetes,prometheus

访问http://192.168.159.180:31672/metrics,这是node-exporter采集的数据

 prometheus监控k8s,运维,kubernetes,prometheus

 访问prometheus地址http://192.168.159.180:30003/graphprometheus监控k8s,运维,kubernetes,prometheus

prometheus监控k8s,运维,kubernetes,prometheus

访问grafana的地址http://192.168.159.180:32418/login,默认用户密码都是admin,登录后会默认让你修改密码

prometheus监控k8s,运维,kubernetes,prometheus

 prometheus监控k8s,运维,kubernetes,prometheus

添加grafana 数据源,选择prometheus 

prometheus监控k8s,运维,kubernetes,prometheusprometheus监控k8s,运维,kubernetes,prometheus 

 prometheus监控k8s,运维,kubernetes,prometheus

prometheus监控k8s,运维,kubernetes,prometheus prometheus监控k8s,运维,kubernetes,prometheus

 prometheus监控k8s,运维,kubernetes,prometheus

把K8S的Dashboard的模板导入

prometheus监控k8s,运维,kubernetes,prometheus

prometheus监控k8s,运维,kubernetes,prometheus

prometheus监控k8s,运维,kubernetes,prometheus

导入315模板等待一会,或者可以下载好json文件,然后复制到下面的文本框中,点击load

prometheus监控k8s,运维,kubernetes,prometheus

prometheus监控k8s,运维,kubernetes,prometheus

最后就部署完成啦

prometheus监控k8s,运维,kubernetes,prometheus文章来源地址https://www.toymoban.com/news/detail-784880.html

到了这里,关于Prometheus监控K8S的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 在k8s集群内搭建Prometheus监控平台

    在k8s集群内搭建Prometheus监控平台

    Prometheus由SoundCloud发布,是一套由go语言开发的开源的监控报警时间序列数据库的组合。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控

    2024年02月14日
    浏览(38)
  • Prometheus基于k8s的自动发现配置监控

    Prometheus基于k8s的自动发现配置监控

    k8s配置Prometheus监控时,可以通过servicemonitor的方式增加job,以此来增加监控项,但这种方式进行监控配置,只能手工一个一个的增加,如果k8s集群规模较大的情况下,这种方式会很麻烦。 一种方式是采用consul注册中心的方式进行自动发现。 另外一种方式是基于kubernetes_sd_co

    2024年02月05日
    浏览(41)
  • 【k8s】基于Prometheus监控Kubernetes集群安装部署

    【k8s】基于Prometheus监控Kubernetes集群安装部署

    目录 基于Prometheus监控Kubernetes集群安装部署 一、环境准备 二、部署kubernetes集群 三、部署Prometheus监控平台 四、部署Grafana服务 五、grafana  web操作 IP地址 主机名 组件 192.168.100.131 k8s-master kubeadm、kubelet、kubectl、docker-ce 192.168.100.132 k8s-node01 kubeadm、kubelet、kubectl、docker-ce 192.168

    2024年02月12日
    浏览(49)
  • 第28关 k8s监控实战之Prometheus(七)

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。 今天继续Prometheus的课程,在之前的几节课里面,我带大家认识并部署了prometheus服务,并将一些服务做好了监控,同时通过grafana展示监控数据图表出来。对于怎么使用promql语法,也教了大家取巧的方式通过现

    2024年01月16日
    浏览(7)
  • 第28关 k8s监控实战之Prometheus(八)

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。从这节课开始,博哥计划引入golang(简称go)语言开发的一些内容,没有接触过go语言的同学也不用慌,我会尽量以一个新人的角度,去把这些go开发的内容讲得通俗一些。这节课还是继续 prometheus监控相关的

    2024年01月18日
    浏览(9)
  • 第28关 k8s监控实战之Prometheus(九)

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。早期我们经常用邮箱接收报警邮件,但是报警不及时,而且目前各云平台对邮件发送限制还比较严格,所以目前在生产中用得更为多的是基于webhook来转发报警内容到企业中用的聊天工具中,比如钉钉、企业微

    2024年01月19日
    浏览(18)
  • 第28关 k8s监控实战之Prometheus(三)

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维。这节课我们继续prometheus相关的内容。 访问prometheus后台,点击上方菜单栏 Status — Targets ,我们发现kube-controller-manager和kube-scheduler未发现 接下来我们解决下这一个碰到的问题吧 然后因为K8s的这两上核心组件

    2024年01月25日
    浏览(7)
  • k8s集群监控cadvisor+prometheus+grafana部署

    k8s集群监控cadvisor+prometheus+grafana部署

    目录 1.新建命名空间monitor 2.部署 2.1部署cadvisor 2.2部署node_exporter 2.3部署prometheus 2.4部署rbac权限 2.5.部署 metrics 2.6部署grafana 3.测试监控效果 参考文章: k8s集群部署cadvisor+node-exporter+prometheus+grafana监控系统 - cyh00001 - 博客园 准备工作: Cluster集群节点介绍: master:192.168.136.21(以

    2024年01月16日
    浏览(42)
  • prometheus监控k8s服务并告警到钉钉

    prometheus监控k8s服务并告警到钉钉

    一、监控k8s集群 要监控k8s集群需要使用到以下服务用于收集监控的资源信息,node_exporter用于监控k8s集群节点的资源信息,kube-state-metrics用于监控k8s集群的deployment、statefulset、daemonset、pod等的状态,cadvisor用于监控k8s集群的pod资源信息 在k8s集群中创建monitoring的命名空间用于部

    2024年02月13日
    浏览(50)
  • 外独立部署Prometheus+Grafana+Alertmanager监控K8S

    外独立部署Prometheus+Grafana+Alertmanager监控K8S

    用集群外的prometheus来监控k8s,主要是想把监控服务跟k8s集群隔离开,这样就能减少k8s资源的开销。 CentOS Linux release 7.7.1908 (Core)  3.10.0-1062.el7.x86_64  Docker version 20.10.21 主机名 IP 备注 prometheus-server.test.cn 192.168.10.166 k8s集群 192.168.10.160:6443 集群master-vip 需要通过exporter收集各种维

    2024年02月08日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包