使用亚马逊 OpenSearch 服务数据源 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用亚马逊 OpenSearch 服务数据源

指标查询编辑器

OpenSearch 查询编辑器允许您选择多个指标并按多个术语或筛选条件进行分组。使用右边的加号和减号图标添加/删除指标或按子句分组。一些指标和分组依据子句有选项。选择选项文本以展开\ 行以查看和编辑指标或按选项分组。

使用管道处理语言 (PPL)

Amazon S OpenSearch ervice 数据源支持管道处理语言 (PPL),该语言支持更简单但强大的查询和可视化功能。 OpenSearchPPL 使客户无需撰写冗长的 OpenSearch 域特定语言 (DSL) 语句或使用 JSON 对象编写查询即可浏览和查找数据。使用 PPL,您可以将查询写成一组由管道分隔的命令,类似于 UNIX 管道。

以下面的示例 DSL 查询为例:

GET opensearch_sample_data_logs/_search{"from":0,"size":0,"timeout":"1m","query":{"bool":{"should":[{"term":{"response.keyword":{"value":"404","boost":1}}},{"term":{"response.keyword":{"value":"503","boost":1}}}],"adjust_pure_negative":true,"boost":1}},"sort":[{"_doc":{"order":"asc"}}],"aggregations":{"composite_buckets":{"composite":{"size":1000,"sources":[{"host":{"terms":{"field":"host.keyword","missing_bucket":true,"order":"asc"}}},{"response":{"terms":{"field":"response.keyword","missing_bucket":true,"order":"asc"}}}]},"aggregations":{"request_count":{"value_count":{"field":"request.keyword"}},"sales_bucket_sort":{"bucket_sort":{"sort":[{"request_count":{"order":"desc"}}],"size":10}}}}}}>

前面的 DSL 查询可以替换为以下 PPL 命令,该命令简洁易懂。

source = opensearch_sample_data_logs | where response='404' or response='503' | stats count(request) as request_count by host, response | sort –request_count

有关 PPL 的更多信息,请参阅使用管道处理语言查询 Amazon OpenSearch 服务数据

系列命名和别名模式

您可以使用Alias输入字段控制时间序列的名称。

模式 描述
{{term fieldname}} 替换为 “分组依据” 一词的值。
{{metric}} 替换为指标名称(例如 平均值、最小值、最大值)。
{{field}} 替换为指标字段名称。

管道指标

一些指标聚合称为管道聚合;例如,移动平均线和衍生物。 OpenSearch 管道指标需要另一个指标作为依据。使用指标旁边的眼睛图标可隐藏指标不显示在图表中。这对于查询中仅包含的用于管道指标的指标很有用。

模板化

无需在指标查询中对服务器、应用程序和传感器名称等内容进行硬编码,而可以使用变量代替它们。变量显示为仪表板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

有关模板和模板变量的更多信息,请参阅模板和变量

查询变量

OpenSearch 服务数据源支持两种类型的查询,您可以在查询变量的查询字段中使用。该查询是使用自定义 JSON 字符串编写的。

查询 描述
{"find": "fields", "type": "keyword"} 返回索引类型为的字段名称列表keyword
{"find": "terms", "field": "@hostname", "size": 1000} 使用术语聚合返回字段的值列表。Query 将使用当前仪表板的时间范围作为查询的时间范围。
{"find": "terms", "field": "@hostname", "query": '<lucene query>'} 使用术语聚合和指定的 Lucene 查询过滤器返回字段的值列表。Query 将使用当前仪表板的时间范围作为查询的时间范围。

术语查询的默认大小限制为 500。要设置自定义限制,请在查询中设置大小属性。你可以在查询中使用其他变量。以下代码示例显示了名为的变量的查询定义$host

{"find": "terms", "field": "@hostname", "query": "@source:$source"}

在前面的示例中,我们在查询定义中使用了另一个名为$source的变量。每当你使用下拉列表更改$source变量的当前值时,它都会启动$host变量的更新。更新后,该$host变量仅包含由 d @source ocument 属性筛选的主机名。

默认情况下,这些查询按术语顺序返回结果(然后可以像任何变量一样按字母顺序或数字排序)。要生成按文档计数排序的术语列表(前 N 个值列表),请添加一个orderBy属性。doc_count这将自动选择降序排序。asc与 doc_count(底部 N 个列表)一起使用可以通过设置来完成order: "asc",但不鼓励这样做,因为它会增加文档计数的错误。要使术语按文档计数顺序排列,请将变量的 “排序” 下拉列表设置为 “已禁用”。或者,您可能仍然想使用字母顺序对它们进行重新排序。

{"find": "terms", "field": "@hostname", "orderBy": "doc_count"}

在查询中使用变量

有两种语法:

  • $<varname>示例:@hostname:$hostname

  • [[varname]]示例:@hostname:[[主机名]]

为什么是两种方式? 第一种语法更易于阅读和编写,但它不允许在单词中间使用变量。启用 “多值” 或 “包括所有值” 选项后,Grafana 会将标签从纯文本转换为兼容 Lucene 的条件。

在前面的示例中,我们有一个 lucene 查询,它使用名为的变量根据@hostname属性筛选文档。$hostname它还在按字段分组的术语输入框中使用一个变量。这允许您使用变量来快速更改数据的分组方式。

注释

标注允许您将丰富的事件信息叠加在图表之上。您可以使用 “控制板” 菜单或 “批注” 视图添加注释查询。Grafana 可以查询 OpenSearch 任何索引中的注解事件。有关更多信息,请参阅 注释

名称 描述
Query 您可以将搜索查询保留为空白或指定 Lucene 查询。
Time 时间字段的名称;必须是日期字段。
Time End 时间结束字段的可选名称必须是日期字段。如果设置,则注释将被标记为介于时间和时间结束之间的区域。
Text “事件描述” 字段。
Tags 用于事件标签的可选字段名称(可以是数组或 CSV 字符串)。

查询 日志

在 “浏览” 中可以查询和显示来自 OpenSearch 的日志数据。要显示您的日志,请选择 OpenSearch 服务数据源,然后根据需要输入 Lucene 查询。有关更多信息,请参阅 探索

记录查询

返回结果后,日志面板将显示日志行列表和条形图,其中 x 轴显示时间,y 轴显示频率或计数。

筛选日志消息

或者,在查询字段中输入 Lucene 查询以筛选日志消息。例如,使用默认 Filebeat 设置,您应该fields.level:error能够使用仅显示错误日志消息。