可视化指标监控与分析平台-Grafana
2020-08-22 12:51:06 阿炯

Grafana 是一款开源的可视化系统指标监控与分析平台,支持与包括 Graphite、Elasticsearch、OpenTSDB、Prometheus 和 InfluxDB 等在内的众多数据源集成。即它是一个开源的度量分析与可视化套件。采用 Go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。纯 Javascript 开发的前端工具,通过访问数据源来展示自定义报表、显示图表等。大多使用在时序数据的监控方面,与Kibana类似。Grafana的UI更加灵活,有丰富的插件,功能强大;它支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。采用Apache 2.0授权协议,2021年4月变更开源许可证为 AGPLv3。

其背后的公司 Grafana Labs 陆续推出了可扩展日志聚合系统 Loki,和多租户时序平台 Metrictank 等开源项目。除此之外,该公司还拥有两项商业产品:Grafana Cloud 和 Grafana 企业版。



Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture.

官方支持以下数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。每个数据源的查询语言和能力都是不同的。可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。



主要特性:灵活丰富的图形化选项、可以混合多种风格、支持白天和夜间模式、多个数据源:Graphite 和 InfluxDB 查询编辑器等等。

主要特点
1、展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
2、数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
3、通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
4、混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
5、注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
6、过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

Grafana非常强大的一个功能叫做Grafana Dashboard Templating,可以说是使用Grafana必用的技能。Dashboard 通过定义变量在不同界面被引用,如当你定义了变量在某一个Dashboard页面就会出现下拉选择框,从而也就具有可交互性了。在使用时只需要制作好一个Dashboard,然后利用Dashboard Templating功能就可以把做好的Dashboard进行复用,类似于模板。


基本概念

Grafana支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。

DashBoard:仪表盘,就像汽车仪表盘一样可以展示很多信息,包括车速,水箱温度等。Grafana的DashBoard就是以各种图形的方式来展示从Datasource拿到的数据。

Row:行,DashBoard的基本组成单元,一个DashBoard可以包含很多个row。一个row可以展示一种信息或者多种信息的组合,比如系统内存使用率,CPU五分钟及十分钟平均负载等。所以在一个DashBoard上可以集中展示很多内容。

Panel:面板,实际上就是row展示信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式,具体可以去官网上查阅。

Query Editor:查询编辑器,用来指定获取哪一部分数据。类似于sql查询语句,比如你要在某个row里面展示test这张表的数据,那么Query Editor里面就可以写成select * from test。这只是一种比方,实际上每个DataSource获取数据的方式都不一样,所以写法也不一样,比如像zabbix,数据是以指定某个监控项的方式来获取的。

Organization:组织,org是一个很大的概念,每个用户可以拥有多个org,grafana有一个默认的main org。用户登录后可以在不同的org之间切换,前提是该用户拥有多个org。不同的org之间完全不一样,包括datasource,dashboard等都不一样。创建一个org就相当于开了一个全新的视图,所有的datasource,dashboard等都要再重新开始创建。

User:用户,这个概念应该很简单,不用多说。Grafana里面用户有三种角色admin,editor,viewer。admin权限最高,可以执行任何操作,包括创建用户,新增Datasource,创建DashBoard。editor角色不可以创建用户,不可以新增Datasource,可以创建DashBoard。viewer角色仅可以查看DashBoard。在2.1版本及之后新增了一种角色read only editor(只读编辑模式),这种模式允许用户修改DashBoard,但是不允许保存。每个user可以拥有多个organization。

Data Source、Organization、User、Row、Panel、Query Editor、Dashboard

Data Source
支持多种时序数据源。每种数据源,都有各自的查询编辑器。目前官方支持了如下几种数据源: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,可以通过选择下拉菜单的参数,动态控制创建和移除行,点击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 Labs 获 5000 万美元 B 轮融资

2020年8月,Grafana 的开发商 Grafana Labs 宣布已完成 5,000 万美元的 B 轮融资。这笔资金将用于加快产品的研发速度,以及加大对 Grafana 社区的培养力度。本轮融资由  Lightspeed Venture Partners 牵头,Lead Edge Capital 也进行了追加投资。这两家风投公司都曾在 2019 年 10 月参与 Grafana Labs 的首轮融资,当时该公司筹得 2,400 万美元。根据 CrunchBase 提供的数据,Grafana Labs 自 2015 年以来获得投资总计 7,520 万美元。

目前 Grafana Labs 拥有 1,000 多家客户,包括彭博社、eBay、PayPal、索尼和英特尔等等。而在去年年底刚完成 A 轮融资时,这一数据为 500 左右。此次,该公司一并宣布了新的 Grafana 加速器计划(Grafana Accelerator Program,GAP),旨在培育初创公司及其项目,以扩展 Grafana 生态系统。GAP 将提供免费的 Grafana Cloud 和企业版订阅、现金赠款、股权融资,以及接触 Grafana Labs 内部核心开发人员的权限。

可以看出, Grafana Labs 的野心不局限于自身产品及平台,他们反复强调 Grafana 的生态系统,实际上也早就在行动中有所彰显。Cortex、Graphite、Prometheus 和 Tanka 等项目一直都是 Grafana Labs 团队的贡献对象,他们在对这些项目的研发和维护上都投入了不少。这样一来,Grafana 与这些项目获得了更好的集成,赢得更高的可用性;另一方面,Grafana 生态在无形之中就扩展开来。对许多开源项目来说,这不失为一种可盈利模式的参考。


收割季临近,Grafana, Loki 和 Tempo 变更开源许可证为 AGPLv3

