博客 大数据监控系列(一)——Prometheus+Grafana监控概述

大数据监控系列(一)——Prometheus+Grafana监控概述

   数栈君   发表于 2024-02-19 11:23  103  0

1 概述

这是介绍Prometheushe和Grafana主要是为了监控大数据产品,数栈平台也是使用Prometheushe+Grafana作为底层大数据组件的监控,并且均有配置模板,导入即在Grafana上监控到所要看的信息指标,开源的CDH等也有很多公司使用Prometheushe+Grafana作为监控告警。本章先以基础概念为主,之后篇章会针对大数据组件监控实践具体说明。


Prometheus

2.1 基本概述

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如VarnishHaproxyNginxMySQLLinux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:

2.2 架构

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/338eeb6dc6bb12676f581a93d7d00d7a..png

它的服务过程是这样的Prometheus daemon负责定时去目标上抓取metrics(指标数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。

  • Prometheus:支持通过配置文件、文本文件、zookeeperConsulDNS SRV lookup等方式指定抓取目标。支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。

  • Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

  • PushGateway:这个组件是支持Client主动推送metricsPushGateway,而Prometheus只是定时去Gateway上抓取数据。

如果有使用过statsd的用户,则会觉得这十分相似,只是statsd是直接发送给服务器端,而Prometheus主要还是靠进程主动去抓取。

大多数Prometheus组件都是用Go编写的,它们可以轻松地构建和部署为静态二进制文件。访问prometheus.io以获取完整的文档,示例和指南。

2.3 Prometheus的数据模型

Prometheus从根本上所有的存储都是按时间序列去实现的,相同的metrics(指标名称label(一个或多个标签组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。

metrics name&label指标名称和标签

每条时间序列是由唯一的指标名称和一组标签(key=value的形式组成。

指标名称:一般是给监测对像起一名字,例如http_requests_total这样,它有一些命名规则,可以包字母数字_之类的的。通常是以应用名称开头_监测对像_数值类型_单位这样。例如:push_totaluserlogin_mysql_duration_secondsapp_memory_usage_bytes

标签:就是对一条时间序列不同维度的识别了,例如一个http请求用的是POST还是GET,它的endpoint是什么,这时候就要用标签去标记了。最终形成的标识便是这样了:http_requests_total{method="POST",endpoint="/api/tracks"}

记住,针对http_requests_total这个metrics name无论是增加标签还是删除标签都会形成一条新的时间序列。

查询语句就可以跟据上面标签的组合来查询聚合结果了。

如果以传统数据库的理解来看这条语句,则可以考虑http_requests_total是表名,标签是字段,而timestamp是主键,还有一个float64字段是值了。(Prometheus里面所有值都是按float64存储)。

2.4 Prometheus四种数据类型

Counter

Counter用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。

例如:http_response_total{method="GET",endpoint="/api/tracks"} 10010秒后抓取http_response_total{method="GET",endpoint="/api/tracks"} 100

Gauge

Gauge常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。

例如: memory_usage_bytes{host="master-01"} 100 < 抓取值、memory_usage_bytes{host="master-01"} 30memory_usage_bytes{host="master-01"} 50memory_usage_bytes{host="master-01"} 80 < 抓取值。

Histogram

Histogram(直方图)可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供countsum全部值的功能。

例如:{小于10=5次,小于20=1次,小于30=2}count=7次,sum=7次的求和值。

Summary

SummaryHistogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count  sum 全部值的功能。

例如:count=7次,sum=7次的值求值。

它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。


3 Grafana

3.1 效果展示

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f04d851f6c934f9f99aab50c640b4334..png

3.2 基本概念

  • Data Source

grafana支持多种时序数据源。每种数据源,都有各自的查询编辑器。

目前官方支持了如下几种数据源:

Graphite

InfluxDB

OpenTSDB

Prometheus

Elasticsearch

CloudWatch

在一个Dashboard中,可以结合多种数据源的数据。但是,一个Panel只能使用一个数据源(属于特定的组织&&)。

  • 组织(Organization)

有些场景是一个grafana服务商与多个客户合作,客户之间是隔离的,所以grafana也就支持多组织。但在更多的场景下,grafana会被单独部署到某个客户环境中。

每个组织有一个或多个Data Source。Dashboard和组织也是多对一的关系。

在grafana中的组织下的每个用户,都可以使用属于这个组织的DataSoure和Dashboard。权限篇

  • User

一个用户可以属于一个或多个组织。在不通组织中可以被设置不同角色。

Grafana也支持多样的认证方式。比如集成database,或来自外部的SQL server,或是一个LDAP server。

详见User Auth。

  • Row

在一个Dashboard,“行“是用来组合各个Panel的。一行有12个单元,可以将panel设置成不同的单位宽度。更不错的是,grafana在所有分辨率的屏幕下,都能适应的很好。

使用Repeating Row Function,可以通过选择下拉菜单的参数,动态控制创建和移除行(这些行可能有Panel,还没尝试&&)

点击Row title,可以折叠行。如果在保存时,一个Dashboard的某些行被折叠,则折叠的状态也会被保存。浏览时如果没有再次展开它,则里面的数据也不会预加载。

  • Panel

在grafana中,Panel是基础呈现块。每个Panel都提供了查询编辑器Query Editor,辅助我们从DataSource提取所展示的信息。

每种Panel都有多样的配置和展现方式,它可以在Dashboard上拖拽和重绘大小。

官方提供的Panel有如下:

Graph

Singlestat

Dashlist

Table

Text

Graph可以提供折线图、柱状图等能力,可以通过Plugin添加其它图表。Singlestat如同其名,是用来展示单个字段的状态。Dashlist和Text是特殊的panel,它不连接任何Data Source。

使用Dashborad变量(下拉菜单),可以动态的配置panel。使用Repeating Panel function可以动态的创建和移除panel。panel的时间一般采用Dashborad上的time picker,但也可以自定义时间。

panel很容易被分享,可以导出这个panel的json文档。

  • Query Editor

如上介绍的,查询编辑器也是数据源间不同的。编辑器可以引用Dashboard的变量,来达到动态控制panel的目的。QE也可以添加多次Query,来获取多个series。每次Query的结果,可以通过输入#xxx给下一次引用,进行更高级的查询。

  • Dashboard

最终,所有的panel和row汇总到了dashboard中。右上角的time picker可以控制panel的时间。dashboard能被方便的共享。可以使用Snapshot的特性,将当前的所有视图数据导出到静态的JSON文档中。dashboard也可以被打标签。

Grafana特性

Panel

Dashboard Features

Data Source

Alerting

Keyboard Shortcuts




《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack  
0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群