使用即时日志功能
企业帐户可以使用“即时日志”功能从 API 或 CLI 访问其域的实时流量流。 通过实时观察数据,您可以调查对网络进行的攻击,故障诊断,调试或测试更改。 即时日志是轻量级的,不需要任何额外的设置。
从 CLI 创建即时日志
要从 CLI 创建即时日志作业,请使用以下参数向即时日志作业端点发送 POST 请求:
-
字段: 列出 HTTP 请求数据集中可用的任何字段。
-
样本: 客户机设置的记录的采样率,例如,
"sample": 1
返回 100% 的记录,"sample": 10
返回 10% 的记录。即时日志具有受支持的最大数据速率。 对于高流量域,我们在服务器端进行采样,如日志中返回的 "sampleInterval" 参数所示。
-
筛选器: 使用筛选器深入了解特定事件。 过滤器由三个部分组成: 键,运算符和值。
- 密钥:
ClientASN
CacheCacheStatus
ClientCountry
ClientIP
ClientRequestHost
ClientRequestMethod
ClientRequestPath
EdgeResponseStatus
SecurityActions
SecurityRuleIDs
- 运算符: 下表显示每个运算符的名称和行为。
- 密钥:
名称 | 运算符 |
---|---|
等于 | eq |
不等于 | neq |
Greater Than | gt |
大于或等于 | "geq |
小于 | 'lt |
小于或等于 | "leq |
开头为 | startsWith |
结束于 | endsWith |
包含 | contains |
位于 | In |
创建即时日志任务
向即时日志任务端点发送带有以下参数的 POST 请求,创建会话:
-
字段- 列出 HTTP 请求数据集中的 任何可用字段。
-
样品--采样参数是客户端设置的记录采样率:“
"sample": 1
是 100%的记录,”"sample":
10 是 10%,以此类推。即时日志具有受支持的最大数据速率。 对于高流量域,我们在服务器端进行采样,如日志中返回的 "sampleInterval" 参数所示。
-
筛选器- 使用筛选器深入查看特定事件。 过滤器由三部分组成:键、运算符和值。 有关支持的操作符的信息,请参阅 使用字段、函数和表达式。
下面是三个过滤器的例子:
-
当客户 IP 国家不是加拿大时进行过滤:
"filter": "{\"where\":{\"and\":[{\"key\":\"ClientCountry\",\"operator\":\"neq\",\"value\":\"ca\"}]}}"
-
当CIS返回的状态代码为 200 或 201 时进行过滤:
"filter": "{\"where\":{\"and\":[{\"key\":\"EdgeResponseStatus\",\"operator\":\"in\",\"value\":\"200,201\"}]}}"
-
当请求路径包含"/static "且请求主机名为example.com"时进行过滤:
"filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/static\"}, {\"where\":{\"and\":[{\"key\":\"ClientRequestHost\",\"operator\":\"eq\",\"value\":\"example.com\"}]}}"
下面是一个使用 "cURL:的请求示例
curl https://api.cloudflare.com/client/v4/zones/{zone_id}/logpush/edge/jobs \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"fields": "ClientIP,ClientRequestHost,ClientRequestMethod,ClientRequestURI,EdgeEndTimestamp,EdgeResponseBytes,EdgeResponseStatus,EdgeStartTimestamp,RayID",
"sample": 100,
"filter": "",
"kind": "instant-logs"
}'
响应:
响应包括一个名为 destination_conf 的新字段。 此字段的值是您唯一的WebSocket地址,用于接收来自 Cloudflare 全球网络的消息。
{
"errors": [],
"messages": [],
"result": {
"id": <JOB_ID>,
"fields": "ClientIP,ClientRequestHost,ClientRequestMethod,ClientRequestURI,EdgeEndTimestamp,EdgeResponseBytes,EdgeResponseStatus,EdgeStartTimestamp,RayID",
"sample": 100,
"filter": "",
"destination_conf": "wss://logs.cloudflare.com/instant-logs/ws/sessions/<SESSION_ID>",
"kind": "instant-logs"
},
"success": true
}
连接到WebSocket
使用 CLI 实用程序,您可以连接到WebSocket并立即开始接收日志。
websocat wss://logs.cloudflare.com/instant-logs/ws/sessions/<SESSION_ID>
响应:
连接到 websocket 后,您将收到以行分隔的 JSON 格式的信息。
数据集
目前,唯一可用的数据集是 HTTP 请求。 当其他数据集通过 Cloudflare 变为可用时,数据集列表可能会展开。
限制
当满足“即时日志”功能中的以下条件时,日志流将自动停止。
- 当每个域只有一个活动即时日志会话时。
- 当最大会话时间为 60 分钟时。
- 当连接关闭或不侦听超过 5 分钟时。