在学习一款软件之前,我最热衷的事件就是搜索这款软件名字的含义。

关于 Grafana 名字的来历

It does not mean anything. Its a made up word. Grafana started with some code from the Kibana project (Kibana does mean something), and to honer that heritage I named it Grafana as mix between Graph and Kibana (Graph is spelled Graf in swedish)

看,Grafana 的名字有致敬 Kibana 的成分,那 Kibana 名字的来历又是什么呢?

Rashid Khan, the creator of Kibana, wanted to make a product that could visualize log data. So he thought, it would be cool to name it based on a translation into a foreign language. He chose to translate “wood hut” into Swahili, because he served in the Peace Corps in Africa before working in technology (and because logs aren’t really used to build huts in Kenya). He used Google Translate for it, and at the time Google Translate showed “Kibana” as the translation.

It doesn’t show that translation anymore though: now it translates roughly to “Kibanda”. “Kibana” seems that it actually means “Baby” in Swahili.

Another fun fact: port 5601 was chosen because it is l33t speak for “logs” spelled backwards.

是不是很有意思?因为作者曾服役于非洲的和平部队,他命名的时候选择将 ”wood hut” 翻译为 Swahili 语,然后谷歌翻译给出了 kibanda。 -w646

进入正题,我的笔记一向很简单。

这是一款画图软件(你叫“可视化”也没毛病),他能画什么图(Panels):

  1. Graph(折线图、直方图之类)
  2. Singlestat(仪表盘或单纯一个数值那种图)
  3. Table(表格能表达的维度就很多了)
  4. Heatmap(热度图,就是直方图的进阶版,可以表达时间范围的数据分布状况)
  5. Alert list(告警列表,就是有什么告警,可以展示出来)
  6. Dashboard list(Dashboard 之间快速跳转的一种方式)
  7. Text(普通文本啦,不过可以写 markdown)

作为一款画图软件,前面四种都是图可以理解,后面三张有啥用呢?很简单,画了很多图,要找一个地方放吧,这个地方就是 Dashboard。

每个 Dashboard 图太多,是不是要汇总做一些说明,可以用 Text;有告警要方便查看,可以用 Alert list。图变得更多,一个 Dashboard 放不下,就要建立更多 Dashboard(分类),如果 Dashboard 之间有关联关系,记忆和切换不方便,就可以用 Dashboard list 汇总相关的 Dashboard。

这样 Panel 和 Dashboard 的关系就搞清楚。

数据源,也就是绘制图像的数据来源,相信不用解释,Mysql, Elasticsearch 这些都算,当然官方支持了一堆,这也是它强大的地方。

然后再理解一个东西: Variables 变量

Variables

变量含义很容易理解,主要需要理解在 Grafana 中起什么作用。据我目前的实践来看,主要用来简化重复绘图步骤和动态显示。比如说,我们监控两台服务器的 CPU 的使用率,可能存在以下两种场景:

  1. 使用率随时间变化的情况(最常见,两根曲线绘制在一张图)
  2. 绘制两个仪表盘,显示实时的使用率(绘制两次么?不,我们可以使用变量,因为唯一的不同就是服务器啊)

还有什么场景可以使用变量呢?假设有好几组服务器,我想一次只展示一组服务器(很多台)的图表(很多张)。因为每组服务器的图表的都是一样的配置,所以我们也可以使用变量来替换变化的数据(这里假设就是服务器的分组名)。

Grafana 的变量实际上可以认为是一个数组(有时也会是单个值),数组可以循环,不就避免了重复配置图表么?你还可配置是否可以同时选中数组的多个值(Multi-value),也可以配置 all 选项(表示选中所有)。最后使用图表的一个配置 repeat ,来达到重复绘制的目的。

最后的问题就是这个数组该怎么定义了。和数据源一样,这个数组支持多种数据来源,可以硬编码,也可以动态查询,并且根据场景还会区分不同的数据类型(时间范围、字符串等)。

总结

可能讲了一堆看不懂的废话,无妨,此时再去看官方文档,肯定好理解许多,只有自己看官方文档才能接受第一手知识嘛。

为什么不写绘图细节呢?

一、实操教程很容易找到;

二、每种图的选项其实并不多,有耐心亲自去试,也才能达到了学习的效果。

其实我觉得除了 Variables 比较难理解,其他可能都是英文障碍吧,每个选项慢慢抠,都能理解。所以最后列出学习过程出现的单词及其理解。

名词 释义 出现位置
spark line 走势图 Singlestat
gauge 测量仪器,也就是设置显示为仪表盘那种图的意思 Singlestat
value mapping 值映射,将数据的值映射为“一段文本”显示 Singlestat
legend 图例 Graph
playlist 播放列表,用来轮换显示播放列表里的 Dashboard
gradient 梯度 Graph
staircase 楼梯,阶梯,也就是阶梯线 Graph
hover tooltip 悬停提示 Graph
series 每条线就可以理解为一个 series
stacking 堆叠,可以去搜索一下“堆积折线图” Graph
decimals 小数位数 Graph
axes axis 的复数
axis 轴,坐标轴
thresholds 阈值 Alert
time regions 时间区域,对特定时间区域标注,注意是 utc 时间
individual 独立的,理解“堆积折线图”,就知道啥意思了 Graph
cumulative 累加的,理解“堆积折线图”,就知道啥意思了 Graph
instant 实时的,instant query 就是只查询最新时间的数据,而不是一个时间段的数据
heatmap 热度图
histograms 直方图
evaluate 评估,出现在告警设置中,表示多长时间检查一下是否超过规则设定的阈值
dedupe dedupe是单词De-duplication简单形式,可以用作动词或名词,意思是“重复数据删除“。Grafana 早期版本多机部署时,存在告警重复的情况

另外,不想自己安装的,可以先到练兵场,摆弄一番。之后再自己安装一下,加深理解。