【Prometheus】 Grafana数据与可视化

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

“You can’t fix what you can’t see”。可视化是监控的核心目标之一,在本章中我们将介绍Prometheus下的可视化技术。例如,Prometheus自身提供的Console Template能力以及Grafana这一可视化工具实现监控数据可视化。Prometheus UI提供了基本的数据可视化能力,可以帮助用户直接使用PromQL查询数据,并将数据通过可视化图表的方式进行展示,而实际的应用场景中往往不同的人对于可视化的需求不一样,关注的指标也不一样,因此我们需要能够有能力,构建出不同的可视化报表页面。 本章学习的内容就主要解决以上问题。

Grafana的基本概念

在[【Prometheus】 Prometheus 入门到实战搭建监控系统]中我们已经尝试通过Grafana快速搭建过一个主机监控的Dashboard,在本章中将会带来读者学习如何使用Grafana创建更加精美的可视化报表。

首先Grafana是一个通用的可视化工具。‘通用’意味着Grafana不仅仅适用于展示Prometheus下的监控数据,也同样适用于一些其他的数据可视化需求。在开始使用Grafana之前,我们首先需要明确一些Grafana下的基本概念,以帮助用户能够快速理解Grafana。

数据源(Data Source)

对于Grafana而言,Prometheus这类为其提供数据的对象均称为数据源(Data Source)。目前,Grafana官方提供了对:Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch的支持。对于Grafana管理员而言,只需要将这些对象以数据源的形式添加到Grafana中,Grafana便可以轻松的实现对这些数据的可视化工作。

仪表盘(Dashboard)

通过数据源定义好可视化的数据来源之后,对于用户而言最重要的事情就是实现数据的可视化。在Grafana中,我们通过Dashboard来组织和管理我们的数据可视化图表:

【Prometheus】 Grafana数据与可视化

如上所示,在一个Dashboard中一个最基本的可视化单元为一个Panel(面板),Panel通过如趋势图,热力图的形式展示可视化数据。 并且在Dashboard中每一个Panel是一个完全独立的部分,通过Panel的**Query Editor(查询编辑器)**我们可以为每一个Panel自己查询的数据源以及数据查询方式,例如,如果以Prometheus作为数据源,那在Query Editor中,我们实际上使用的是PromQL,而Panel则会负责从特定的Prometheus中查询出相应的数据,并且将其可视化。由于每个Panel是完全独立的,因此在一个Dashboard中,往往可能会包含来自多个Data Source的数据。

Grafana通过插件的形式提供了多种Panel的实现,常用的如:Graph Panel,Heatmap Panel,SingleStat Panel以及Table Panel等。用户还可通过插件安装更多类型的Panel面板。

除了Panel以外,在Dashboard页面中,我们还可以定义一个Row(行),来组织和管理一组相关的Panel。

除了Panel, Row这些对象以外,Grafana还允许用户为Dashboard定义Templating variables(模板参数),从而实现可以与用户动态交互的Dashboard页面。同时Grafana通过JSON数据结构管理了整个Dasboard的定义,因此这些Dashboard也是非常方便进行共享的。Grafana还专门为Dashboard提供了一个共享服务:https://grafana.com/dashboards,通过该服务用户可以轻松实现Dashboard的共享,同时我们也能快速的从中找到我们希望的Dashboard实现,并导入到自己的Grafana中。

组织和用户

作为一个通用可视化工具,Grafana除了提供灵活的可视化定制能力以外,还提供了面向企业的组织级管理能力。在Grafana中Dashboard是属于一个Organization(组织),通过Organization,可以在更大规模上使用Grafana,例如对于一个企业而言,我们可以创建多个Organization,其中**User(用户)**可以属于一个或多个不同的Organization。 并且在不同的Organization下,可以为User赋予不同的权限。 从而可以有效的根据企业的组织架构定义整个管理模型。

Grafana与数据可视化

对于Grafana而言,Prometheus就是一个用于存储监控样本数据的数据源(Data Source)通过使用PromQL查询特定Prometheus实例中的数据并且在Panel中实现可视化。

接下来,我们将带领读者了解如何通过Panel创建精美的可视化图表。

认识面板(Panel)

Panel是Grafana中最基本的可视化单元。每一种类型的面板都提供了相应的查询编辑器(Query Editor),让用户可以从不同的数据源(如Prometheus)中查询出相应的监控数据,并且以可视化的方式展现。

Grafana中所有的面板均以插件的形式进行使用,当前内置了5种类型的面板,分别是:GraphSinglestatHeatmap, DashlistTable以及Text

