使用 Logging 查询语言构建和保存查询

本文档介绍了如何在使用 Logs Explorer 时检索和分析日志,具体方法是,在查询编辑器字段中编写查询,以及使用日志条目随附的选项从过滤条件菜单中选择。您构建的查询使用 Logging 查询语言编写。

您还可以在“日志浏览器”页面中保存查询,或者使用 Logging API 方法 savedQueries.create 来保存查询。

准备工作

  • 如需构建查询,您必须拥有读取日志数据的权限。Logging Viewer (roles/logging.viewer) 角色拥有这些权限。如需详细了解必要的 IAM 权限,请参阅 Google Cloud 控制台的权限

  • 如需创建和使用专用查询,您的 Identity and Access Management 角色必须包含 logging.queries.{list, create, get, update, delete} 权限。

  • 如需创建和使用共享查询,您的 Identity and Access Management 角色必须包含 logging.queries.{listShared, share, getShared, updateShared, deleteShared} 权限。

构建查询

如需使用 Google Cloud 控制台构建查询,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面。

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择要查看其日志的 Google Cloud 项目或其他 Google Cloud 资源。

    如需查看从 Amazon Web Services (AWS) 帐号发送到 Logging 的日志,请在 Google Cloud 控制台资源选择器中选择 AWS 连接器项目,然后使用 Logs Explorer。AWS 连接器项目会存储您的 AWS 账号的 Amazon 资源名称 (ARN),并将您的 AWS 账号关联到 Google Cloud 服务。如需了解详情,请参阅从 AWS 帐号收集指标
  3. 使用查询窗格构建查询。

    日志浏览器查询窗格。

    Query 窗格提供了多种构建和运行查询表达式的方法:

    • 搜索所有日志字段中的文本。
    • 从过滤条件菜单中选择所需选项。
    • 使用查询编辑器编写或修改查询。
    • 我最近用过已保存建议标签页中查看、修改或运行查询。

跨日志字段搜索文本

如需在所有日志字段中搜索文本并查找所有匹配的日志条目,请在搜索字段中输入搜索字词:

查询窗格中的日志浏览器搜索字段。

您可以搜索字词和短语,搜索字词可以包含布尔值运算符正则表达式

  • 如需执行区分大小写的搜索,您必须使用正则表达式

  • 要沿着词法单元边界执行不区分大小写的搜索,请输入搜索字词(不带反引号或双引号)。

    例如,如需搜索包含字词 hello 和字词 world 的日志条目,请输入 hello world。此命令(会转换为 SEARCH("hello world"))会按任意顺序匹配包含令牌 helloworld 的日志条目。由于搜索不区分大小写,因此搜索还会匹配包含令牌 HelloWorld 的日志条目。搜索与令牌 worlds 不匹配。

  • 如需沿着词法单元边界搜索短语(不区分大小写),请用反引号将短语引起来。

    例如,如需搜索短语 hello world,请输入 `hello world`。此命令(将转换为 SEARCH("`hello world`"))会匹配包含令牌 hello world 的日志条目。搜索与令牌 hello worlds 不匹配。

  • 如需搜索子字符串时不区分大小写,请用英文双引号将文本括起来。例如,"hello world"Hello WorldHello world 匹配。同一查询也与 hello worlds 匹配,因为搜索不是沿着词元边界执行。

若要查看查询表达式中的搜索字词,请启用显示查询

输入搜索字词后,点击运行查询或按 Enter 键。查询结果会显示在查询结果窗格中。

布尔运算符

搜索字段条目将转换为布尔表达式,用于指定所选 Google Cloud 资源中所有日志条目的子集。

搜索字段支持使用布尔运算符 ANDORNOT。在搜索表达式中使用布尔运算符时,请注意以下事项:

  • 您不能使用括号嵌套规则。搜索表达式中的任何括号都会被解析为搜索字词。
  • 必须将布尔运算符的首字母大写。小写的 andornot 会解析为搜索字词,而不是运算符。

如果不包含任何运算符,则所有搜索字词和词组由 AND 连接。您可以省略搜索字词之间的 AND 运算符。

