Skip to content

仪表盘过滤器最佳实践

在日志服务仪表盘中添加过滤器,即对整个仪表盘进行查询过滤或变量替换操作。过滤器用于为仪表盘中的所有统计图表批量修改查询条件或替换占位符变量。每张统计图表实际为一个查询和分析语句([search query] | [sql query]),过滤器实质上是操作该查询语句([search query])和分析语句([sql query]

过滤器类型

过滤器类型目前分为:过滤器 和 变量替换 image.png

过滤器

通过日志字段的Key和Value进行过滤。在执行过滤器操作时,将其作为过滤条件增加到查询和分析语句前,使用 ANDNOT 连接。例如:在过滤器中给 Key 的值选择 Value1,则所有图表语句中会 自动 加上 Key: Value1 最终变成 Key: Value1 AND [search query] | [sql query] 的形式。该语句表示在原查询和分析语句的结果中,查找包含Key:Value1的日志。 同时 Key 的值可以设置多个value。例如:在过滤器中给 Key 的值选择 Value2Value3,则所有图表语句会 自动 加上 Key: Value2 OR Key: Value3 最终变成 Key: Value2 OR Key: Value3 AND [search query] | [sql query] 的形式。该语句表示在原查询和分析语句的结果中,查找包含 Key:Value2 或者 Key: Value3 的日志。

变量替换

指定变量和变量的值。如果仪表盘中已有设置了该变量占位符的统计图表,则添加变量类型的过滤器后,自动将统计图表的查询和分析语句中的变量替换为您选择的变量值。对整个仪表盘已设置该变量的统计图表都生效。一般在查询语句中通过 手动 添加 xxx ${ { Key|defaultValue } } xxx 去设置变量,Key 作为变量名,defaultValue 为默认值,在 Key 的值不存在的情况下生效。例如:在过滤器中给 Key 的值选择为 Value, 则所有图表语句中 ${ { Key|defaultValue } } 会被替换成 Value; 如果不给 Key 选择值,则所有图表语句中 ${ { Key|defaultValue } } 会被替换成 defaultValue

过滤器配置

本部分只对关键配置进行演示。更详细的配置,请参见过滤器配置

Key 值

  • 如果您选择过滤器类型,则在Key值中配置目标字段名。
  • 如果您选择变量替换类型,则在Key值中配置目标变量名。

image.png

数据列表

过滤器的数据列表由静态列表项动态列表项构成。

  • 静态列表:设置key值对应的Value,设置的值是固定不变的,一般常用于设置初次进入仪表盘的默认值。多次单击+,可添加多个Value。如果开启默认选中,则每次打开仪表盘时,默认使用该Value执行过滤。

image.png

  • 动态列表:打开添加动态列表项开关,可添加动态列表项,即为Key值配置动态的Value。动态列表项为对应查询和分析语句的查询结果,在不同的时间范围,查询结果是动态变化的。

image.png

查询方式

通过字段名和字段值进行过滤。在执行过滤器操作时,将其作为过滤条件增加到查询和分析语句前,使用 ANDNOT 进行连接,默认为 ANDimage.png

  • AND:Key: Value AND [search query] | [sql query]
  • NOTNOT Key: Value AND [search query] | [sql query]

自动过滤

是否过滤掉数据列表中不存在的值。过滤器的值不但可以自己从数据列表中选择一个Value,同时还可以是自己手动输入的值以及跳转到该界面时携带的值,这些值不一定在设置的数据列表中,开启自动过滤后会去掉这些不存在的值。一般还可以用于和变量替换的联合使用。 image.png

全局过滤

开启全局过滤后,表示在所有字段中过滤Value,无需指定Key。关闭全局过滤,表示仅在指定的Key中过滤Value。 image.png 例如:开启了全局过滤并选择了一个 Value,则所有图表语句会 **自动 **加上 **Value **最终变成 Value AND [search query] | [sql query] 的形式

使用场景

场景一:过滤出状态码等于200的日志

过滤出状态码等于200的日志,按照过滤器中的定义转换成语句就是 status: 200 AND [search query] | [sql query],Key 等于 status, value 等于 200。 具体配置如下:

  1. 在仪表盘页面,单击编辑。
  2. 编辑模式下,在操作栏中,单击图标选择过滤器图标image.png
  3. 在过滤器面板中,完成如下配置,更多配置信息,请参见上文过滤器配置。

image.png

  1. 点击确认,配置出来的过滤器如下图所示:

image.png

  1. 原始查询数据如下所示

查询语句:

sql
 * | select status, count(*) as c group by status

统计不同status的数量 image.png

  1. 给过滤器中 status 选择 200 ,最终过滤掉 status 不等于200 的数据

image.png

场景二:过滤出Nginx访问日志中,不用 GET 和 POST 访问的日志数量

过滤出Nginx访问日志中,用 GET 和 POST 访问的日志数量,按照过滤器中的定义转换成语句就是 NOT (request_method: GET OR request_method: POST) AND [search query] | [sql query],Key 等于 request_method, value 等于 GETPOST。 具体配置如下:

  1. 在仪表盘页面,单击编辑。
  2. 编辑模式下,在操作栏中,单击图标选择过滤器图标image.png
  3. 在过滤器面板中,完成如下配置,更多配置信息,请参见上文过滤器配置。

image.png

  1. 点击确认,配置出来的过滤器如下图所示:

image.png

  1. 原始查询数据如下所示 查询语句:
sql
* | select request_method, count(*) as c group by request_method;

统计不同request_method的数量 image.png

  1. 给过滤器中 request_method 选择 POST 和 GET,过滤掉 request_method 中为 POST 和 GET 的日志。

image.png

场景三:查看每60秒、600秒或1200秒的Nginx访问日志的访问PV

查看每60秒、600秒或1200秒的Nginx访问日志的访问PV,可以添加变量类型的过滤器,避免多次修改查询和分析语句进行查询。我们默认查询的时间刻度为60s,则查询语句为 :

sql
* | SELECT __time__ - __time__ % 60 as time, count(*) as count GROUP BY time ORDER BYtime

我们改变时间刻度其实就只需要改变 time - time % interval 中的 interval 就好了,因为要求默认是60,那按照变量替换型过滤器的定义,可以将语句转换成:

sql
* | SELECT __time__ - __time__ % ${{ interval | 60 }} as time, count(*) as count GROUP BY time ORDER BYtime

该语句中的变量 Key 就是 interval,defaultValue 为 60 具体配置如下:

  1. 在仪表盘页面,单击编辑。
  2. 编辑模式下,在操作栏中,单击图标选择过滤器图标image.png
  3. 在过滤器面板中,完成如下配置,更多配置信息,请参见上文过滤器配置。

image.png

  1. 点击确认,配置出来的过滤器如下图所示:

image.png

  1. 原始查询数据如下所示:

image.png 可以看到图中的两个点时间间隔刚好为默认值 60。

  1. 设置时间刻度为 600s

设置 interval 为 600, 600s(10min)提前加到了静态列表中,只需要在过滤器的下拉列表中选择600(10min)即可。 image.png 可以看到图中的两个点时间间隔刚好为设置的值 600。

  1. 设置时间刻度为 1200s

设置 interval 为 1200,1200并没有被我们提前放入静态列表中,我们可以通过手动输入来设置 interval 为1200 image.png 可以看到图中的两个点时间间隔刚好为设置的值 1200。