本文档介绍了如何使用 Log Analytics 来估算日志条目的可计费量。您可以编写查询来按不同维度(例如资源类型或应用名称)报告和汇总可计费量,然后绘制查询结果图表并查看查询结果。
如何查询可结算量
可通过 storage_bytes
字段获取日志条目的计费量(即报告给 Cloud Billing 的大小)。在查询中,您可以按照与使用数据类型为 INTEGER
的任何架构字段相同的方式使用 storage_bytes
字段。例如,您可以将其包含在 SELECT
子句、CASE
语句和通用表表达式中。如需详细了解如何查询日志,请参阅以下文档:
由于 Cloud Billing 使用可结算量确定您的费用,因此您可以编写查询来帮助了解费用来源。例如,您可以编写查询来帮助确定哪些应用写入的日志条目最多。如需了解如何将计费量与费用相关联,请参阅 Cloud Logging 价格摘要和 Cloud Logging 价格。
日志条目的计费量与发送到 Cloud Logging API 的 LogEntry
对象的大小不同。计费量包括序列化和元数据所需的字节数。
准备工作
-
如需获取使用 Log Analytics 运行查询和查看日志所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
如需查询
_Required
和_Default
日志存储分区,请执行以下操作: 日志查看器 (roles/logging.viewer
) -
如需查询自定义日志存储分区,请执行以下操作:
Logs View Accessor (
roles/logging.viewAccessor
)
如需详细了解如何授予角色,请参阅管理访问权限。
-
如需查询
对于要查询的日志视图,请转到日志存储页面,并验证存储这些日志视图的日志存储分区是否已升级以使用 Log Analytics。如有必要,请升级日志存储桶。
在 Google Cloud 控制台中,前往日志存储页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
可选:如果要使用 BigQuery 数据集查询日志数据,请创建关联的 BigQuery 数据集。
查询示例
本部分提供了分析单个日志视图中的数据的示例查询。如果您将数据存储在多个日志视图中,并且要计算这些视图中存储的数据的聚合值,则需要使用 UNION
语句。
您可以使用 Log Analytics 页面或可以查询 BigQuery 数据集的任何位置查询日志条目,包括 BigQuery Studio 和 Looker Studio 页面以及 bq 命令行工具。
如需使用示例查询,请执行以下操作:
Log Analytics 页面:将 TABLE 替换为日志视图的名称。格式为
project_ID.region.bucket_ID.view_ID
。BigQuery 数据集:将 TABLE 替换为关联的数据集中表的路径。
按应用查询日志量
对于针对 Google Kubernetes Engine 资源写入且具有 JSON 载荷的日志条目,每个应用每天的总字节数,请使用以下查询:
SELECT
timestamp_trunc(timestamp,DAY) as day,
JSON_VALUE(labels["k8s-pod/app"]) as app_id,
SUM(storage_bytes) as total_bytes
FROM
`TABLE`
WHERE
json_payload IS NOT NULL
AND resource.type="k8s_container"
GROUP BY ALL
要直观呈现数据,您可以创建一个图表。在以下示例中,数据显示为堆叠条形图。图表上的每个条形都会显示存储的字节总数(按应用整理)。在此示例中,frontend
应用生成的日志数据最多:
按日志名称查询日志量
如需列出具有 JSON 载荷且针对 Google Kubernetes Engine 资源写入的每个日志条目的存储字节数和日志名称,请使用以下查询:
SELECT
log_id AS log_name,
storage_bytes
FROM
`TABLE`
WHERE
json_payload IS NOT NULL
AND resource.type="k8s_container"
前面的查询不会汇总结果,而是每行对应一个日志条目,并且该行包含日志名称和存储的字节数。如果绘制此数据的图表,则可以直观呈现日志数据中写入不同日志的部分:
上面的图表显示大多数日志数据已写入名为 stdout
的日志。
使用 bq 命令行工具按日志名称查询日志卷
您可以在通过 BigQuery Studio 页面或使用 bq 命令行工具运行的查询中添加 storage_bytes
字段。
以下查询会报告日志名称和每个日志条目的存储字节数:
bq query --use_legacy_sql=false 'SELECT log_id as log_name,
storage_bytes FROM `TABLE`'
此查询的结果类似于以下内容:
+----------+---------------+
| log_name | storage_bytes |
+----------+---------------+
| stdout | 716 |
| stdout | 699 |
| stdout | 917 |
| stdout | 704 |
每行对应一个日志条目。storage_bytes
列的值是该日志条目的计费量。
限制
仅当满足以下条件时,storage_bytes
字段才可用:
- 日志存储桶已升级为使用 Log Analytics。
您的查询在 Log Analytics 页面或您可以查询 BigQuery 数据集的任何位置执行,其中包括 BigQuery Studio 和 Looker Studio 页面以及 bq 命令行工具。
此日志条目是在 2024 年 1 月 1 日或之后写入的。