prometheus+grafan监控k8s集群详解(代码片段)

author author     2023-04-18     674

关键词:

一,Prometheus概述

1,什么是Prometheus?
Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包,自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立与任何公司维护。为了强调这一点并阐明项目的治理结构,Prometheus在2016年加入了 Cloud Native Computing Foundation(云原生计算基金会(CNCF)),这是继kubernetes之后的第二个托官项目。

2,Prometheus的优势
Prometheus 的主要优势有:

  • 由指标名称和键/值识别时间序列数据组成的多维数据模型。
  • 强大的查询语言 (PromQL)
  • 不依赖分布式存储;单个服务节点具有自治能力。
  • 通过基于HTTP的拉取方式采集时间序列数据。
  • 可以通过中间网关来推送时间序列数据。
  • 可以通过静态配置文件或服务发现来获取监控目标。
  • 支持多种类型的图标和仪表盘,比如Grafana等。

3,Prometheus的核心组件
Prometheus生态系统有多个组件组成,其中有许多组件是可选的:

  • Prometheus Server:用于收集指标和存储时间序列数据,并提供查询接口。
  • client Library:客户端库(例如Go,python,java等),为需要监控的服务产生相应的/metrics(服务指标度量)并暴露给Prometheus server。
  • push gateway:推送网关,主要用于临时性的jobs。由于这类jobs存在时间较短,可能在Prometheus来pull之前就消失了,对此jobs定时将指标push到pushgateway,再由Prometheus server从pushgateway上pull。
  • Exporter:用于暴露已有的第三方服务的 metrics 给Prometheus。
  • alertmanager:用来处理告警,从Prometheus server端接收警告后,会进行去除重复数据,分组,并路由到对收的接收方式,发出报警。最常见的接收方式:电子邮件。

4,Prometheus的架构
Prometheus 的整体架构以及生态系统组件如下图所示:
技术图片

Prometheus server直接从监控目标中或者间接通过推送网关来拉取监控指标,它在本地存储所有抓取到的样本数据,并对此数据执行一系列规则,以汇总和记录现有数据的新时间序列和生成告警。可以通过Grafana或者其他工具来实现监控数据的可视化。

5,Prometheus的优缺点
Prometheus对于采集纯数字值的时间序列非常在行,所以它适合以物理机为中心的监控,也适合监控高度动态的面向服务的架构体。在微服务领域,它的多维数据采集以及查询非常独到且很有竞争力。
Prometheus最大的价值在于可靠性,用户可以再任何时候看到整个被监控系统的统计信息,即使在系统有问题的是时候。但它不能做到100%的精确,比如如果你要按请求数据计费,那么Prometheus不太适合你,因为它收集的数据可能不够详细完整。这种情况下你最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus来监控系统的其余部分。

二,Prometheus部署

部署环境:

节点名 主机ip 操作系统
master 172.16.1.30 Centos7
node01 172.16.1.31 Centos7
node02 172.16.1.32 Centos7

1,获得Prometheus的git项目:

1)安装git工具包:
[root@master ~]# yum install git -y
2)获取Prometheus的git项目:
[root@master prometheus]#  git clone https://github.com/coreos/kube-prometheus.git

技术图片
技术图片

#执行git pull命令进行更新,确保克隆到本地的是最新的:
[root@master kube-prometheus]# git pull
Already up-to-date.

2,导入部署Prometheus所需组件镜像:
1)在集群中的所有node上进行上传镜像包(包括master)
技术图片
2)分别在集群中的node上进行load操作:

#注意:确定在当前路径下执行
[root@master images]# for i in `ls`; do docker load < $i; done
[root@node01 images]# for i in `ls`; do docker load < $i; done
[root@node02 images]#  for i in `ls`; do docker load < $i; done

以上镜像都是我通过国内阿里云镜像站下载好的(已修改tag),我已上传至网盘,大家可以去进行下载:链接:https://pan.baidu.com/s/1c8pP3vAS9qHCQqc-XaYRXQ
提取码:8zk2

注意:
考虑到以上组件的镜像版本在git项目上会经常的更新,所以大家就得根据最新版本去下载相对应的镜像;yaml文件中默认是从quay.io和gcr.io进行镜像拉取(其他的国内可直接拉取),我们知道,国内访问外网是被屏蔽的,我们无法直接将镜像下载下来,所以可以分别通过 quay-mirror.qiniu.com 和 registry.aliyuncs.com镜像站去拉取。
###例如:
拉取镜像:quay.io/coreos/prometheus-operator:v0.36.0
可以改为:quay-mirror.qiniu.com/coreos/prometheus-operator:v0.36.0

拉取镜像:gcr.io/google_containers/kube-proxy
可以改为:registry.aliyuncs.com/google_containers//kube-proxy

3,修改访问模式为nodeport

1)修改grafana-service文件:
[root@master kube-prometheus]# cd manifests/
[root@master manifests]# vim grafana-service.yaml 

技术图片