其中像Graph这样的面板允许用户可视化任意多个监控指标以及多条时间序列。而Siglestat则必须要求查询结果为单个样本。Dashlist和Text相对比较特殊,它们与特定的数据源无关。

通过Grafana UI用户可以在一个Dashboard下添加Panel,点击Dashboard右上角的“Add Panel”按钮,如下所示,将会显示当前系统中所有可使用的Panel类型:

【Prometheus】 Grafana数据与可视化

选择想要创建的面板类型即可。这里以Graph面板为例,创建Panel之后,并切换到编辑模式,就可以进入Panel的配置页面。对于一个Panel而言,一般来说会包含2个主要的配置选项:General(通用设置)、Metrics(度量指标)。其余的配置则根据Panel类型的不同而不同。

在通用设置中,除了一些Panel的基本信息以外,最主要的能力就是定义动态Panel的能力,这部分内容会在本章的“模板化Dashboard”小结中详细介绍。

对于使用Prometheus作为数据源的用户,最主要的需要了解的就是Metrics设置的使用。在Metric选项中可以定义了Grafana从哪些数据源中查询样本数据。Data Source中指定当前查询的数据源,Grafana会加载当前组织中添加的所有数据源。其中还会包含两个特殊的数据源:MixedGrafana。 Mixed用于需要从多个数据源中查询和渲染数据的场景,Grafana则用于需要查询Grafana自身状态时使用。

当选中数据源时,Panel会根据当前数据源类型加载不同的Query Editor界面。这里我们主要介绍Prometheus Query Editor,如下所示,当选中的数据源类型为Prometheus时,会显示如下界面:

【Prometheus】 Grafana数据与可视化

Grafana提供了对PromQL的完整支持,在Query Editor中,可以添加任意个Query,并且使用PromQL表达式从Prometheus中查询相应的样本数据。

参看node_export cpu使用率

sum by(instance) (avg without(cpu) (irate(node_cpu_seconds_total{mode!="idle"}[5m]))) 

每个PromQL表达式都可能返回多条时间序列。Legend format用于控制如何格式化每条时间序列的图例信息。Grafana支持通过模板的方式,根据时间序列的标签动态生成图例名称,例如:使用表示使用当前时间序列中的instance标签的值作为图例名称:

{{instance}}-{{mode}}

当查询到的样本数据量非常大时可以导致Grafana渲染图标时出现一些性能问题,通过Min Step可以控制Prometheus查询数据时的最小步长(Step),从而减少从Prometheus返回的数据量。

Resolution选项,则可以控制Grafana自身渲染的数据量。例如,如果Resolution的值为1/10,Grafana会将Prometeus返回的10个样本数据合并成一个点。因此Resolution越小可视化的精确性越高,反之,可视化的精度越低。

Format as选项定义如何格式化Prometheus返回的样本数据。这里提供了3个选项:Table,Time Series和Heatmap,分别用于Tabel面板,Graph面板和Heatmap面板的数据可视化。

除此以外,Query Editor还提供了调试相关的功能,点击Query Inspector可以展开相关的调试面板:

【Prometheus】 Grafana数据与可视化

变化趋势:Graph面板

在面板中,可以查看当前Prometheus返回的样本数据,用户也可以提供Mock数据渲染图像。

Graph面板是最常用的一种可视化面板,其通过折线图或者柱状图的形式显示监控样本随时间而变化的趋势。Graph面板天生适用于Prometheus中Gauge和Counter类型监控指标的监控数据可视化。例如,当需要查看主机CPU、内存使用率的随时间变化的情况时,可以使用Graph面板。同时,Graph还可以非常方便的支持多个数据之间的对比。

PS: 现在已更名为 Time series

【Prometheus】 Grafana数据与可视化

Graph面板与Prometheus

Graph面板通过折线图或者柱状图的形式,能够展示监控样本数据在一段时间内的变化趋势,因此其天生适合Prometheus中的Counter和Gauge类型的监控指标的可视化,对于Histogram类型的指标也可以支持,不过可视化效果不如Heatmap Panel来的直观。

使用Graph面板可视化Counter/Gauge

以主机为例,CPU使用率的变化趋势天然适用于使用Grapn面板来进行展示:

【Prometheus】 Grafana数据与可视化

Metrics选项中,我们使用以下PromQL定义如何从Prometheus中读取数据:

sum by(instance) (avg without(cpu) (irate(node_cpu_seconds_total{mode!="idle"}[5m]))) 