2021年4月中旬,Grafana Labs 公司宣布旗下核心开源项目 (Grafana, Grafana Loki 和 Grafana Tempo) 的许可证将从 Apache License 2.0 变更为 AGPLv3,相关插件和库则仍保留使用 Apache License。

AGPLv3 是经 OSI 批准的开源许可证,符合自由和开源软件的所有标准。Grafana Labs CEO Raj Dutt 表示,此次开源许可证的变更不会影响他们的用户使用、修改或分发 Grafana Labs 的开源软件,但根据 AGPL 的条款,如果使用者对这些软件进行了修改,则必须将修改后的版本的源代码回馈给上游。这些条款旨在鼓励修改软件的第三方也能为项目和社区做出贡献。Grafana Labs 公司认为这是一种更公平的方式,并且有助于建立更强大的社区。

Raj 表示自己也知道 AGPL 对自家产品的“保护”不能达到像其他许可证(例如 SSPL)那种程度,但他认为这已经实现了一定的平衡,这种平衡是 Grafana Labs 公司一直以来的探索——如何在开源和社区的“价值创造”以及商业化策略的“价值获取”之间取得平衡。Grafana Labs 成立于2014年,旨在围绕开源项目 Grafana 建立起可持续发展的业务,以便把从商业产品中获得的收入重新投资于技术和社区。Raj 称开源一直以来都是 Grafana Labs 的内核,他相信采用 AGPLv3 可以让社区和用户继续拥有一直以来享有的自由。


最新版本:7.2
Alerting:确保通过 Google 聊天在移动设备中正确显示通知
TraceView:显示完整的 traceID 并更好地识别跨度详细信息中的多个 stackTrace
DataLinks:修复了数据链接未使用正确的字段配置对值进行插值的问题
DataProxy:忽略插件路由中的空 URL
Field config:渲染字段配置属性的默认值时,请遵循配置路径
Field config:修复字段配置编辑器类型不匹配的问题
Panel editor:防止在带有警报的面板中添加转换
Stat panel:解决字符串值始终为绿色的问题

最新版本:10.0
Grafana 10于2023年6月下旬正式发布,新版本不仅仅是引入了新的功能,还带来了更好的分析、协作、洞察、更高的效率,以及更美观的仪表盘。

Correlations:是现有数据链接功能的扩展,现在可以让你从任何数据源链接到任何其他数据源。它使你能够无缝地从一个数据源跳到另一个数据源。你可以定义不同数据源之间的关系;当你使用 Explore 时,只需点击一个数据源中相关字段旁边的按钮,Grafana 就会在其他数据源中运行相应的查询。Correlations 目前处于预览阶段。因此,我们建议你只在测试或开发实例上启用它,而不是在生产环境中。

Scenes:是 Grafana 的一个新的前端库,使应用工程师能够毫不费力地在其产品中建立令人惊叹的仪表盘体验。通过它可以轻松地创建反映 Grafana 仪表盘体验的应用程序,包括模板变量支持、灵活的布局、动态面板渲染等。

子文件夹:现在可以尝试在 Grafana 中创建子文件夹来组织你的仪表盘和警报。你可以在你的开发环境中启用这个新功能,以创建、阅读、更新和删除子文件夹,使其更容易按业务单位、部门和团队对资源进行分类。还可以使用基于角色的访问控制(RBAC)来设置权限。添加子文件夹的功能目前还处于预览阶段,更多的功能将在后续版本中出现。

Canvas 面板 GA:正在将 Canvas 面板从公共预览版中推广到普通版中。在过去的几个月里,我们为面板引入了多项增强功能,如绘制元素之间的连接、根据数据设置连接的颜色和大小,以及添加数据链接的能力。我们很高兴能将 Canvas 作为一级公民纳入 Grafana 的核心面板库中。

新的 Trends 面板:Trends 面板允许你显示 X 轴为数字而非时间的趋势。这个实验性面板解决了时间序列或 XY Chart 面板都没有解决的问题。例如,你可以绘制函数图、转速/扭矩曲线、供应/需求关系等。

新的 Datagrid 面板:Datagrid 是一个新的面板,允许你在 Grafana 仪表盘中编辑你的数据。你可以微调从数据源拉来的数据,或者从头开始创建你自己的数据集,并在仪表盘中使用它来实时更新你的面板。这就是 Datagrid 所提供的。你也可以将 Datagrid 面板作为其他面板使用的数据源,以增强其他数据。

将电子表格拖入 Grafana:在 Grafana 中查看本地数据比以前更容易了:引入拖放功能。拖放功能允许你上传 csv、Excel 等文件,只需将它们拖放到 Grafana 数据源的查询编辑器中。要尝试拖放功能,请启用 editPanelCSVDragAndDrop 功能切换。从 10.0 版本开始,拖放支持以下情况:将文件拖放到面板编辑器中;替换面板编辑器中的文件;创建默认的表格面板。

更容易选择数据源:最新的进展简化了在 Grafana 中选择理想数据源的过程,优先考虑最近的使用情况,并提供标签和补充说明。有了这个流程,选择数据源被大大简化,提供了一个清晰的可用数据源概览,并允许你在需要时快速连接到一个新的数据源。

其他:时间序列面板添加时区的支持,筛选仪表板注释以将注释应用于所有面板或选定面板;对 Grafana 的日志上下文功能进行了增强,从而提供了更加无缝和一致的用户体验;可以在 “探索” 中同时查询多个数据源。

更多详情可查看此处


官方主页:https://grafana.com