ANDOR 运算符是短路运算符。您可以在同一表达式中合并 ANDOR 规则。例如,混合使用两种运算符时,表达式 a AND b OR c AND d 会转换为以下 Logging 查询语言表达式:

"a"
"b" OR "c"
"d"

NOT 运算符具有最高优先级,ORAND 按此顺序排列。

NOT 运算符会对后续项执行否定。例如,NOT error 会返回不包含 error 的日志条目。您还可以将 NOT 运算符替换为 -(减号)运算符。例如,以下两个查询是相同的:

"response" AND "successful" AND NOT "error"
"response successful" -"error"

如果 -(减号)运算符在引号外,则此逻辑也适用于短语。例如,以下两个查询是相同的:

-"response successful"
NOT "response successful"

使用过滤条件菜单构建查询

您可以使用 Query 窗格中的过滤条件菜单将资源、日志名称和日志严重性参数添加到查询编辑器字段。这些选项对应于 Logging 中所有日志的 LogEntry 字段。

资源日志名称菜单中的选项来自 Cloud Logging 存储的日志条目。

查询编辑器的过滤菜单

  • 资源:允许您指定 resource.type 和关联的 resource.labels。您可以使用此过滤条件菜单选择单个资源类型,以及要应用于查询的零个或多个资源标签。资源参数由逻辑运算符 AND 连接。
  • 日志名称:允许您指定 logName。您可以选择多个日志名称以应用于查询。选择多个日志名称时,使用逻辑运算符 OR
  • 严重程度:可让您指定严重程度。您可以同时选择多个严重级别,以应用于您的查询。选择多个严重级别时,会使用逻辑运算符 OR

如需使用任何过滤条件菜单,请执行以下操作:

  1. Query 窗格中的任何过滤条件菜单上,展开 菜单

  2. 优化过滤器参数。

  3. 点击应用。您会在查询编辑器字段中看到参数。

    若要查看查询表达式中的搜索字词,请启用显示查询

  4. 查看查询后,点击运行查询。查询结果会显示在 Query results 窗格中。

对于某些 Compute Engine 资源类型(例如 gce_instancegce_network),您会看到以辅助文本形式显示的资源 ID 对应的资源名称。例如,对于 gce_instance 资源类型,您会在虚拟机 ID 旁边看到虚拟机名称。资源名称可帮助您确定可用于构建查询的正确资源 ID。

按时间范围查看日志

您可以通过以下两种方式显示在特定时间范围内写入的日志:

  1. 使用时间范围选择器。
  2. 在查询编辑器字段中添加时间戳表达式。

使用时间范围选择器

默认时间范围为 1 小时,但您可以从预设时间选项中进行选择,指定自定义开始和结束时间,或使用时间范围选择器将时间范围置于特定时间戳的中心。例如,如果要查看过去一周的数据,请从时间范围选择器中选择过去 1 周

您还可以使用时间范围选择器设定时区偏好设置。

在查询编辑器字段中包含时间戳表达式

如需直接将时间戳表达式添加到查询编辑器字段,请使用 Logging 查询语言

如果查询编辑器字段包含带有时间戳的表达式,则时间范围选择器将被停用,查询会将时间戳表达式用作其时间范围限制。如果查询不使用时间戳表达式,则查询使用时间范围选择器作为其时间范围限制。

使用 Logging 查询语言编写高级查询

您可以使用 Logging 查询语言在 Logs Explorer 查询编辑器字段中构建更高级的查询:

  1. 如果在 Query 窗格中没有看到查询编辑器字段,请启用 Show query

  2. 直接在查询编辑器字段中输入查询表达式。

    如果您在搜索字段中添加了任何搜索字词,或在过滤条件菜单中选择了任何参数,则这些字词也会显示在查询编辑器字段中,并作为查询表达式的一部分进行求值。

  3. 检查查询后,点击运行查询

    与查询匹配的日志列在查询结果窗格下。直方图日志字段窗格也会根据查询表达式进行调整。

如需了解您想要使用的常见查询示例,请参阅使用日志浏览器的查询示例