2)修改Prometheus-service文件:
[root@master manifests]# vim prometheus-service.yaml 

技术图片
3)修改alertmanager-service文件:
技术图片

4,执行安装操作
1)先安装Prometheus所需要的资源(在manifests/setup目录下的yaml文件):
技术图片

[root@master manifests]# kubectl apply -f  setup/
2)安装Prometheus(在manifests/路径下的yaml文件):
[root@master manifests]# cd ..
[root@master kube-prometheus]# kubectl apply -f manifests/

5,查看Prometheus资源(确保以下pod都达到所期望的状态值)
[root@master kube-prometheus]# kubectl get pod -n monitoring
技术图片
[root@master kube-prometheus]# kubectl get svc -n monitoring
技术图片

以上各组件说明:

  • MerticServer: k8s集群资源使用情况的聚合器,收集数据给k8s集群内使用;如kubectl,hpa,scheduler等。
  • PrometheusOperator:是一个系统监测和警报工具箱,用来存储监控数据。
  • NodeExPorter:用于各个node的关键度量指标状态数据。
  • kubeStateMetrics:收集k8s集群内资源对象数据,指定告警规则。
  • Prometheus:采用pull方式收集apiserver,scheduler,control-manager,kubelet组件数据,通过http协议传输。
  • Grafana:是可视化数据统计和监控平台。

6,Prometheus监控页面展示

1)访问Prometheus web页面:
访问url:http://172.16.1.30:30200/
技术图片

技术图片

技术图片

#部署成功后,会显示集群节点各个组件的详细信息,并且状态为up。

2)访问alertmanager web页面:
访问url: http://172.16.1.30:30300
技术图片

技术图片

3)访问Grafana 图形化界面:
访问url: http://172.16.1.30:30100 , 初始用户名和密码都为:admin
技术图片

#修改用户名和密码后点击登录:
技术图片

技术图片

三,使用Prometheus监控平台

1,为grafana添加Prometheus数据源
技术图片

上图所示,可以看到当部署完Prometheus后默认已经为我们添加了一个Prometheus数据源,大家也可以点击右上角的"Add data source"选项自定义添加所需要的数据源。如下图所示:
技术图片

技术图片

技术图片

2,为grafana添加dashboard
技术图片

3,监控集群资源
技术图片

技术图片

如上图所示,已为我们提供了一些内置资源监控模板,大家可以选择查看需要监控的资源。下面将展示几个重要监控的资源对象信息:

1)查看集群资源信息:
技术图片

技术图片

#可以看到集群中cpu,memory,network以及磁盘IO等使用信息的展示。

2)查看各个节点资源的使用情况:
技术图片
技术图片

3)Pod资源查看:
技术图片

#如上所示,可以看到Prometheus为我们提供的资源监控项还是非常全面的。其他资源监控项大家可以自行查看。

4,其他监控模板
grafana提供自带的监控模板是非常丰富的,不过我们也可以进入Grafana官网下载其他监控模板。

1)下载监控模板,如下图所示:
技术图片

比如,我们选择Node Exporter for Prometheus 模板:
技术图片

2)在Grafana web界面上导入模板:
技术图片
技术图片

技术图片

技术图片

模板导入成功,其他类型的监控模板大家可以自己在Grafana官网上去下载。

Alertmanager实现邮箱告警可参考博文:监控利器-Prometheus安装与部署+实现邮箱报警

基于prometheus监控k8s集群

本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kubenetes前言kubernetes显然已成为各大公司亲睐的容器编排... 查看详情

用于 k8s 多集群的 Prometheus

】用于k8s多集群的Prometheus【英文标题】:Prometheusfork8smulticlusters【发布时间】:2021-03-0305:18:32【问题描述】:我有3个Kubernetes集群(产品、测试、监控)。我是prometheus的新手,所以我通过helmchart在我的测试环境中安装它来测试它... 查看详情

kubernetes(k8s)之在集群环境部署prometheus(普罗米修斯监控)和集群的ui管理工具grafana(代码片段)

PrometheusPrometheus演示环境部署Prometheus和Grafana测试PrometheusPrometheus是一个开源系统监控和警报工具包。现在是一个独立的开源项目,独立于任何公司进行维护。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,... 查看详情

kube-prometheus监控k8s集群外服务的两种方式(代码片段)

方式一:通过ServiceMonitor方式创建Service和ServiceMonitor文件名为external-node.yaml---apiVersion:v1kind:Servicemetadata:name:external-node-exporternamespace:monitoringlabels:app:external-node-exporterapp.kubernetes. 查看详情

搭建prometheus监控k8s服务(代码片段)

理论提示:在这里部署的prometheus,是使用的coreos提供的prometheus项目MetricsServer:是k8s集群资源使用情况的聚合器,收集数据给k8s集群内使用,如kubectl,hpa,scheduler等。PrometheusOperator:是一个系统检测和警报工具箱,... 查看详情

k8s+prometheus+grafana的监控部署(代码片段)

