grafana结合open-falcon进行一些出图展示(四)
#紧接好几个月前的上文,我们针对zabbix的数据源做了一些出图方面的演示,本文针对open-falcon的数据来做一些出图方面的展示。
#此篇很重要可以仔细看一看。
一、open-falcon数据源设置
#我后来将grafana的版本升级到了最新版6系列,因为新版的配置界面确实挺好看的。
1.1 falcon-0.2.1+grafana-6.3.5
falcon的搭建链接:https://www.51niux.com/?id=230
安装grafana-zabbix插件:
#cd /application/grafana/data/plugins/
#git clone https://github.com/open-falcon/grafana-openfalcon-datasource
# ls -l /application/grafana/data/plugins/ #查看插件目录下会发现多了一个grafana-openfalcon-datasource目录
总用量 8 drwxr-xr-x 8 root root 4096 3月 27 16:18 alexanderzobnin-zabbix-app drwxr-xr-x 7 root root 4096 4月 1 20:11 grafana-openfalcon-datasource
安装完插件grafana必须重新启动:
#kill -9 `ps -ef|grep grafa|grep -v grep|awk '{print $2}'`
#cd /application/grafana
#./bin/grafana-server -config ./conf/grafana.ini &
注:
当然也可以用官网不重启的方式,在grafana.ini底部追加配置文件(但是这种方式是下载插件包到指定路径,grafana-cli这种方式就只会放到默认的/var/lib/grafana/plugins/下面,官网链接:https://grafana.com/docs/plugins/installation/):
[plugin.openfalcon] path = /application/grafana/data/plugins/fastweb-openfalcon-datasource
配置falcon数据源:
URL地址为:http://falcon.51niux.com:8080/api/v1/grafana
#其他链接测试什么的就自己做了哈,这里就不截图了,zabbix配置那里已经详细截图过了。
1.2 安装一些新的panel
#上一篇已经将grafana自带的一些pannel记录了一遍,我觉得这肯定满足不了大家的需要的还有很多面板呢,咱们再搞两个过来。
插件链接:https://grafana.com/grafana/plugins?type=panel
# /application/grafana/bin/grafana-cli plugins install grafana-piechart-panel #安装一个饼图
# /application/grafana/bin/grafana-cli plugins install michaeldmoore-annunciator-panel #michaeldmoore-信号器面板
#/application/grafana/bin/grafana-cli plugins install michaeldmoore-multistat-panel #内置SingleStat面板的增强版本
#/application/grafana/bin/grafana-cli plugins install grafana-clock-panel #时钟面板
博文来自:www.51niux.com
#在选择插件安装的时候注意下上图那里,有的是grafana自带的就不需要安装了。
二、open-falcon做一些出图展示
2.1 利用内置的graph做一些出图展示
先做一个Variables:
#展示这个group变量主要是想说明一下,falcon不能像前面zabbix一样可以进行主机组的选择,我是没有什么好办法知道的可以告诉我。
#然后做一个host变量,就是可以选择主机IP来显示不同主机的监控值,然后让其做个排序。
来做一个load监控值的图形展示:
#这个添加还是比较好搞的,你只要点有选择项就可以给你提示出来你就自己试就行了。
我们来个graph的值和表格显示相结合的方式:
#上图是原图,就是没有加特殊的操作的图,当然起到了显示监控数据的效果,但是你要看当前的监控值或者历史的监控高值之类的就费劲了,还要移动着鼠标去找一找。
表格要根据场景来选择是否右侧显示:
#入上图如果这个图是跟其他图并占一行,显然将这个表格移到底部会好一点,当然我们也看到了效果,我们可以直接查看表格来看一些当前和一些历史趋势图,比如带宽流量啊之类的这种需要回看历史数据的搞成这种显然效果更好一点。
#其他的cpu啊带宽啊都是这么个意思照这个这个意思去作图就可以了,这是最基本的一种做多个graph的图做成一个dashbard页面里。
博文来自:www.51niux.com
2.2 做一个变量可以选择某个主机的某些特定值
#好的根据上面的作图方式我们做了一个简单的dashboard,大家登录你的grafana可以通过一个页面可以查看某个IP不管是网络还是CPU等一些总体的历史趋势图了。那么现在有一个新的需求,当我发现某个大体的graph有异常但是里面的数值太多了,我想只看某几项监控值怎么办?又或者说我想比较一下一个集群下面的某几个IP在某个时刻某些监控项有什么差异呢?
先介绍一下怎么写变量:
这个falcon的变量跟zabbix的变量编写方式又不一样,我想单独定义一些关于监控项的变量改怎么写呢?
#上图为我们找了一个我们定义到的panel,然后查看其query语句。下面为部分语句:
#上图为部分内容,大概意思知道了post提交了一个data,然后返回了一堆数据,然后分析下,$host#disk#io#%,也就是如果想取disk的值就大概是disk,如果只取disk后面的io相关的值,就是disk后面跟io。
做一个只有disk_io的变量:
#当然host变量也是可以多选和全选的,肯定也是需要host变量的不然disk_io这个就没办法生效了。
设置可以随着变量变化的general:
下面如果让一个dashboard下面的图随着你的主机选择和监控项的选择动态的调整起来呢?前面已经说过了哈,不太理解可以看看前面。
下面看下效果:
#上图为单主机多监控项的效果图。
#下面为多主机监控项的效果图。
#这样你就可以一个主机查看多个单图的监控项,也可以多个主机进行监控项的对比了。
我们再来配置个关于CPU的变量:
$cpu $host#cpu#.*
网卡流入和流出就有点繁琐了哦:
$net_in $host#net#if#in#.* $net_out $host#net#if#out#.* $net_total $host#net#if#total#.*
#另外两个的Regex一致便可。
再来个TcpExt的:
#剩下的还有做什么变量都按照自己的意思来了啊。
还差最后一步,dashboard跳转:
我擦,做了好几个dashboard,如果别人要看你还要一个个的翻找,那肯定有点不合适,把Panel links用起来,做一个总图然后不同的监控总图做跳转,跳转到不同的dashboard中。
#上图为一个CPU监控跳转的例子。就不演示效果了,效果前面的章节已经显示过了,可以自己试试看。
再补一个hosts变量的例子:
前面不是说了我这也不知道falcon怎么按照定义的主机组显示,如果有个需求只想显示部分指定主机而不是全部咋办,肯定写hosts变量啊,下面就是一个简单的例子,具体实现还得自己测试着写哦:
192.168.11.([2-7]|22|23)|192.168.22.(186|187|188)
#上图首先是如果要正则就用()括起来再里面写正则,另外如果是多个网段一个正则不好写就用|做下衔接。
当然还有一个hosts搜索的小功能:
#上面哪个筛选是一个正则筛选,就是拿着你输入的字符串从可选列表里面匹配有没有模糊匹配上的,然后你在筛选出的列表中点击选中便可。
#falcon没办法获取到主机组,但是如果我们想搞成主机组的形式呢,可以将panel放到zabbix的dashboard下面,用zabbix的group组下面的host变量,这样就达到了falcon通过主机组查到到主机来进行监控指标查看,这样也就避免了没有主机组结果host下拉列表里面的IP太多。
三、结合实操理解Variables官网翻译
之前把这个的官网翻译放到前面了,现在觉得放这里更不错。
3.1 Variables(变量)介绍
变量允许更多交互式和动态仪表板。 可以在度量标准查询中对服务器,应用程序和传感器名称等硬编码进行硬编码,而不是在其位置使用变量。 变量显示为仪表板顶部的下拉选择框。 通过这些下拉菜单,可以轻松更改仪表板中显示的数据。
什么是变量?
变量是值的占位符。 可以在度量标准查询和面板标题中使用变量。 因此,当更改值时,使用仪表板顶部的下拉列表,面板的度量标准查询将更改以反映新值。
Interpolation(插值):
Panel titles and metric queries(面板标题和度量标准查询)可以使用两种不同的语法引用变量:
$varname示例:apps.frontend.$server.requests.count [[varname]]示例:apps.frontend.[[server]].requests.count
#为什么两种方式? 第一种语法更容易读写,但不允许在单词中间使用变量。 在表达式中使用第二种语法,如my.server[[serverNumber]].count
在将查询发送到数据源之前,会对查询进行插值,这意味着变量将替换为其当前值。 在插值期间,可以对变量值进行转义,以符合查询语言的语法和使用它的位置。 例如,在InfluxDB或Prometheus查询中的正则表达式中使用的变量将进行正则表达式转义。 有关插值期间值转义的详细信息,请阅读数据源特定文档文章。
Advanced Formatting Options(高级格式选型):
变量插值的格式取决于数据源,但在某些情况下可能希望更改默认格式。例如,MySql数据源的默认值是将多个值连接为逗号分隔的引号:'server01','server02'。 在某些情况下,可能希望使用逗号分隔的字符串,不带引号:server01,server02。 现在可以使用高级格式化选项。语法: ${var_name:option}
Glob:
将多值变量格式化为glob(用于Graphite查询)。
servers = ['test1', 'test2'] String to interpolate: '${servers:glob}' Interpolation result: '{test1,test2}'
Regex(正则表达式):
将多值变量格式化为正则表达式字符串。
servers = ['test1.', 'test2'] String to interpolate: '${servers:regex}' Interpolation result: '(test\.|test2)'
Pipe(管道):
将多值变量格式化为以管道分隔的字符串。
servers = ['test1.', 'test2'] String to interpolate: '${servers:pipe}' Interpolation result: 'test.|test2'
Csv:
将多值变量格式化为逗号分隔的字符串。
servers = ['test1', 'test2'] String to interpolate: '${servers:csv}' Interpolation result: 'test,test2'
Json:
将多值变量格式化为逗号分隔的字符串。
servers = ['test1', 'test2'] String to interpolate: '${servers:json}' Interpolation result: '["test1", "test2"]'
Distributed(分布式):
为OpenTSDB格式化自定义格式的多值变量。
servers = ['test1', 'test2'] String to interpolate: '${servers:distributed}' Interpolation result: 'test1,servers=test2'
Lucene:
为Elasticsearch格式化lucene格式的多值变量。
servers = ['test1', 'test2'] String to interpolate: '${servers:lucene}' Interpolation result: '("test1" OR "test2")'
Percentencode:
格式化单值和多值变量以用于URL参数。
servers = ['foo()bar BAZ', 'test2'] String to interpolate: '${servers:lucene}' Interpolation result: 'foo%28%29bar%20BAZ%2Ctest2'
测试格式选项上Grafana Play网站https://play.grafana.org/d/cJtIfcWiz/template-variable-formatting-options?orgId=1。如果指定了任何无效的格式化选项,则glob是default/fallback选项。另一种语法(可能在将来不推荐使用)是[[var_name:option]]。
Variable options(变量选项):
变量显示为仪表板顶部的下拉选择框。它具有当前值和一组选项。 选项可以选择的一组值。
添加变量:
Basic variable options(基本变量选项):
选项 | 描述 |
Name | 变量的名称,这是在度量标准查询中引用变量时使用的名称。 必须是唯一的,不包含空格。 |
Label | 此变量的下拉列表的名称。 |
Hide | 隐藏 |
Type | 类型 |
Variable types(变量类型):
Type | Description |
Query | 此变量类型允许编写数据源查询,该查询通常返回度量标准名称,标记值或键的列表。 例如,返回服务器名称,传感器ID或数据中心列表的查询。 |
Interval | 此变量可表示时间跨度。 不是按时间或日期直方图间隔对组进行硬编码,而是使用此类型的变量。 |
Datasource | 此类型允许快速更改整个仪表板的数据源。 如果您在不同的环境中有多个数据源实例,则非常有用。 |
Custom | 使用逗号分隔列表手动定义变量选项。 |
Constant | 定义隐藏常量。 对于要共享的仪表板的度量标准路径前缀很有用。 在仪表板导出期间,常量变量将变为导入选项。 |
Ad hoc filters | 非常特殊的变量,目前仅适用于某些数据源,InfluxDB和Elasticsearch。 它允许您添加键/值过滤器,这些过滤器将自动添加到使用指定数据源的所有度量标准查询中。 |
Text box | 此变量类型将显示为带有可选默认值的自由文本输入字段。 |
Query options(查询选项):
此变量类型是最强大和最复杂的,因为它可以使用数据源查询动态获取其选项。
Option | Description |
Data source | 查询的数据源目标。 |
Refresh | 控制何时更新变量选项列表(下拉列表中的值)。On Dashboard Load将减慢仪表板负载,因为在初始化仪表板之前需要完成变量查询。 如果变量选项查询包含时间范围过滤器或取决于仪表板时间范围,则仅将此设置为“On Time Range Change”。 |
Query | 数据源特定的查询表达式。 |
Regex | 正则表达式过滤或捕获数据源查询返回的名称的特定部分。 可选的。 |
Sort | 在下拉列表中定义选项的排序顺序。 已禁用表示将使用数据源查询返回的选项顺序。 |
Using regex to filter/modify values in the Variable dropdown(使用正则表达式过滤/修改“变量”下拉列表中的值):
使用Regex Query Option,可以筛选Variable查询返回的选项列表,或修改返回的选项。
过滤以下选项列表的示例:
backend_01 backend_02 backend_03 backend_04
过滤以便仅返回以01或02结尾的选项:正则表达式:
/.*[01|02]/
结果:
backend_01 backend_02
使用正则表达式捕获组过滤和修改选项以返回部分文本:正则表达式:
/.*(01|02)/
结果:
01 02
过滤和修改 - 普罗米修斯示例:
选项列表:
up{instance="demo.robustperception.io:9090",job="prometheus"} 1 1521630638000 up{instance="demo.robustperception.io:9093",job="alertmanager"} 1 1521630638000 up{instance="demo.robustperception.io:9100",job="node"} 1 1521630638000
正则表达式:
/.*instance="([^"]*).*/
结果:
demo.robustperception.io:9090 demo.robustperception.io:9093 demo.robustperception.io:9100
Query expressions(查询表达式):
每个数据源的查询表达式都不同。
Graphite模板查询:http://docs.grafana.org/features/datasources/graphite/#templating
Elasticsearch模板查询:http://docs.grafana.org/features/datasources/elasticsearch/#templating
InfluxDB模板查询:http://docs.grafana.org/features/datasources/influxdb/#templating
Prometheus模板查询:http://docs.grafana.org/features/datasources/prometheus/#templating
OpenTSDB模板查询:http://docs.grafana.org/features/datasources/opentsdb/#templating
需要注意的一点是,查询表达式可以包含对其他变量的引用,实际上可以创建链接变量。 Grafana将检测到这一点并在其中一个变量包含变量时自动刷新变量。
Selection Options(选择选项):
Option | Description |
Multi-value | 如果启用,该变量将支持同时选择多个选项。 |
Include All option | 添加一个特殊的All选项,其值包括所有选项。 |
自定义所有值 | 默认情况下,All值将包括组合表达式中的所有选项。 这可能会变得很长并且可能会出现性能问题。 很多时候,最好指定一个自定义的所有值,比如通配符正则表达式。 为了能够在Custom all value选项中使用自定义正则表达式,globs或lucene语法,它永远不会被转义,因此你必须考虑数据源的有效值。 |
Formatting multiple values(格式化多个值):
使用所选择的多个值对变量进行插值是很棘手的,因为如何将多个值格式化为在使用该变量的给定上下文中有效的字符串并不是直截了当的。 Grafana尝试通过允许每个数据源插件向模板插值引擎通知用于多个值的格式来解决此问题。
请注意,变量的自定义全部值选项必须留空,以便Grafana将所有值格式化为单个字符串。
例如:
Graphite使用glob表达式。 在这种情况下,如果当前变量值是host1,host2和host3,则具有多个值的变量将被插值为{host1,host2,host3}。
InfluxDB和Prometheus使用正则表达式,因此相同的变量将被插值为(host1 | host2 | host3)。 如果没有,每个值也将是正则表达式转义,具有正则表达式控制字符的值将破坏正则表达式。
Elasticsearch使用lucene查询语法,因此在这种情况下,相同的变量将被格式化为(“host1”OR“host2”或“host3”)。 在这种情况下,每个值都需要进行转义,以便该值可以包含lucene控制字和引号。
Formatting troubles(格式化问题):
自动转义和格式化可能会导致问题,掌握它背后的逻辑可能会很棘手。 特别是对于InfluxDB和Prometheus,使用正则表达式语法要求在regex运算符上下文中使用该变量。 如果你不希望Grafana执行此操作,则自动正则表达式转义并格式化您唯一的选项是禁用“Multi-value”或“Include All option options”选项。
Value groups/tags(值 组/标签):
如果在多值变量的下拉列表中有很多选项。 可以使用此功能将值分组为可选标记。
Option | Description |
Tags query | 应返回标记列表的数据源查询 |
Tag values query | 应返回指定标记键值的列表的数据源查询。 在查询中使用$tag来引用当前选定的标记。 |
Interval variables(区间变量):
使用Interval类型创建表示时间跨度的变量(例如,1m,1h,1d)。 还有一个特殊的自动选项,它将根据当前时间范围而变化。 您可以指定当前时间范围应划分的次数,以计算当前的自动时间跨度。
此变量类型可用作按时间分组(对于InfluxDB),日期直方图间隔(对于Elasticsearch)或作为汇总函数参数(对于Graphite)的参数。
在graphite函数中使用Interval类型的模板变量myinterval的示例:
summarize($myinterval, sum, false)
Global Built-in Variables(全局内置变量):
Grafana具有全局内置变量,可以在查询编辑器中的表达式中使用。
Time range variables(时间范围变量):
Grafana在$__from and $__to中有两个内置的时间范围变量。它们目前总是插值为纪元毫秒。 这些变量仅适用于Grafana v6.0及更高版本。
The $__interval Variable:
这个$ __ interval变量类似于上面描述的auto interval变量。 它可以用作按时间分组的参数(对于InfluxDB,MySQL,Postgres,MSSQL),日期直方图间隔(对于Elasticsearch)或作为汇总函数参数(对于Graphite)。
Grafana自动计算可用于在查询中按时间分组的间隔。 当数据点多于图表上显示的数据点时,可以通过更大的间隔分组来提高查询效率。 在查看3个月的数据时,按1天比10分组更有效,图表看起来相同,查询会更快。 $ __间隔使用时间范围和图形宽度(像素数)计算。
近似计算:(from - to) / resolution
例如,当时间范围为1小时且图形为全屏时,则可以将间隔计算为2m - 以2分钟为间隔对点进行分组。 如果时间范围是6个月并且图表是全屏,则间隔可能是1d(1天) - 点按天分组。
在InfluxDB数据源中,遗留变量$interval是相同的变量。 应该使用$__interval。
InfluxDB和Elasticsearch数据源具有按时间间隔分组的字段,用于对间隔进行硬编码或设置$ __ interval变量的最小限制$__interval variable (by using the > syntax -> >10m)。
The $__interval_ms Variable:
此变量是$__interval变量,以毫秒为单位(而不是格式化字符串的时间间隔)。 例如,如果$__interval is 20m,那么$ __ interval_ms是1200000。
The $timeFilter or $__timeFilter Variable:
The $timeFilter变量将当前选定的时间范围作为表达式返回。 例如,时间范围间隔最近7天表达式是time > now() - 7d。
这在InfluxDB数据源的WHERE子句中使用。 在查询编辑器模式下,Grafana会自动将其添加到InfluxDB查询中。 它必须在文本编辑器模式下手动添加:WHERE $timeFilter。
The $__timeFilter用于MySQL数据源。
The $__name Variable:
此变量仅在Singlestat面板中可用,可以在“选项”选项卡上的前缀或后缀字段中使用。 变量将替换为系列名称或别名。
The $__range Variable:
仅适用于Grafana v5.3 +。
目前仅支持Prometheus数据源。 此变量表示当前仪表板的范围。 它的计算方法to - from。 它有一个毫秒和第二个表示,称为$__range_ms and $__range_s。
Repeating Panels(重复面板):
模板变量对于在整个仪表板中动态更改查询非常有用。 如果希望Grafana根据选择的值动态创建新面板或行,则可以使用“ Repeat”功能。
如果有一个具有多值的变量或启用了包含所有值选项,可以选择一个面板并让Grafana为每个选定值重复该面板。 可以在面板编辑模式的“General”选项卡下找到“Repeat”功能。
direction控制面板的排列方式。
通过选择horizontal(横向/水平)面板,面板将并排布置。 Grafana将自动调整每个重复面板的宽度,以便填满整行。 目前,不能将一行中的其他面板与重复面板混合使用。
设置Max per row(每行最多值)以告诉grafana每行最多需要多少个面板。 如果没有设置任何内容,则默认为4。
通过选择vertical(垂直),面板将从列的顶部到底部排列。 重复面板的宽度与重复的第一面板(原始模板)的宽度相同。
仅对第一个面板(原始模板)进行更改。 要使更改在所有面板上生效,需要触发动态仪表板重建。 可以通过更改变量值(这是重复的基础)或重新加载仪表板来完成此操作。
Repeating Rows(重复行):
如上图所示,如果使用Multi-value or Include all value选项设置变量,则还可以重复行。
要启用此功能,需要先使用“ Add Panel”菜单添加新行。 然后,通过将行标题悬停并单击cog按钮,将访问“Row Options”配置面板。 然后,可以选择要为其重复行的变量。
在行标题中使用变量也是一个好主意。
示例:重复行仪表板(https://play.grafana.org/d/000000054/repeated-rows?orgId=1)
URL state:
始终使用语法 var-<varname>=value将变量值同步到URL。
例子:
Graphite模板仪表板:https://play.grafana.org/d/000000056/graphite-templated-nested?orgId=1
Elasticsearch Templated Dashboard:https://play.grafana.org/d/000000015/elasticsearch-templated?orgId=1
InfluxDB Templated Dashboard:https://play.grafana.org/d/000000002/influxdb-templated-queries?orgId=1
3.2 操作理解一下:
Interval variables(区间变量):
博文来自:www.51niux.com
Query options:
#这个变量方式这几篇章节已经很多例子了就不再截图单独说明了。
Datasource:
此类型允许快速更改整个仪表板的数据源。 如果在不同的环境中有多个数据源实例,则非常有用。
打个比方,现在我有多套zabbix环境,比如办公网有一套然后好几个地方有一套,我想让这些不同的zabbix数据源再一个dashboard中显示,这怎么办?
#其他的变量就正常设置就行了,这样就显示了多个源的数据可以在一个pannel里面显示了。
Text box:
#Text box类型就相当于精确匹配去选择自己要展示的内容。
四、学习一些新的panel
4.1 Bar Gauge
#还是用用falcon的数据源现在一个关于cpu.user的图。
先来配置一个柱状图:
下面看看展示效果:
#这样我们一幕了然就能看到哪个字段高,有没有那种霓虹灯的感觉。当然有一个小问题,就是当你选择的主机多了之后下面的代表每个机器的字体那里就会挤到一起显示不全,你就无法判断是哪台机器值比较高,当你把数据移动过去也不会有字体显示告诉这是哪台机器。
#当然你可以通过把这个图拉宽的方式或者少选择几台机器的方式屏蔽这个问题。
我们让图倒过来显示一下:
#就是Orientation那里选择Horizontal选项。
#可以看到每个主机的字段都是分开的比较清晰,当然这种方式就是你想看一堆机器当前那个机器的值比较高,当然看历史趋势图还是需要Graph作图的。
4.2 Clock Panel:
时钟面板可以显示当前时间或倒计时并每秒更新一次。
博文来自:www.51niux.com
4.3 Annunciator
内置SingleStat面板的增强版本,具有专门的阈值显示和敏感值的展示。用于grafana的自定义信号器面板,基于内置的SingleStat面板。
该面板是为Singlestat的增强而开发的,它提供了一些特别适用于control/monitoring dashboards的有用附加功能。 Singlestat显示来自时间序列数据集的单个度量,具有可选的阈值相关着色等.Nonunciator构建在此基础上,添加可选的上限和下限警告以及硬限制。 如果需要,可以将上限和下限显示为参考值。 可以禁用5种可能状态(OK,超出上限或下限以及超出上限或下限警告级别)中的每一种。 如果启用,这些可以单独设置为“flash”(使用SVG动画)。
与SingleStat一样,Annunciator面板允许您显示SINGLE系列的一个主要摘要统计。 它将系列缩减为单个数字(通过查看系列中的最大值,最小值,平均值或总和值)。 根据配置选项,面板还可以显示上限和下限警报阈值,根据相对于阈值的度量值进行着色,以及可选闪存等。
除了SingleStat的基本功能外,此面板还提供其他显示属性,包括设置上限和下限警告和限制阈值的功能,以及设置适合每种状态的颜色以及值是否应“闪烁”。如果需要,当超过任何一个极限值时,可以将显示值设置为闪烁。 这些限制的当前值也可以显示在信号器上。
此面板旨在支持简单的时间序列数据集 - 与SingleStat不同,Annunciator不支持基于表的数据集。
panel配置:
#特别注意这种panel,只能选择一种监控值来显示,不能同时选择多个Query,不然的话就要报错了。
好了最后看眼效果:
#然后下一个问题,你说我就想我的数值按照两位浮点数来显示而不是4位来显示。
4.4 Pie Chart
#这个饼图也挺有用的,比如我们公网出口的带宽是多少,然后我想看看公网的使用情况,比如公网机器或者域名的带宽比例是多少,这时候就用上了。
下面看看效果图: