作者:v神
导语:云原生日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志数据解决平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
COS访问日志记录了用户对COS资源的访问信息,包括上传对象(PUT),删除对象(DELETE),访问对象(GET)等。通过分析访问日志,用户可以完成审计回溯,如删除资源记录,同时也可以完成资源热门相关的资源统计等能力。本次我们就介绍下COS访问日志常见玩法。
什么是COS?
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
访问日志介绍
COS访问日志记录了源存储桶,用户id,请求方法等信息。
字段序号 | 名 称 | 含 义 | 示例 |
---|---|---|---|
1 | eventVersion | 记录版本 | 1.0 |
2 | bucketName | 存储桶名称 | examplebucket-1250000000 |
3 | qcsRegion | 请求地域 | ap-beijing |
4 | eventTime | 事件时间(请求结束时间,UTC 0时 时间戳) | 2018-12-01T11:02:33Z |
5 | eventSource | 用户访问的域名 | examplebucket-1250000000.cos.ap-guangzhou.myzijiebao.com |
6 | eventName | 事件名称 | UploadPart |
7 | remoteIp | 来源 IP | 192.168.0.1 |
8 | userSecretKeyId | 用户访问 KeyId | AKIDNYVCdoJQyGJ5brTf |
9 | reservedFiled | 保留字段 | 保留字段,显示为-。 |
10 | reqBytesSent | 请求字节数(Bytes) | 83886080 |
11 | deltaDataSize | 请求对存储量的改变(Bytes) | 808 |
12 | reqPath | 请求的文件路径 | /folder/text.txt |
13 | reqMethod | 请求方法 | put |
14 | userAgent | 用户 UA | cos-go-sdk-v5.2.9 |
15 | resHttpCode | HTTP 返回码 | 404 |
16 | resErrorCode | 错误码 | NoSuchKey |
17 | resErrorMsg | 错误信息 | The specified key does not exist. |
18 | resBytesSent | 返回字节数(Bytes) | 197 |
19 | resTotalTime | 请求总耗时(毫秒,等于响应末字节的时间-请求首字节的时间) | 4295 |
20 | logSourceType | 日志源类型 | USER(用户访问请求),CDN(CDN 回源请求) |
21 | storageClass | 存储类型 | STANDARD,STANDARD_IA,ARCHIVE |
22 | accountId | 存储桶所有者ID | 100000000001 |
23 | resTurnAroundTime | 请求服务端耗时(毫秒,等于响应首字节的时间-请求末字节的时间) | 4295 |
24 | requester | 访问者 | 主账号 ID:子账号 ID,如果是匿名访问则显示-。 |
25 | requestId | 请求 ID | NWQ1ZjY4MTBfMjZiMjU4NjRfOWI1N180NDBiYTY= |
26 | objectSize | 对象大小(Bytes) | 808,如果您使用分块上传,objectSize 字段只会在完成上传的时候显示,各个分块上传期间该字段显示- |
27 | versionId | 对象版本 ID | 随机字符串 |
28 | targetStorageClass | 目标存储类型,发起复制操作的请求会记录该字段 | STANDARD,STANDARD_IA,ARCHIVE |
29 | referer | 请求的 HTTP referer | *.example.com或者111.111.111.1 |
30 | requestUri | 请求 URI | "GET /fdgfdgsf /浮点数 HTTP/1.1" |
场景1:审计追溯
需求
- 某个对象文件访问不了,定位原因。
解决方法
进入COS访问日志检索页面,输入对象名称作为关键词检索日志。
代码语言:javascript复制json-log2019-05-09_00645d9a-1118-4d69-8411-cfd57ede9ea1_000
通过时间柱状图,得知近1天有14条日志记录。针对14条日志记录下钻分析,点击左侧字段快速分析栏,查看resHttpCode信息。
通过快速分析得知,6条非200的请求信息,其中5条resHttpCode为403的日志信息和一条resHttpCode为204日志信息,点击快速检索这两个httpcode的日志。
由日志可以得知,5条错误码为Access Deny日志均为访问对象失败日志,通过resHttpCode为204的日志发现,用户1000******
在8.24日19点38分,通过COS控制台执行了删除object操作,导致对象访问失败。
场景2:运营统计
需求
- 统计当天访问量Top10热门的bucket
- 统计当天某个bucket的访问趋势
- 错误请求Top10的访问者
- 失败操作的bucket分布
- 用户请求有效率趋势
解决方法
- 统计当天访问量Top10的bucket。
(reqMethod:"GET") | select bucketName, count(*) group by bucketName
- 统计当天某个bucket的访问趋势。
- 错误请求Top10的访问者。
resHttpCode:>200 | select remoteIp, count(*) group by remoteIp
- 失败操作的bucket分布。
resHttpCode:>200 | select bucketName, count(*) group by bucketName
- 用户请求有效率趋势。
* | select time_series(__TIMESTAMP__, '5m', '%Y-%m-%d %H:%i:%s', '0') as time,round(sum(case when resHttpCode=200 then 1.00 else 0.00 end) / cast(count(*) as double) * 100,1) as "请求有效率" group by time limit 1000
- 用户请求来源分布。
* | select ip_to_province(remoteIp) as province , count(*) as c group by province order by c desc limit 50
以上就是本期COS访问日志的玩法分享,如果您有更多有意思的日志实践,欢迎投稿分享!
往期文章:
CLB日志核心的玩法你Get到了吗?
【日志服务CLS】腾讯云日志服务CLS接入内容分发网络CDN
【腾讯云日志服务CLS】serverless应用中的CLS服务详解