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

二龙2年前技术文章2751

1 概述

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


Prometheus

2.1 基本概述

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

2.2 架构

图片一.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 效果展示

图片二.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






相关文章

运维监控体系总结

总结归纳运维工作中的监控内容。监控目标:明白监控的重要性以及使用监控要实现的业务目标通常包括以下三点:对目标系统进行实时监控监控可以实时反馈目标系统的当前状态 目标系统硬件、软件、业务是否正常、目前处...

ES运维(八)添加IK分词器

ES运维(八)添加IK分词器

一、概述ES自带standard analyzer、simple analyzer、whitespace analyzer、stop analyzer、language analyzer、patter...

HDP-Yarn开启CPU调度和隔离

HDP-Yarn开启CPU调度和隔离

进入到ambari主界面 点击yarn 点击config CPU Scheduling and Isolation 设置为enable修改高级配置点击ADVANCED搜索需要修改的配yarn.node...

Hive 重新编译-解决Tez JobName的问题

Hive 重新编译-解决Tez JobName的问题

本文采用linux编译首先下载源码https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-src.tar.gz源码位置ql/src/jav...

大数据集群监控配置操作指导(一)prometheus+grafana部署

大数据集群监控配置操作指导(一)prometheus+grafana部署

1.prometheus+grafana部署(单独部署到一台服务器。4c8g。系统盘300G。操作系统建议7.6到7.9)1.1下载prometheus和grafana的二进制包mkdir /opt/...

CDP实操--Ranger开启ldap认证

CDP实操--Ranger开启ldap认证

集群中已经部署了ldap主主模式,并且使用haproxy进行负载均衡,keepalive提供了虚拟ip。页面配置:Ranger进行同步用户:验证:使用ldap用户登录页面:FAQ:1、admin超级管...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。