根据当前Prometheus的数据采集情况,该PromQL会返回多条时间序列(在示例中会返回3条)。Graph面板会从时间序列中获取样本数据,并绘制到图表中。 为了让折线图有更好的可读性,我们可以通过定义Legend format{{ instance }}控制每条线的图例名称:

由于当前使用的PromQL的数据范围为0~1表示CPU的使用率,为了能够更有效的表达出度量单位的概念,我们需要对Graph图表的坐标轴显示进行优化。如下所示,在Axes选项中可以控制图标的X轴和Y轴相关的行为:

【Prometheus】 Grafana数据与可视化

除了在Metrics设置图例的显示名称以外,在Graph面板的Legend选项可以进一步控制图例的显示方式,如下所示:

【Prometheus】 Grafana数据与可视化

Thresholds,Threshold主要用于一些自定义一些样本的阈值,例如,定义一个Threshold规则,如果CPU超过50%的区域显示为warning状态,可以添加如下配置:

【Prometheus】 Grafana数据与可视化

Graph面板则会在图表中显示一条阈值,并且将所有高于该阈值的区域显示为warining状态,通过可视化的方式直观的在图表中显示一些可能出现异常的区域。

需要注意的是,如果用户为该图表自定义了Alert(告警)配置,Thresholds将会被警用,并且根据Alert中定义的Threshold在图形中显示阈值内容。关于Alert的使用会在后续部分,详细介绍。

当前状态:SingleStat面板

Singlem Panel侧重于展示系统的当前状态而非变化趋势。如下所示,在以下场景中特别适用于使用SingleStat:

  • 当前系统中所有服务的运行状态;

  • 当前基础设施资源的使用量;

  • 当前系统中某些事件发生的次数或者资源数量等。

  • 当前系统中某些事件发生的次数或者资源数量等。

如下所示,是使用SingleStat进行数据可视化的显示效果:

【Prometheus】 Grafana数据与可视化

使用SingleStat Panel

从Dashboardc创建Singlestat Panel,并进入编辑页面, 如下所示:

【Prometheus】 Grafana数据与可视化

对于SingleStat Panel而言,其只能处理一条时间序列,否则页面中会提示“Multiple Series Error”错误信息。这里使用如下PromQL查询当前主机负载:

node_load1{instance="localhost:9100"}

默认情况下,当前面板中会显示当前时间序列中所有样本的平均值,而实际情况下,我们需要显示的是当前主机当前的负载情况,因此需要通过SingleStat Panel的Options选项控制当前面板的显示模式:

【Prometheus】 Grafana数据与可视化

如上所示,通过Value配置项组可以控制当前面板中显示的值,以及字体大小等。对于主机负载而言,我们希望能够显示当前的最新值,因此修改Calculation 为**Last * **即可。

【Prometheus】 Grafana数据与可视化

如果希望面板能够根据不同的值显示不同的颜色的话,则可以定义ThresholdsColors的映射关系,例如,定义Thresholds的分割区间值为“0,1”,则当Value的值落到不同的范围内时,将显示不同的颜色。

【Prometheus】 Grafana数据与可视化

如果希望能够显示当前时间序列的样本值变化情况,则可以启用Spark lines配置。启用之后,Singlestat面板中除了会显示当前的最新样本值以外,也会同时将时间序列中的数据已趋势图的形式进行展示。

除了通过数字大小反应当前状态以外,在某些场景下我们可能更关心的是这些数字表示的意义。例如,在Promthues监控服务的健康状态时,在样本数据中会通过0表示不健康,1表示健康。 但是如果直接将0或1显示在面板中,那么可视化效果将缺乏一定的可读性。

为了提升数字的可读性,可以在Singlestat Panel中可以通过Value Mappings定义值的映射关系。Siglesta支持值映射(value to text)和区间映射(range to text)两种方式。 如下所示:

【Prometheus】 Grafana数据与可视化

【Prometheus】 Grafana数据与可视化

变量

在Grafana中用户可以为Dashboard定义一组变量(Variables),变量一般包含一个到多个可选值。如下所示,Grafana通过将变量渲染为一个下拉框选项,从而使用户可以动态的改变变量的值:

例如,这里定义了一个名为node的变量,用户可以通过在PromQL表达式或者Panel的标题中通过以下形式使用该变量:

sum (avg without(cpu) (irate(node_cpu_seconds_total{mode!="idle",instance=~"$node"}[5m])))

变量的值可以支持单选或者多选,当对接Prometheus时,Grafana会自动将$node的值格式化为如“host1|host2|host3”的形式。配合使用PromQL的标签正则匹配“=~”,通过动态改变PromQL从而实现基于标签快速对时间序列进行过滤。

