通过变量动态调整查询分析语句的参数

每个统计图表实际对应一个或多个查询分析语句,语句中的变量是用于动态调整查询参数的占位符,用户可以通过设置变量对统计图表或整个仪表盘进行筛选,而无需修改查询分析语句。另外,变量可以和交互事件配合使用,例如单击仪表盘后跳转到Logstore,以替换变量后的查询分析语句查询日志。

使用场景

变量的语法为${{变量名|默认值}},例如对于字段名method有多个字段值PUTPOSTGETDELETE,则变量为${{method|PUT}}。变量可以单独使用,也可以和交互事件配合使用。

占位符变量

对仪表盘或统计图表进行筛选

image

将查询分析语句中的字段设置为变量后,可以对整个仪表盘或单个统计图表进行筛选,无需修改查询分析语句。例如,上图只查看请求方法为POST的数据。

和交互事件配合使用

image

image

为请求状态的统计图表设置交互事件为打开日志库后,单击仪表盘上的字段值200,会自动跳转到Logstore查询状态值为200的日志。

配置示例

筛选整个仪表盘

如果仪表盘中已有添加了变量的统计图表,则添加变量类型的过滤器后,自动将统计图表的查询和分析语句中的变量替换为您选择的变量值。对整个仪表盘已设置该变量的统计图表都生效。

  • 添加变量类型的过滤器:将Nginx访问日志采集到日志服务后,您可以通过查询和分析语句查看每分钟的访问PV。例如您想查看每10秒、60秒或600秒的访问PV,则可以添加变量类型的过滤器,避免多次修改查询和分析语句进行查询。

筛选单个统计图表

通用配置中设置了变量替换后,日志服务将在当前统计图表的左上角添加一个过滤器。您可以在过滤器中选择对应的值,日志服务会自动将查询和分析语句中的变量替换为您所选择的变量值,执行一次查询和分析操作。

  1. 在如下查询分析语句中,将60设置为变量,格式为${{date | 60}}

    * | select __time__ - __time__ % 60 as time, COUNT(*) as pv, avg(request_time) as duration, request_method GROUP BY time, request_method order by time limit 1000
  2. 通用配置中设置变量替换。

    image

    设置变量key为date,变量的显示名为时间,变量值的显示名为min、hour,对应的变量值为60、3600。

    变量替换

    设置完成后,统计图表的左上方将出现一个过滤器。选择对应的值后,日志服务将根据您选择的值执行一次查询与分析操作。例如您选择hour,对应的查询分析语句为:

    * | SELECT __time__ - __time__ %3600 AS time, COUNT(*) AS pv, approx_distinct(remote_addr) AS uv GROUP BY time ORDER BY time LIMIT 10000

    变量替换

和交互事件配合使用

单击仪表盘实现交互事件后,变量替换为触发交互事件的值,并以替换变量后的查询分析语句刷新统计图表。

交互事件:两个示例都以Nginx访问日志为例。

  • 示例一:当您单击饼图中的状态为200的部分后,会跳转到Logstore查询状态为200的日志,查询时间范围和仪表盘的时间范围相同。

  • 示例二:将日志采集到名为website_log的日志库中并创建两个仪表盘(RequestMethod和destination_drilldown),在RequestMethod仪表盘中单击各个请求方法即可跳转到destination_drilldown仪表盘查看对应的PV趋势。