Grafana 简介
什么是Grafana
Grafana 是一跨平台的开源的可视化分析工具,是目前网络架构和应用分析中最流行的时序数据展示工具,主要用于大规模指标数据的可视化展示。
它是用Go语言开发,可以做数据监控和数据统计,带有告警功能。支持快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件。
- 官网地址:Grafana官网入口
Grafana工作原理
Grafana 是一个仪表盘,其主要目的是对各种数据提供可视化。
Grafana 本身并不负责数据层,它只提供了通用的接口,让底层的数据库可以把数据给它。也就是说,Grafana 每次要展现一个仪表盘的时候,会向数据库发送一个查询请求。
一般来说,我们需要一个服务来获取我们想要监控或者可视化的数据,然后将其放到Grafana的底层数据库中,等待Grafana展示。然后我们需要配置Grafana表盘,确定需要展示的数据以及形式。
Grafana的特点
- grafana拥有快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式,让我们复杂的数据展示的美观而优雅。
- Grafana支持许多不同的时间序列数据(数据源)存储后端。每个数据源都有一个特定查询编辑器。官方支持以下数据源:Graphite、infloxdb、opensdb、prometheus、elasticsearch、cloudwatch。每个数据源的查询语言和功能明显不同。你可以将来自多个数据源的数据组合到一个仪表板上,但每个面板都要绑定到属于特定组织的特定数据源
- Grafana中的警报允许您将规则附加到仪表板面板上。保存仪表板时,Gravana会将警报规则提取到单独的警报规则存储中,并安排它们进行评估。报警消息还能通过钉钉、邮箱等推送至移动端。但目前grafana只支持graph面板的报警。
- Grafana使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
- Grafana使用Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
Grafana的应用场景
- 1.监控用户的活跃度,交易量等信息
- 2.监控实时访问量
- 3.对app的用户数,营收等数据进行可视化
- 4.对实验结果进行可视化
Grafana 与 Kibana 的区别
Kibana 是运维圈耳熟能详的后端数据实时展示工具。日常工作中,大家都用 Kibana 结合Logstash、ElasticSearch 等组件一起使用做日志展示、索引、分析的。但Kibana也可以接入其他数据源的,只不过最常见的用法还是展示日志。
Grafana 最早其实应该是 Kibana3 的一个分支。不同的是,Grafana 拥有自己的权限管理和用户管理系统,而 Kibana 没有权限管理系统。Kibana 和 ES 结合紧密,支持强大的ES语法,比较适合做一些多维度的分析和查询,而Grafana更适合用于展示,图形比Kibana美观很多。
Grafana 7个核心基础概念
Grafana基础概念主要包括数据源(DataSource),面板(Panel),仪表盘(Dashboard)等,要想深入了解grafana,首先要先学习grafana的基础概念。
1、组织(Org)
类似于用户组,Grafana有一个默认的main org。
每个用户可以拥有多个 Organization,用户登录后可以在不同的 Organization 之间切换,前提是该用户拥有多Organization。
不同的 Organization 之间完全不一样,包括 datasource,dashboard 等都不一样。
创建一个 Organization 就相当于开了一个全新的视图,所有的 datasource,dashboard 等都要再重新开始创建。
2、用户(User)
Grafana 里的用户有三种角色 admin,editor,viewer。在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改 DashBoard,但是不允许保存。每个 user 可以拥有多个 Organization。
-
admin 权限最高,可以执行任何操作,包括创建用户,新增 Datasource,创建DashBoard。
-
editor 角色不可以创建用户,不可以新增 Datasource,可以创建 DashBoard。
-
viewer 角色仅可以查看 DashBoard。
3、数据源 (DataSource)
-
Grafana 支持多种不同的时序数据库数据源,对每种数据源提供不同的查询编辑器。官方主要支持以下数据源:Graphite、influxdb、opensdb、prometheus、elasticsearch、cloudwatch等。
-
可以将多个数据源的数据合并到一个单独的仪表板上。
-
Grafana支持许多不同的时间序列数据(数据源)存储后端。您可以将来自多个数据源的数据组合到一个仪表盘上,但每个面板都要绑定到属于特定组织的特定数据源。
4、仪表盘(Dashboard)
接下来介绍一下 Grafana 中的重要 UI 界面——仪表盘。
Grafana的 DashBoard 就是以各种图形的方式来展示从 Datasource 拿到的数据。
- Dashboard。通过数据源定义好可视化的数据来源之后,对于用户而言最重要的事情就是实现数据的可视化。在 Grafana 中,我们通过 Dashboard 来组织和管理我们的数据可视化图表。
- 仪表盘可以视为一组一个或多个面板组成的一个集合,来展示各种各样的面板。
-
仪表盘就是一切的归宿。仪表板可以看作是一组组织并排列成一行或多行的一个或多个面板。
仪表板的时间段可以由仪表板右上角的仪表盘时间选择器控制。
仪表盘可以利用模板化使其更具动态性和互动性。
仪表盘可以利用注释在面板之间显示事件数据。这有助于将面板中的时间序列数据与其他事件关联起来。
仪表盘(或特定面板)可以通过多种方式轻松共享。您可以向登录您的Grafana的人发送链接。您可以使用快照功能将当前查看的所有数据编码为静态和交互式JSON文档;这比通过电子邮件发送屏幕截图要好得多!
可以标记仪表板,仪表板选择器提供对特定组织中所有仪表板的快速、可搜索访问
5、行(Row)
行是仪表盘中的逻辑分隔符,用于将面板分组在一起。
DashBoard 的基本组成单元,一个 DashBoard 可以包含很多个 row 。一个 row 可以展示一种信息或者多种信息的组合。
行总是12“单位”宽。这些单位根据浏览器的水平分辨率自动缩放。通过设置面板自身的宽度,可以控制一行中面板的相对宽度。我们使用了一个单元抽象,这样Grafana在无论是小屏幕还是大屏幕 看起来都很舒服。
利用Repeating Rows functionality ,根据所选模板变量动态创建或删除整个行(可以用面板填充)。单击行标题可以折叠行。如果保存的仪表板中有一行折叠,则它将保存在该状态下,并且在该行展开之前不会预加载这些图表。
注意:使用MaxDataPoint功能,Grafana可以向您显示完美数量的数据点,无论您的分辨率或时间范围如何
6、面板(Panel)
Panel:面板是Grafana中的基本可视化构建块。在一个 Dashboard 中一个最基本的可视化单元为一个 Panel(面板)。每个 Panel 都提供一个 Query Editor(查询编辑器),我们可以为每一个 Panel 添加查询的数据源以及数据查询方式。每一个 Panel 都是独立的,可以选择一种或者多种数据源进行查询。比如我们使用 ElasticSearch,那么我们可以使用 Lucene 语句进行查询
面板可以在仪表板上拖放和重新排列。它们也可以调整大小。
当前有四种基本面板类型:graph、singlestat、dashlist、table和text。
7、查询编辑器(Query Editor)
Query Editor 顾名思义,就是查询语句管理,类似 sql 语句。每个面板都提供一个Query Editor,我们可以通过编写语句来控制面板展示不同的图表。
使用查询编辑器在时间序列数据库中生成一个或多个查询(针对一个或多个序列)。该面板将立即更新,允许您实时有效地探索数据,并为该特定面板构建一个完美的查询。
您可以在查询本身的查询编辑器中使用模板变量。这提供了一种基于仪表板上选择的模板变量动态探索数据的强大方法。
Grafana允许您在查询编辑器中按查询所在的行引用查询。如果向图形中添加第二个查询,只需键入a即可引用第一个查询。这为构建复合查询提供了一种简单方便的方法。
对于这些核心的组件的详细介绍,我们会在后面的文章中逐一进行详解。