前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >15 分钟带你入门 Grafana

15 分钟带你入门 Grafana

作者头像
GopalFeng
发布2022-08-01 20:09:45
3.1K0
发布2022-08-01 20:09:45
举报

本篇文章采用的演示数据源是 ElasticSearch,ElasticSearch 版本是 7.x。Grafana 版本是 8.0.5。

简介

Grafana 是一款用 GO 语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。

特点:

  • 可视化。Grafana 拥有快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式,让我们复杂的数据展示的美观而优雅。
  • 报警和通知。可视化地为最重要的指标定义警报规则。Grafana 将持续评估它们,并发送通知。
  • 动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。
  • 混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。
  • 注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。
  • 过滤器:Grafana 使用 Ad-hoc 过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

安装

Mac 下需要首先安装 brew 这个包管理工具,再安装 Grafana 就方便多了:

代码语言:javascript
复制
brew update
brew install grafana

启停命令。通过下面命令可以后台启动/停止 Grafana,默认端口 3000。

代码语言:javascript
复制
// start
brew services start grafana
// stop
brew services stop grafana

查看 Grafana 版本:

代码语言:javascript
复制
grafana-server -v

浏览器登录:http://127.0.0.1:3000/

默认的用户名和密码是:admin/admin

下载安装特定版本

mac 环境如下:

  • 第一步,下载
代码语言:javascript
复制
curl -O https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.6.darwin-amd64.tar.gz
  • 第二步,解压
代码语言:javascript
复制
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.

代码语言:javascript
复制
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 中使用其他变量,当其他变量变化时,查询的结果也会随之变化。

代码语言:javascript
复制
{"find": "terms", "field": "@hostname", "query": "@source:$source"}

adhoc Filter 是提供给用户可以自定义条件。官网提供的 demo[2]

使用变量

变量是值的占位符。您可以在指标查询和面板标题中使用变量。因此,当您使用仪表板顶部的下拉菜单更改值时,面板的指标查询将更改以反映新值。

可以使用以下两种语法:

  • <varname> eg: @hostname:
  • [[varname]] eg: @hostname:[[hostname]]

以上是官网的使用,个人发现,类似 ES 中模板字符串的写法也是可以的。

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 安装
    • 下载安装特定版本
    • 基础概念
      • 组织与用户
        • 数据源
          • Access
        • 仪表盘(Dashboard)
        • 最佳实践 - 编辑图表
          • Metric Query editor
            • Query
            • Metrics指标
            • Group by
            • Expression 计算
            • 别名使用
          • Templating(模板)
            • 设置变量
            • 使用变量
        • 总结
        • 参考
          • 参考资料
          相关产品与服务
          Elasticsearch Service
          腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档