使用近期查询

运行任何查询时,相应查询会被添加到最近查询列表中,其中包含 30 天内的最后 10,000 个唯一查询。

如需查看最近的查询,请在 Query 窗格中选择 Recent 标签页。在近期标签页中,您会看到以下选项:

  • 流式:如需运行查询并流式传输结果,请选择此选项。
  • 运行:如需运行查询,请选择此选项。
  • 更多选项:可让您查看包含运行查询的选项的查询表达式,或将其保存到已保存查询列表。您也可以直接选择查询来获取这些选项。

    如需保存查询,请执行以下操作:

    1. 点击另存为保存查询对话框随即会打开。
    2. 填写以下字段:

      • 名称(必需):为查询提供名称。名称不得超过 64 个字符。
      • 说明(可选):提供说明以帮助标识查询的用途。
      • 包含摘要字段(可选):启用包含摘要字段,然后输入要显示的摘要字段
      • 截断摘要字段(可选):启用截断摘要字段,选择要截断到的字符数,以及是在字段开头还是末尾截断。
    3. 点击保存查询。您现在可以在“已保存的查询”列表中找到该查询。

您还可以对最近的查询进行排序和过滤;过滤器将匹配查询表达式中的文本。

保存和共享查询

通过已保存的查询,您可以存储查询表达式,从而更一致、更高效地探索日志。日志浏览器的查询窗格中有一个已保存标签页,您可以在其中访问已保存的查询。您还可以使用 Logging API 方法 savedQueries.create 来保存查询。

您可以保存查询,使其仅对您自己可见,也可以与 Google Cloud 项目的其他成员共享。共享查询后,您将不再拥有该查询,并且项目中具有必要权限的任何成员都可以访问该查询。

控制台

如需保存您在查询编辑器字段中构建的查询表达式,请执行以下操作:

  1. 点击 Query 窗格中的 Save。此时将打开 Save query 对话框,其中查询表达式将显示在查询编辑器字段中。

  2. 填写以下字段:

    • 名称(必需):为查询提供名称。名称不得超过 64 个字符。
    • 说明(可选):提供说明以帮助标识查询的用途。
    • 添加自定义摘要字段(可选):启用包含摘要字段,然后输入要显示的摘要字段
    • 截断摘要字段(可选):启用截断摘要字段,选择要截断到的字符数,以及是在字段开头还是末尾截断。
    • 与项目共享:(可选)启用与项目共享,以与 Google Cloud 项目的其他成员共享您的查询。
  3. 点击保存查询。已保存的查询会显示在已保存标签页下的列表中。

如需运行已保存的查询,请点击运行。如需运行查询并流式传输结果,请点击流式传输

您还可以对已保存的查询进行排序和过滤;过滤条件会与查询表达式中的文本匹配。

API

如需使用 Logging API 保存查询,请使用 savedQueries.create 方法。如需详细了解此方法、其参数和响应数据,请参阅 savedQueries.create 的参考页面。

您可以使用方法参考页面上的 APIs Explorer widget 来执行 savedQueries.create 方法。对于日志浏览器查询,您必须指定 loggingQuery 字段。以下示例展示了包含 SavedQuery 实例的示例请求正文:

{
"parent": "projects/my-project/locations/global"
"savedQueryId": "compute-query"
{
  "displayName": "compute-admin-activity-query",
  "description": "Queries for Compute Engine Admin Activity logs.",

  "loggingQuery":
    {
      "filter": resource.type="gce_instance" AND log_id("cloudaudit.googleapis.com/activity"),
    },
  "visibility": "PRIVATE"
}
}

如需与 Google Cloud 项目的其他成员共享查询,请在 visibility 字段中指定 SHARED 值。

  1. 在查询编辑器字段中输入查询。

  2. 点击保存

  3. 填写保存查询对话框中的字段。

  4. 启用与项目共享

  5. 点击保存查询

您的查询现已与 Google Cloud 项目的其他用户共享。

