Logging日志路由
Logging日志路由
通过Logging的Logs Router功能,可以将Project中的日志路由到其他Logs Storage上或其他Project上。
关于日志路由的详细介绍:https://cloud.google.com/logging/docs/routing/overview
一、介绍:
日志路由器:
在调用entries.write
期间,日志条目会发送到logName
字段中指定的 Google Cloud 资源。
Cloud Logging 通过 Cloud Logging API 接收日志条目,这些条目在此 API 中通过日志路由器进行传递。日志路由器中的接收器会根据现有包含过滤器和排除过滤器检查每个日志条目,以确定日志条目应发送到哪些目标位置(包括 Cloud Logging 存储桶)。您可以使用接收器的组合将日志路由到多个目标位置。
日志接收器:
接收器控制 Cloud Logging 路由日志的方式。通过接收器,您可以将部分或全部日志路由到支持的目标位置。
使用的场景,如:
- 存储不太可能读取但必须出于合规性目的而保留的日志。
- 以对您有用的格式将日志整理到存储桶中。
- 针对日志使用大数据分析工具。
- 将日志流式传输到其他应用、其他存储区或第三方。
支持的目标:
- Cloud Storage:存储在 Cloud Storage 存储桶中的 JSON 文件;提供经济实惠的长期存储空间。
- BigQuery:在 BigQuery 数据集中创建的表;提供大数据分析功能。
- Pub/Sub:传送至 Pub/Sub 主题的 JSON 格式的消息;支持将 Splunk 等第三方服务与 Logging 集成。
- Cloud Logging Bucket:保存在日志存储桶中的日志条目;提供具有可自定义保留期限的 Cloud Logging 存储空间。
- Splunk
- Other project
_Required
和 _Default
Cloud Logging 会为每个 Cloud 项目、结算帐号、文件夹和组织提供两个预定义接收器:_Required
和 _Default
。在资源中生成的所有日志都会通过这两个接收器自动处理,然后存储在相应命名的_Required
或_Default
存储桶中。
_Required
日志存储分区
日志保留400天,无法修改、停用、删除存储分区;提取价格和存储价格都不适用于存储在 _Required
日志存储分区中的日志数据。
Cloud Logging 会自动将以下类型的日志路由到 _Required
存储分区:
_Default
日志存储分区
非 _Required
存储分区提取的任何日志条目都由 _Default
接收器路由到 _Default
存储分区,除非您停用或修改 _Default
接收器。
无法删除 _Default
存储分区,保留在 _Default
存储分区中的日志会保留 30 天,除非您为该存储分区配置自定义保留期限。
Cloud Logging 价格适用于保存在 _Default
存储分区中的日志数据。
自定义存储分区
可将日志存储至指定地区,见表:https://cloud.google.com/logging/docs/routing/overview#regionalization
二、日志存储桶
创建存储桶
创建日志存储桶:https://cloud.google.com/logging/docs/buckets#create\_bucket
已创建的日志存储桶,不支持修改日志的保存地区;
支持修改保存时长、日志存储桶描述/备注信息;
已删除的存储桶会以待处理状态保留 7 天,在此期间 Logging 会继续将日志路由到该存储桶。您可以通过以下方法停止将日志路由到已删除的存储桶:删除将该存储桶作为目标位置的日志接收器,或者修改这些接收器的过滤条件;
待删除的存储桶会计入配额每个 Cloud 项目的存储桶(直到其完全删除)。
锁定存储桶
警告:锁定日志存储桶是不可逆转的(合规保留策略)。
当您根据更新锁定存储桶时,其中包括锁定存储桶的保留政策。保留政策锁定后,您将无法删除存储桶,除非存储桶中的所有日志都已达到存储桶的保留期限。
如需阻止任何人更新或删除日志存储桶,请锁定该存储桶。如需锁定存储桶,请执行以下操作:
如需锁定您的存储桶,请运行带有 --locked
标志的 gcloud logging buckets update 命令:
gcloud logging buckets update BUCKET_ID --location=LOCATION --locked
例如:
gcloud logging buckets update my-bucket --location=global --locked
仅支持gcloud、api方式
日志概览:
日志存储页面会显示 Cloud 项目的统计信息摘要:
- 当前总数据量:您的 Cloud 项目从当前日历月第一天提取的日志数据量。
- 上月数量:您的 Cloud 项目在上个日历月中提取的日志数据量。
- 预计 EOM 数量:根据当前使用情况,Cloud 项目在当前日历月结束时将提取的估算日志数据量。
日志提取量统计信息不包含_Required存储桶
。无法排除或停用该存储桶中的日志。
- 名称:创建存储桶时,为存储桶指定的名称。
- 说明:创建存储桶时为其分配的说明。
- 保留期限:Cloud Logging 将对存储桶数据进行存储的天数。
- 区域:用于对存储桶数据的地理位置进行存储。
- 状态:存储桶处于锁定状态还是解锁状态。
如果某个存储桶正在等待 Cloud Logging 删除,其表条目将使用警告 warning 注明。
查看指定日志存储桶的日志信息
三、日志接收器
创建接收器
https://cloud.google.com/logging/docs/export/configure\_export\_v2?hl=zh-cn#creating\_sink
对接收器所做的任何更改可能需要几分钟时间才能应用。
恢复 _Default
接收器过滤条件
如果您修改了 _Default
接收器的过滤条件,则可能需要恢复默认过滤条件。为此,请输入以下包含过滤器:
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT \
LOG_ID("externalaudit.googleapis.com/activity") AND NOT \
LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT \
LOG_ID("externalaudit.googleapis.com/system_event") AND NOT \
LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT \
LOG_ID("externalaudit.googleapis.com/access_transparency")
四、其他
存储目标日志更新频率
https://cloud.google.com/logging/docs/export/using\_exported\_logs
目标 | 路由频率 |
---|---|
Cloud Storage 存储桶 | 每小时批次 |
BigQuery 表 | 近乎实时 |
Pub/Sub 主题 | 近乎实时 |
Cloud Logging 存储分区 | 近乎实时 |
第三方平台 (Splunk) | 近乎实时 |
将已有的日志信息同步到bucket上
https://cloud.google.com/logging/docs/routing/copy-logs
常见问题排查
https://cloud.google.com/logging/docs/export/troubleshoot
配额
https://cloud.google.com/logging/quotas
费用:
Cloud Logging 价格摘要
https://cloud.google.com/stackdriver/pricing#logging-pricing-summary
特征 | 价格1 | 每月免费配额 | 生效日期 |
---|---|---|---|
Logging 提取 | 提取的日志 \$0.50/GiB;这种一次性提取费用包含长达 30 天的存储费用 | 每个项目的前 50 GiB | 2018 年 7 月 1 日 |
Logging 存储 | 保留时间超过 30 天的日志 \$0.01/GiB;根据留存率按月结算。 | 在默认保留期限内保留的日志不会产生存储费用。 | 2022 年 10 月 3 日 |
详细费用介绍
https://cloud.google.com/stackdriver/pricing#logging-costs
注:Logging日志路由到其他google cloud产品时(如bq、gcs、pub/sub),是不收取费用,由目标google cloud收取使用费。
五、其他坑
- 在default添加排除项的方式过滤
resource.type="http_load_balancer"
不生效。 - 直接添加如下内容,也无法实现过滤LB的日志
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") AND NOT (resource.type="http_load_balancer")