Prometheus+Grafan监控k8s集群详解

一,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工具包:
[[email protected] ~]# yum install git -y
2)获取Prometheus的git项目:
[[email protected] prometheus]#  git clone https://github.com/coreos/kube-prometheus.git


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

2,导入部署Prometheus所需组件镜像:
1)在集群中的所有node上进行上传镜像包(包括master)

2)分别在集群中的node上进行load操作:

#注意:确定在当前路径下执行
[[email protected] images]# for i in `ls`; do docker load < $i; done
[[email protected] images]# for i in `ls`; do docker load < $i; done
[[email protected] 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文件:
[[email protected] kube-prometheus]# cd manifests/
[[email protected] manifests]# vim grafana-service.yaml 

2)修改Prometheus-service文件:
[[email protected] manifests]# vim prometheus-service.yaml 


3)修改alertmanager-service文件:

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

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

5,查看Prometheus资源(确保以下pod都达到所期望的状态值)
[[email protected] kube-prometheus]# kubectl get pod -n monitoring

[[email protected] 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安装与部署+实现邮箱报警

原文地址:https://blog.51cto.com/13972012/2470929

时间: 2024-12-07 04:08:21

Prometheus+Grafan监控k8s集群详解的相关文章

基于prometheus监控k8s集群

本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器 如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kubenetes 前言 kubernetes显然已成为各大公司亲睐的容器编排工具,各种私有云公有云平台基于它构建,那么,我们怎么监控集群中的所有容器呢?目前有三套方案: heapster+influxDB heapster为k8s而生,它从apiserver获取节点信息,每个节点kubelet内含了cAdv

Centos7安装mariadb galera cluster数据库集群 & 详解

#Galera集群特点 集群之间无延时,同步复制.而master-slave主从异步复制,存在延迟. active-active多主,集群内部服务器都是同时写,必须等所有集群内所有数据库都完成数据写入,才会反馈完成,所以不存在数据丢失的情况. 集群节点自动故障转移,如果集群中单个节点故障,失效节点会自动被清除. 扩展方便,只要将新的节点添加到集群,新节点自动复制数据. #Galera集群原理     #主要通过galera插件保证数据的一致性,该数据复制的过程是可认证的复制,原理如下: #解析

Linux集群详解

Linux集群详解 集群或者说是群集:其目的是为了实现将多台计算机组合以来完成特定的任务,比如天气预报,大型网络游戏,这些都需要很大的运算量,单台计算机实现成本太高,而且不显示.那么就需要通过集群的方式,将废弃的或者正在使用的计算机联合起来,结合整体的力量来解决这些问题 集群类型: 1.  负载均衡集群 load blancing ,简称LB 2.  高可用性集群 high availibility,简称 HA 3.  高性能集群 high performance,简称 HP 作用: 1.  负

Openfire Hazelcast集群详解

Openfire Hazelcast集群详解 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs 一.概述 Openfire Hazelcast插件提供了在一个集群上运行多个冗余Openfire服务器的支持.通过把Openfire运行为一个集群,可以把终端的连接分配到多台Openfire服务器上,同时还提供了服务器的故障转移.Hazelcast个插件是Openfire原集群插件的替代,它使用了开源的Hazelcast数据分布框架来代替昂

LVS集群详解

一.什么是集群 LVS(Linux Virtual Server)Linux虚拟服务器,将多台虚拟主机组织起来满足同一个需求.由国人章文嵩开发,通过LVS提供的负载均衡可实现一个高性能.高可用的服务器群集,从而以低成本实现最优的服务性能. 二.集群类型   LB:Load balancing    高可用集群 HA:High Availavility    高可用集群 HP:High Performace     高性能集群 三.lvs的常用集群方式及其详解 1.lvs是由用户空间命令和工作在内

Rancher2.x 一键式部署 Prometheus + Grafana 监控 Kubernetes 集群

目录 1.Prometheus & Grafana 介绍 2.环境.软件准备 3.Rancher 2.x 应用商店 4.一键式部署 Prometheus 5.验证 Prometheus + Grafana 1.Prometheus & Grafana 介绍 Prometheus 是一套开源的系统监控.报警.时间序列数据库的组合,Prometheus 基本原理是通过 Http 协议周期性抓取被监控组件的状态,而通过 Exporter Http 接口输出这些被监控的组件信息,而且已经有很多 E

负载均衡LVS集群详解

 一.LB--负载均衡 在负载均衡集群中需要一个分发器,我们将其称之为Director,它位于多台服务器的上面的中间层,根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来进行响应请求,而其分发的方式则是根据某个算法进行的. 二.HA--高可用 高可用顾名思义就是服务的可用性比较高,即当我们不会因为某台服务器的宕机,从而造成我们的服务不可用,其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断. 三.LVS: LVS:Linux Virtual Serve

Rabbitmq集群详解

Rabbitmq简介 1.什么是rabbitmq? MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.RabbitMQ 是一个由 Erlang 语言开发的 AMQP(高级消息队列协议) 的开源实现.RabbitMQ 属于消息中间件,主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然. 2.rabbitmq特点 可靠性(Reliability)Rabb

MHA 高可用集群详解

一.什么是MHA 传统的主从复制如果主库宕机,其余从库不会自动的代替主库继续工作,这样就不能保证业务的高可用,而MHA就是一个mysql主从复制高可用的解决方案,当主库宕机后,MHA能在1-30秒实现故障检测和故障自动转移,选择一个最优的从库作为主库,同时新的主库还继续与其他从库保持数据一致的状态 二.MHA架构组成 整个MAH架构由两部分组成,即MHA Manager(管理节点),和MHA Node(数据节点),MHA Manager 可以独立部署到一台服务器上(含虚拟机)管理多个主从复制集群