变量定义

通过Dashboard页面的Settings选项,可以进入Dashboard的配置页面并且选择Variables子菜单:

【Prometheus】 Grafana数据与可视化

【Prometheus】 Grafana数据与可视化

用户需要指定变量的名称,后续用户就可以通过$variable_name的形式引用该变量。Grafana目前支持6种不同的变量类型,而能和Prometheus一起工作的主要包含以下5种类型:

类型 工作方式
Query 允许用户通过Datasource查询表达式的返回值动态生成变量的可选值
Interval 该变量代表时间跨度,通过Interval类型的变量,可以动态改变PromQL区间向量表达式中的时间范围。如rate(node_cpu[2m])
Datasource 允许用户动态切换当前Dashboard的数据源,特别适用于同一个Dashboard展示多个数据源数据的情况
Custom 用户直接通过手动的方式,定义变量的可选值
Constant 常量,在导入Dashboard时,会要求用户设置该常量的值

Label属性用于指定界面中变量的显示名称,Hide属性则用于指定在渲染界面时是否隐藏该变量的下拉框。

使用变量过滤时间序列

当Prometheus同时采集了多个主机节点的监控样本数据时,用户希望能够手动选择并查看其中特定主机的监控数据。这时我们需要使用Query类型的变量。

【Prometheus】 Grafana数据与可视化

如上所示,这里我们为Dashboard创建了一个名为node的变量,并且指定其类型为Query。Query类型的变量,允许用户指定数据源以及查询表达式,并通过正则匹配(Regex)的方式对查询结果进行处理,从而动态生成变量的可选值。在这里指定了数据源为Prometheus,通过使用node_load1我们得到了三条时间序列:

node_load1{instance="193.168.0.183:9100",job="node"}
node_load1{instance="193.168.0.192:9100",job="node"}
node_load1{instance="193.168.0.30:9100",job="node"}

通过指定正则匹配表达式为/.*instance="([^"]*).*/从而匹配出标签instance的值作为node变量的所有可选项,即:

193.168.0.183:9100
193.168.0.192:9100
193.168.0.30:9100

Selection Options选项中可以指定该变量的下拉框是否支持多选,以及是否包含全选(All)选项。

保存变量后,用户可以在Panel的General或者Metrics中通过$node的方式使用该变量,如下所示:

【Prometheus】 Grafana数据与可视化

报警

grafana 4 版本以上就支持了报警功能,这使得我们利用 grafana 作为监控面板更为完整,因为报警是监控系统中必不可少的环节,grafana 支持很多种形式的报警功能,比如 email、钉钉、slack、webhook 等等,我们这里来测试下 email 和 钉钉。

email 报警

要启用 email 报警需要在启动配置文件中/etc/grafana/grafan.ini开启 SMTP 服务,我们这里同样利用一个 ConfigMap 资源对象挂载到 grafana Pod 中:(grafana-cm.yaml)

apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-config
  namespace: kube-ops
data:
  grafana.ini: |
    [server]
    root_url = http://<你grafana的url地址>
    [smtp]
    enabled = true
    host = smtp.163.com:25
    user = ych_1024@163.com
    password = <邮箱密码>
    skip_verify = true
    from_address = ych_1024@163.com
    [alerting]
    enabled = true
    execute_alerts = true

上面配置了我的 163 邮箱,开启报警功能,当然我们还得将这个 ConfigMap 文件挂载到 Pod 中去:

  volumeMounts:
  - mountPath: "/etc/grafana"
    name: config
volumes:
- name: config
  configMap:
    name: grafana-config

创建 ConfigMap 对象,更新 Deployment:

$ kubectl create -f grafana-cm.yaml
$ kubectl apply -f grafana-deploy.yaml

更新完成后,在 grafana 的 webui 中Alert页面测试邮件报警:

【Prometheus】 Grafana数据与可视化

发送测试后,正常情况下就可以收到测试报警邮件

到这里就完成了使用 grafana 来展示 Kubernetes 集群的监控图表信息以及报警配置,但是我们明显可以感觉到 grafana 的优势在于图表的展示,报警功能有点弱,所以一般来说,在生产环境我们不会直接使用 grafana 的报警功能,更多的是使用功能更加强大的 AlertManager。文章来源地址https://www.toymoban.com/news/detail-427091.html

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

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

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

