Grafana 是一款用 GO 语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。,特点:,可视化。Grafana 拥有快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式,让我们复杂的数据展示的美观而优雅。,报警和通知。可视化地为最重要的指标定义警报规则。Grafana 将持续评估它们,并发送通知。,动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。,混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。,注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。,过滤器:Grafana 使用 Ad-hoc 过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。,Mac 下需要首先安装 brew 这个包管理工具,再安装 Grafana 就方便多了:,启停命令。通过下面命令可以后台启动/停止 Grafana,默认端口 3000。,查看 Grafana 版本:,浏览器登录:http://127.0.0.1:3000/。,默认的用户名和密码是:admin/admin。,mac 环境如下:,Organization(组织) 是一个很大的概念,每个用户可以拥有多个 Organization,Grafana 有一个默认的组织。用户登录后可以在不同的 Organization 之间切换,前提是该用户拥有多个 Organization。不同的 Organization 之间完全不一样,包括 datasource,dashboard 等都不一样。创建一个 Organization 就相当于开了一个全新的视图,所有的 datasource,dashboard 等都要再重新开始创建。,User(用户),这个概念应该很简单,不用多说。Grafana 里面用户有三种角色 admin,editor,viewer。在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改 DashBoard,但是不允许保存。每个 user 可以拥有多个 Organization。,前文说过,Grafana 支持多种数据源。,可以执行多种简单或复杂 Elasticsearch 查询,以可视化存储在 Elasticsearch 中的日志。,右侧设置 -- 数据源 -- Add data source -- ElasticSearch。,其中 Index name 是为时间字段指定默认值,并指定 Elasticsearch 索引的名称。您可以使用索引名称或通配符的时间模式。,这里对 Access 进行解释一下,它设置了如何处理对数据源的请求。如果没有其他说明,服务器应该是首选的方式。,所有请求都将从浏览器发出到 Grafana 后端/服务器,后者再将请求转发到数据源,从而避免可能的跨源资源共享(CORS)要求。如果选择此访问方式,则需要可以从 Grafana 后端/服务器访问该 URL。,所有请求都将从浏览器直接向数据源发出,并且可能要遵守跨域资源共享(CORS)的要求。如果选择此访问方式,则需要可以从浏览器访问URL。,如果选择浏览器访问,则必须更新您的 Elasticsearch 配置,以允许其他域从浏览器访问 Elasticsearch。您可以通过在 elasticsearch.yml 配置文件中为选项指定这些来实现。,这个版本会在未来的版本中废除,假如选中这个模式会有如下提示:,Browser access mode in the Elasticsearch datasource is deprecated and will be removed in a future release.,我们接下来介绍一下 Grafana 中的重要 UI 界面——仪表盘。,指标查询编辑器。ElasticSearch 的 Metric Query editor 支持选择多种指标(Metrics)和分组(Group By)。可以通过添加或者删除的图标进行。,使用 lucene 查询语句。lucene 语法可以参看传送门[1],语法中也可以使用变量。,我大概梳理了一下,常见的语法有以下:,Metrics。指标配置,每种数据源提供不同的选项,我这里用的是Elasticsearch。,根据自己的需求选择,比如 Unique Count(根据某个字段去重,计算 UV 的时候)。比如我们需要计算百分位,就选择 Percentiles。,集成了 ElasticSearch 中很多聚合的方法,比如 Min/Max/Count 等。,聚合分组方式,每个指标属性不同。,Date Histogram,根据时间聚合。,Terms 根据某个字段进行聚合,一般用于生成表格。,可以通过 Expression 计算出相应的结果。,较低版本不支持 Expression。可以通过 Transform 进行处理。在传递查询的结果集以进行可视化之前,对结果进行一层转换。可以支持命名过滤字段、跨查询进行计算等等。,可以用固定值,也可以使用分组变量:,在指标查询除了硬编码的方式,Grafana 支持变量注入的方式。变量显示为仪表板顶部的下拉选择框。这些下拉框可以方便地更改仪表板中显示的数据。,在 Dashboard 的设置中,我们找到 Variables 的设置,点击 New,进入设置页面,其中 Type 类型包含多种,我们常见的就是 Query。可以通过 JSON 字符串来自定义,它的语法如下:,默认大小限制为 500。你可以通过 size 进行设置。,你可以在 Query 中使用其他变量,当其他变量变化时,查询的结果也会随之变化。,adhoc Filter 是提供给用户可以自定义条件。官网提供的 demo[2],变量是值的占位符。您可以在指标查询和面板标题中使用变量。因此,当您使用仪表板顶部的下拉菜单更改值时,面板的指标查询将更改以反映新值。,可以使用以下两种语法:,以上是官网的使用,个人发现,类似 ES 中模板字符串的写法也是可以的。,本文结合 ElasticSearch 大致介绍了 Grafana 的基础概念以及最佳实践。Grafana 作为一个监控仪表盘系统,它的出现,不需要我们针对数据应用分析进行额外的开发,只需要通过配置就能得到我们想要的图表。,Grafana 的功能是强大而且灵活的,本文只是一个入门的介绍,更多的大家用到的时候还是得去看官网文档[3]。,[1]传送门: https://segmentfault.com/a/1190000002972420,[2]demo: https://play.grafana.org/d/CknOEXDMk/elasticsearch-templated?orgId=1d,[3]官网文档: https://grafana.com/docs/grafana/latest/,[4]Using Elasticsearch in Grafana: https://grafana.com/docs/grafana/latest/datasources/elasticsearch/#logs,[5]入门系列文章: https://juejin.cn/column/7023032795333132302,[6]ES官方文档: https://www.elastic.co/guide/en/kibana/current/lucene-query.html,[7]lucene 语法: https://www.elastic.co/guide/en/elasticsearch/reference/7.15/query-dsl-query-string-query.html#query-string-syntax
© 版权声明
文章版权归作者所有,未经允许请勿转载。