介绍
Grafana是一个开源的度量分析与可视化套件。纯 Javascript 开发的前端工具,通过访问库(如InfluxDB),展示自定义报表、显示图表等。大多使用在时序数据的监控方面,如同Kibana类似。Grafana的UI更加灵活,有丰富的插件,功能强大。
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。
官方支持以下数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。
每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。
特点
- 可视化:快速和灵活的客户端图形具有多种选项。面板插件为许多不同的方式可视化指标和日志。
- 报警:可视化地为最重要的指标定义警报规则。Grafana将持续评估它们,并发送通知。
- 通知:警报更改状态时,它会发出通知。接收电子邮件通知。
- 动态仪表盘:使用模板变量创建动态和可重用的仪表板,这些模板变量作为下拉菜单出现在仪表板顶部。
- 混合数据源:在同一个图中混合不同的数据源!可以根据每个查询指定数据源。这甚至适用于自定义数据源。
- 注释:注释来自不同数据源图表。将鼠标悬停在事件上可以显示完整的事件元数据和标记。
- 过滤器:过滤器允许您动态创建新的键/值过滤器,这些过滤器将自动应用于使用该数据源的所有查询。
Grafana 基本概念
Data Source
grafana支持多种时序数据源。每种数据源,都有各自的查询编辑器。目前官方支持了如下几种数据源:
- 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,可以通过选择下拉菜单的参数,动态控制创建和移除行(这些行可能有Panel,还没尝试&&)
点击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 的话,那么使用 SQLite 数据库就不行了,需要切换到 MySQL 或者 PostgreSQL,我们可以在 Grafana 配置的 [database] 部分找到数据库的相关配置,Grafana 会将所有长期数据保存在数据库中,然后部署多个 Grafana 实例使用同一个数据库即可实现高可用。