排查GCP Coldline Data Retrieval账单激增:如何查看文件访问情况
排查GCP Coldline Bucket访问量激增的方法
一、确认并启用Cloud Storage访问日志
首先需要确保目标Bucket(raw-material)已开启访问日志,否则无法追溯访问记录:
- 检查当前日志配置:
gcloud storage buckets describe gs://raw-material --format="value(logging.logBucket, logging.logObjectPrefix)" - 若返回空值,需配置日志存储Bucket(必须是与
raw-material不同的Bucket):
替换gcloud storage buckets update gs://raw-material --logging-bucket=gs://your-log-bucket --logging-prefix=raw-material-logs/your-log-bucket为你用于存储日志的Bucket名称。
二、提取并分析访问日志
日志文件会按日期存储在日志Bucket中,路径格式为gs://your-log-bucket/raw-material-logs/YYYY/MM/DD/。
1. 列出当日日志文件
gcloud storage ls gs://your-log-bucket/raw-material-logs/$(date +%Y/%m/%d)/
2. 统计访问次数最多的对象
gsutil cat gs://your-log-bucket/raw-material-logs/$(date +%Y/%m/%d)/*.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -20
注:日志中第7个字段为被访问的对象路径,若日志格式有调整,可根据实际字段位置修改$7。
3. 统计读取字节数最高的对象(对应Coldline检索账单)
gsutil cat gs://your-log-bucket/raw-material-logs/$(date +%Y/%m/%d)/*.log | awk '{print $7, $12}' | awk '{sum[$1] += $2} END {for (i in sum) print sum[i], i}' | sort -nr | head -20
注:第12个字段为单次访问读取的字节数,该命令会汇总每个对象的总读取量。
4. 定位访问来源(IP/进程/账号)
- 查看客户端IP与用户代理(识别访问工具/进程):
第1个字段为客户端IP,第10个字段为用户代理(如gsutil cat gs://your-log-bucket/raw-material-logs/$(date +%Y/%m/%d)/*.log | awk '{print $1, $10}' | sort | uniq -c | sort -nr | head -20gsutil、GCP SDK或第三方工具标识)。 - 若为GCP内部资源(如VM)访问,可通过IP反查对应资源:
替换gcloud compute instances list --filter="networkInterfaces.accessConfigs.natIP=XXX.XXX.XXX.XXX"XXX.XXX.XXX.XXX为日志中的客户端IP。
三、通过Cloud Logging控制台可视化分析
在GCP控制台的Cloud Logging中,使用以下过滤器筛选raw-material的读取请求:
resource.type="gcs_bucket" resource.labels.bucket_name="raw-material" protoPayload.methodName="storage.objects.get"
可通过分组依据功能,按protoPayload.resourceName(对象路径)、protoPayload.authentication.principalEmail(访问账号)或protoPayload.requestMetadata.callerIp(客户端IP)统计访问次数与数据量,快速定位异常访问来源。
内容的提问来源于stack exchange,提问作者Marcos Federico Mandrille
相关产品推荐
相关产品推荐