相关文章

  • Prometheus+Mysqld_exporter+Grafana从0到1搭建MySQL的可视化监控

    1. 准备工作 安装 MySQL 数据库 安装 Prometheus 安装 Mysqld_exporter 安装 Grafana 在正式开始搭建之前,我们需要提前做好上面几个东西的安装,下面简单介绍一下这几个东西。 1.1 安装MySQL MySQL 数据库,这个就不过多赘述了,必须要有的,下载一个适合自己系统的版本,安装即可。

    2023年04月16日
    浏览(71)
  • 采用Prometheus+Grafana+Altermanager搭建部署K8S集群节点可视化监控告警平台

    采用 \\\"Prometheus+Grafana\\\"的开源监控系统,安装部署K8S集群监控平台。 并使用Altermanager告警插件,配合使用企业微信,实现系统集群监控报警机制。 主机名称 IP地址 安装组件 m1 192.168.200.61 Prometheus+Grafana+Alertmanager+node_exporter m2 192.168.200.62 node_exporter m3 192.168.200.63 node_exporter n1 192

    2024年02月11日
    浏览(45)
  • 【Prometheus】 Grafana数据与可视化

    “You can’t fix what you can’t see”。可视化是监控的核心目标之一,在本章中我们将介绍Prometheus下的可视化技术。例如,Prometheus自身提供的Console Template能力以及Grafana这一可视化工具实现监控数据可视化。Prometheus UI提供了基本的数据可视化能力,可以帮助用户直接使用PromQL查

    2023年04月27日
    浏览(24)
  • 完美的分布式监控系统——Prometheus(普罗米修斯)与优雅的开源可视化平台——Grafana(格鲁夫娜)

            prometheus与grafana之间是相辅相成的关系。作为完美的分布式监控系统的Prometheus,就想布加迪威龙一样示例和动力强劲。在猛的车也少不了仪表盘来观察。于是优雅的可视化平台Grafana出现了。         简而言之Grafana作为可视化的平台,平台的数据从Prometheus中取到来进

    2024年02月14日
    浏览(46)
  • Grafana监控数据可视化

    Grafana 是一个可视化面板,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持 Graphite、zabbix、InfluxDB、Prometheus、OpenTSDB、Elasticsearch 等作为数据源,比 Prometheus 自带的图表展示功能强大太多,更加灵活,有丰富的插件,功能更加强大。 访问 http://192

    2024年02月04日
    浏览(28)
  • Prometheus + Grafana 实现服务器的可视化

    Prometheus + Grafana 实现服务器的可视化 系统环境准备: 服务器IP:172.20.26.204 系统版本:CentOS Linux release 7.9.2009 (Core) 安装基础工具软件,系统更新 yum install vim net-tools epel-release wget -y yum update Prometheus 简介 Prometheus 是一个开源监控工具,实现了高维数据模型。Prometheus 有多种数据

    2024年01月18日
    浏览(29)
  • 微服务应用性能分析实战07 数据可视化:多数据源让 Grafana 监控报警更高效

    这一讲我将带领你学习可视化监控套件 Grafana。Grafana 是一个开源的数据可视化的平台,所以它既不会监控应用,也不会产生监控数据,更不会对接原始数据进行分析存储。 它仅专注数据可视化本身 。 本节内容,会先通过与上一节 Kibana 可视化套件对比,来讲述 Grafana 的核心

    2024年02月05日
    浏览(37)
  • 【prometheus】监控MySQL并实现可视化

    目录 一、概述 1.1下载解压mysqld_exporter 1.2创建MySQL授权用户 1.3配置my.cnf 1.4启动mysqld_exporter 1.5prometheus配置修改 二、Grafana展示  【Prometheus】概念和工作原理介绍_prometheus工作原理 【Prometheus】k8s集群部署node-exporter 【prometheus】k8s集群部署prometheus server-CSDN博客 【prometheus】k8s集群

    2024年04月26日
    浏览(26)
  • 【监控系统】可视化工具Grafana简介及容器化部署实战

    1.什么是Grafana 官网地址:https://grafana.com/ Grafana用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。支持快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件。 数据源广: Graphite,InfluxDB,Open

    2024年02月15日
    浏览(27)
  • Grafana_数据可视化工具

    目录 一、简介 二、安装部署 1、下载 2、安装 3、启用 三、使用简介 1、添加数据源 2、创建DashBoard 3、查看dashboard 4、选择查看的时间段 5、阈值颜色控制 源码等资料获取方法 Grafana是一个跨平台开源的纯html/js编写的度量分析和可视化工具,可以通过将采集的数据查询然后可

    2024年02月16日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包