当前位置:网站首页>Get started with Grafana in 15 minutes
Get started with Grafana in 15 minutes
2022-08-01 21:03:00 【GopalFeng】
本篇文章采用的演示数据源是 ElasticSearch,ElasticSearch 版本是 7.x.Grafana 版本是 8.0.5.
简介
Grafana 是一款用 GO 语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能.
特点:
- 可视化.Grafana 拥有快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式,让我们复杂的数据展示的美观而优雅.
- 报警和通知.可视化地为最重要的指标定义警报规则.Grafana 将持续评估它们,并发送通知.
- 动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部.
- 混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源.这甚至适用于自定义数据源.
- 注释:注释来自不同数据源图表.将鼠标悬停在事件上可以显示完整的事件元数据和标记.
- 过滤器:Grafana 使用 Ad-hoc 过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询.
安装
Mac 下需要首先安装 brew 这个包管理工具,再安装 Grafana 就方便多了:
brew update
brew install grafana
启停命令.通过下面命令可以后台启动/停止 Grafana,默认端口 3000.
// start
brew services start grafana
// stop
brew services stop grafana
查看 Grafana 版本:
grafana-server -v
浏览器登录:http://127.0.0.1:3000/
.
默认的用户名和密码是:admin/admin
.
下载安装特定版本
mac
环境如下:
- 第一步,下载
curl -O https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6.darwin-amd64.tar.gz
- 第二步,解压
tar -zxvf grafana-enterprise-8.4.6.darwin-amd64.tar.gz
- 第三步,启动.进入解压目录,
./bin/grafana-server web
基础概念
组织与用户
Organization(组织) 是一个很大的概念,每个用户可以拥有多个 Organization,Grafana 有一个默认的组织.用户登录后可以在不同的 Organization 之间切换,前提是该用户拥有多个 Organization.不同的 Organization 之间完全不一样,包括 datasource,dashboard 等都不一样.创建一个 Organization 就相当于开了一个全新的视图,所有的 datasource,dashboard 等都要再重新开始创建.
User(用户),这个概念应该很简单,不用多说.Grafana 里面用户有三种角色 admin,editor,viewer.在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改 DashBoard,但是不允许保存.每个 user 可以拥有多个 Organization.
- admin 权限最高,可以执行任何操作,包括创建用户,新增 Datasource,创建DashBoard.
- editor 角色不可以创建用户,不可以新增 Datasource,可以创建 DashBoard.
- viewer 角色仅可以查看 DashBoard.
数据源
前文说过,Grafana 支持多种数据源.
可以执行多种简单或复杂 Elasticsearch 查询,以可视化存储在 Elasticsearch 中的日志.
右侧设置 -- 数据源 -- Add data source -- ElasticSearch.
其中 Index name
是为时间字段指定默认值,并指定 Elasticsearch 索引的名称.您可以使用索引名称或通配符的时间模式.
Access
这里对 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.
http.cors.enabled: true
http.cors.allow-origin: "*"
仪表盘(Dashboard)
我们接下来介绍一下 Grafana 中的重要 UI 界面——仪表盘.
- Dashboard.通过数据源定义好可视化的数据来源之后,对于用户而言最重要的事情就是实现数据的可视化.在 Grafana 中,我们通过 Dashboard 来组织和管理我们的数据可视化图表.
- Row.在 Dashboard 页面中,我们还可以定义一个 Row(行),来组织和管理一组相关的 Panel.
- Panel.在一个 Dashboard 中一个最基本的可视化单元为一个 Panel(面板).通过 Panel 的 Query Editor(查询编辑器)我们可以为每一个 Panel 添加查询的数据源以及数据查询方式.每一个 Panel 都是独立的,可以选择一种或者多种数据源进行查询.比如我们使用 ElasticSearch,那么我们可以使用 Lucene 语句进行查询.
最佳实践 - 编辑图表
Metric Query editor
指标查询编辑器.ElasticSearch 的 Metric Query editor 支持选择多种指标(Metrics)和分组(Group By).可以通过添加或者删除的图标进行.
Query
使用 lucene 查询语句.lucene 语法可以参看传送门[1],语法中也可以使用变量.
我大概梳理了一下,常见的语法有以下:
Metrics指标
Metrics.指标配置,每种数据源提供不同的选项,我这里用的是Elasticsearch.
根据自己的需求选择,比如 Unique Count(根据某个字段去重,计算 UV 的时候).比如我们需要计算百分位,就选择 Percentiles.
集成了 ElasticSearch 中很多聚合的方法,比如 Min/Max/Count 等.
Group by
聚合分组方式,每个指标属性不同.
Date Histogram,根据时间聚合.
Terms 根据某个字段进行聚合,一般用于生成表格.
Expression 计算
可以通过 Expression 计算出相应的结果.
较低版本不支持 Expression.可以通过 Transform 进行处理.在传递查询的结果集以进行可视化之前,对结果进行一层转换.可以支持命名过滤字段、跨查询进行计算等等.
别名使用
可以用固定值,也可以使用分组变量:
Templating(模板)
在指标查询除了硬编码的方式,Grafana 支持变量注入的方式.变量显示为仪表板顶部的下拉选择框.这些下拉框可以方便地更改仪表板中显示的数据.
设置变量
在 Dashboard 的设置中,我们找到 Variables 的设置,点击 New,进入设置页面,其中 Type 类型包含多种,我们常见的就是 Query.可以通过 JSON 字符串来自定义,它的语法如下:
默认大小限制为 500.你可以通过 size 进行设置.
你可以在 Query 中使用其他变量,当其他变量变化时,查询的结果也会随之变化.
{"find": "terms", "field": "@hostname", "query": "@source:$source"}
adhoc Filter 是提供给用户可以自定义条件.官网提供的 demo[2]
使用变量
变量是值的占位符.您可以在指标查询和面板标题中使用变量.因此,当您使用仪表板顶部的下拉菜单更改值时,面板的指标查询将更改以反映新值.
可以使用以下两种语法:
- <varname> eg: @hostname:
[[varname]] eg: @hostname:[[hostname]]
以上是官网的使用,个人发现,类似 ES 中模板字符串的写法也是可以的.
name: ${name} AND env: test AND NOT a: ""
总结
本文结合 ElasticSearch 大致介绍了 Grafana 的基础概念以及最佳实践.Grafana 作为一个监控仪表盘系统,它的出现,不需要我们针对数据应用分析进行额外的开发,只需要通过配置就能得到我们想要的图表.
Grafana 的功能是强大而且灵活的,本文只是一个入门的介绍,更多的大家用到的时候还是得去看官网文档[3].
参考
- Using Elasticsearch in Grafana[4]
- 入门系列文章[5]
- ES官方文档[6]
- lucene 语法[7]
参考资料
[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
边栏推荐
猜你喜欢
随机推荐
如何用Chrome编辑以及调试代码
C语言之字符串函数二
360借条安全专家:陌生微信好友不要轻易加贷款推广多是诈骗
JS hoisting: how to break the chain of Promise calls
(七)《数电》——CMOS与TTL门电路
技能大赛训练:A部分加固题目
vant实现Select效果--单选和多选
Common pits in the Go language
98.嵌入式控制器EC实战 EC开发板开发完成
Record the first PR to an open source project
Hiking, cured my mental internal friction
OSG Notes: Set DO_NOT_COMPUTE_NEAR_FAR to manually calculate far and near planes
Simple test of the use of iptables
StringTable Detailed String Pool Performance Tuning String Concatenation
【微信小程序】【AR】threejs-miniprogram 安装(76/100)
Go 语言中常见的坑
Classification interface, Taobao classification details API
R语言进行相关的操作
面试官:大量请求 Redis 不存在的数据,从而打倒数据库,有什么方案?
Jmeter实战 | 同用户重复并发多次抢红包