IBM Cloud Docs
使用即时日志功能

使用即时日志功能

企业帐户可以使用“即时日志”功能从 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 分钟时。