...署k8s集群可以参考https://www.cnblogs.com/liugp/p/12115945.html二、Prometheus+Grafana的监控部署2.1、master/node节点环境部署在【master】可以进行安装部署安装git,并下载相关yaml文件https://gitee.com/liugpwwwroot/k8s-prometheus-grafana.git在【node】节点下... 查看详情

kubernetes集群全栈监控报警方案kube-prometheus(代码片段)

参考文档http://www.servicemesher.com/blog/prometheus-operator-manual/https://github.com/coreos/prometheus-operatorhttps://github.com/coreos/kube-prometheus背景环境kubernetes集群1.13版本,纯二进制版本打造,参考k8s1.13集群部署core 查看详情

kubernetes集群监控解决方案kube-prometheus-stack(prometheus-operator)helm安装(代码片段)

...理分享给小伙伴。博文内容为K8s集群通过helm方式创建kube-prometheus-stack监控平台教程折腾了一晚上,搞定了,一开始一直用prometheus-operator这个chart来装,报错各种找问题,后来才发现我的集群版本太高了,1.22的... 查看详情

kubernetes集群监控解决方案kube-prometheus-stack(prometheus-operator)helm安装(代码片段)

...理分享给小伙伴。博文内容为K8s集群通过helm方式创建kube-prometheus-stack监控平台教程折腾了一晚上,搞定了,一开始一直用prometheus-operator这个chart来装,报错各种找问题,后来才发现我的集群版本太高了,1.22的... 查看详情

k8snetworkpolicylimitrange和resourcequota详解k8s运行zookeeper,mysql,jenkins集群k8s集群及应用监控prometheus(代码片段)

1.基于NetworkPolicy限制magedunamespace中的所有pod不能跨namespace访问(只能访问当前namespace中的所有pod)。#在default下创建2个deploy,centos7-default和nginx1-defaultroot@k8s-master1:~/20230328#vimcentos7-default.yamlapiVersion:apps/v1kind:Deploymentmetadata:labels:app:c... 查看详情

k8s的kafka监控(prometheus+grafana)

欢迎访问我的GitHub对于部署在K8S上的Kafka来说,Prometheus+Grafana是常用的监控方案,今天就来实战通过Prometheus+Grafana监控K8S环境的Kafka;准备工作今天聚焦的是Kafka监控,因此需要K8S、Helm、Kafka、Prometheus、Grafana等服务都已就绪,下... 查看详情

prometheus监控k8s(代码片段)

文章目录一、监控方案二、监控流程三、Kubernetes监控指标四、服务发现:五、使用Prometheus监控Kubernetes(1)部署前准备(2)采用daemonset方式部署node-exporter(3)部署Prometheus(4)部署grafana࿰ 查看详情

prometheus监控k8s(代码片段)

文章目录一、监控方案二、监控流程三、Kubernetes监控指标四、服务发现:五、使用Prometheus监控Kubernetes(1)部署前准备(2)采用daemonset方式部署node-exporter(3)部署Prometheus(4)部署grafana࿰ 查看详情

K8S 集群中 Libvirt 的 Prometheus Adapter 自定义指标

】K8S集群中Libvirt的PrometheusAdapter自定义指标【英文标题】:PrometheusAdapterCustomMetricsforLibvirtinaK8SCluster【发布时间】:2019-07-1312:19:36【问题描述】:我有一个K8S集群,它也通过virtlet管理虚拟机。这个K8S集群运行K8Sv1.13.2,带有promethe... 查看详情

使用 prometheus 计算 k8s 集群 cpu/内存使用情况

】使用prometheus计算k8s集群cpu/内存使用情况【英文标题】:countk8sclustercpu/memoryusagewithprometheus【发布时间】:2019-07-1821:22:51【问题描述】:我想用prometheus统计k8s集群cpu/内存使用情况(不是k8spod使用情况),以便在grafana中显示。... 查看详情

k8s部署prometheus和grafana监控pod和机器资源(11)

...化的界面,主要负责展示信息,功能非常强大,可以结合prometheus、zabbix、进行收集暂时,另外包括mysql,zk、etcd,nginx这些数据都可以收集展示prometheus是一个时序的数据库,什么是时序的数据库,就是对之前的数据进行存放,但... 查看详情

云原生系列之使用prometheus监控redis集群实战

前言本次实战使用prometheus监控redis集群,如果你只想监控redis的某一个单机服务,可以参考:超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控本文中的是prometheus已经安装好,如果你还未安装,可以参考上一篇文章... 查看详情

(二十)从零开始搭建k8s集群——使用kubesphere管理平台搭建一套微服务的压力测试性能监控平台(grafana8.5.2+prometheusv2.35.0+jmeter5.4.1)(代码片段

...延续,本节内容我们使用的技术方案是Grafana8.5.2+Prometheusv2.35.0+Jmeter5.4.1,与上一节内容唯一不同的是,使用的数据存储组件换成了Prometheus,这套方案也是我们常用的压力测试实时监控方案之一。图形化实时... 查看详情