如需分享已保存的查询,请执行以下操作:

  1. 选择已保存标签页。
  1. 选择 更多选项,然后选择 修改,或直接选择查询。

  2. 修改查询对话框中填写信息。

    例如,如需与其他成员共享查询,请启用与项目共享,然后点击更新查询

查看已保存的查询

您可以在已保存标签页中查看专用查询以及与 Google Cloud 项目中的其他成员共享的查询:

控制台

  1. 在 Google Cloud 控制台中,转到 Logs Explorer 页面。

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 选择要查看其日志的 Google Cloud 项目或其他 Google Cloud 资源。

  3. 点击全部

  4. 公开范围列进行排序。

Visibility(可见性)列指示是否共享查询以及如何共享:

Visibility(可见性)列指示查询是否已共享:

  • 共享:与 Google Cloud 项目的其他成员共享的查询。
  • 不公开:您已保存且只有您可以看到的查询。

API

借助 Logging API,您可以使用 savedQueries.list 方法查看不公开查询和共享查询。

例如,以下请求正文列出了带有通配符位置 ID 的所有共享日志浏览器查询:

{
"parent": "name": projects/PROJECT_ID/locations/-
    "visibility": "SHARED"
    "filter": "explorer"
}

使用建议的查询

Logging 会根据您的 Google Cloud 项目(例如您使用的 Google Cloud 产品)的上下文生成建议的查询。建议的查询可帮助您发现问题,并深入了解系统的整体运行状况。例如,如果检测到您正在使用 Google Kubernetes Engine,Logging 可能会建议一个查询来查找容器的所有错误日志。

如需查看并运行建议的查询,请选择 Query 窗格中的 Suggested 标签页。建议的标签页会显示查询列表,每项查询的说明和以下选项:

  • 流式:如需运行查询并流式传输结果,请选择此选项。
  • 运行:如需运行查询,请选择此选项。
  • 更多选项:可让您查看查询表达式的详细信息,以及运行查询或保存查询的选项。您也可以直接选择查询来获取这些选项。

    如需查看建议查询的详细信息,请执行以下任一操作:

    • 选择查询所在的行。

    • 点击 更多,然后选择查看。此时将打开 Query details 对话框。

    Query details 对话框中,您会看到该查询以及用于运行流式传输另存为的选项:

    • 如需保存查询,请执行以下操作:

      1. 点击另存为
      2. 填写保存查询对话框中的字段。

      修改后的查询会显示在已保存列表中,供您稍后选择运行查询。

    • 如需立即运行查询,请点击运行。查询会运行并在查询编辑器字段中显示。

    • 如需立即运行查询并流式传输结果,请点击流式传输

    • 如需关闭对话框并返回到建议查询列表,请点击关闭

请注意以下预期行为:

  • 后续网页加载可能不会以相同的顺序显示相同的查询。
  • 您可能会看到没有任何建议的查询。
  • 有时,运行建议的查询会返回零个日志。

从库中选择查询

Logging 提供了一个基于常见使用场景和 Google Cloud 产品的查询库。这些查询可帮助您在时间关键型问题排查会话期间高效查找日志,并浏览日志以更好地了解可用的日志记录数据。

如需查看并运行库的查询,请执行以下操作:

  1. Query 窗格中选择 Library 标签页。

  2. 所有查询列中,您会看到各类可用查询以及基于 Google Cloud 产品的查询子集。如需缩小显示的查询范围,请点击任一产品。

    您还可以使用搜索字段按类别、说明或查询表达式的内容搜索可用查询。

  3. 如需查看查询表达式,请执行以下任一操作:

    a. 点击查询所在的行。

    b. 点击 更多,然后选择查看

  4. Query details 对话框中,您会看到该查询以及用于运行流式传输另存为的选项:

    • 如需保存查询,请执行以下操作:

      1. 点击另存为
      2. 填写保存查询对话框中的字段。

      修改后的查询会显示在已保存列表中,供您稍后选择运行查询。

    • 如需立即运行查询,请点击运行。查询会运行并在查询编辑器字段中显示。

    • 如需立即运行查询并流式传输结果,请点击流式传输

    • 如需关闭对话框并返回到建议查询列表,请点击关闭

后续步骤