本教程说明如何使用 Cloudflare App for Splunk ↗ 分析 Cloudflare Logs ↗。
在将 Cloudflare 日志数据发送到 Splunk 之前,请确保:
- 拥有现有的 Splunk Enterprise 或 Cloud 账户
- 拥有 Cloudflare Enterprise 账户
- 查阅 Splunk 文档 ↗ 了解 Cloudflare App
要安装 Cloudflare App for Splunk ↗:
- 登录 Splunk 实例。
- 在 Apps(应用) > Find More Apps(查找更多应用) 下,搜索 Cloudflare App for Splunk。
- 点击 Install(安装)。
-
重启并重新打开 Splunk 实例。
-
编辑 Cloudflare App for Splunk 中的
cloudflare:jsonsource type。要编辑 source type:- 点击 Settings(设置) 下拉菜单并选择 Source types(源类型)。
- 取消勾选 Show only popular(仅显示常用) 并搜索 cloudflare。
- 点击 Edit(编辑) 并将 Regex 表达式更改为
([\r\n]+)。 - 保存编辑。
-
在 Splunk 上创建 index 以存储 HTTP Event 日志。要创建 index:
- 点击 Settings(设置) 下拉菜单打开设置屏幕,然后点击 Indexes(索引)。
- 选择 New Index(新建索引)。请注意,Indexes(索引) 页面还会显示所有现有 index 的状态,以便您了解是否即将用完许可空间。
- 将 index 命名为 cloudflare,这是 Cloudflare App 将使用的默认 index。
-
在 Splunk 上设置 HTTP Event Collector(HEC)。要创建 HEC:
- 点击 Settings(设置) 下拉菜单并选择 Data inputs(数据输入)。
- 点击 +Add new(+添加新项) 并按照向导操作。出现提示时,提交以下响应:
- Name: Cloudflare
- Source Type: Select > "cloudflare:json"
- App Context: Cloudflare App for Splunk (cloudflare)
- Index: cloudflare
- 向导结束时,您会看到 Token Value(令牌值)。此令牌授权 Cloudflare Logpush 作业将数据发送到 Splunk 实例。如果忘记现在复制,Splunk 允许您随时获取该值。
-
验证 Splunk 是否使用自签名证书。创建 Logpush 作业时需要此信息。
-
确定用于发送数据的端点。端点应为:
"<protocol>://input-<host>:<port>/<endpoint>" or "<protocol>://http-inputs-<host>:<port>/<endpoint>"其中:
protocol:HTTP 或 HTTPSinput:根据您使用的是自助服务还是托管云计划,使用input或http-inputshost:Splunk 实例的主机名。确定主机名的最简单方法是查看登录 Splunk 时访问的 URL。port:443 或 8088endpoint:services/collector/raw
例如:https://prd-p-0qk3h.splunkcloud.com:8088/services/collector/raw。有关更多详情和示例,请参阅 Splunk 文档 ↗。
安装后说明
初始配置后,您可以点击 Settings(设置) 下拉菜单并导航到 Advanced search(高级搜索) 来更改 Index Name(索引名称)。在那里可以选择 Search macros(搜索宏) 并查找 Cloudflare App for Splunk。
Cloudflare App for Splunk 附带自定义 Cloudflare Data Model,加速时间范围为 1 天,但默认未加速。如果启用 Data Model acceleration ↗,我们建议 Data Model 仅加速 1 或 7 天,以确保 Splunk 环境中没有不利影响。
初始配置后,点击 Apps(应用) 下拉菜单,然后 Manage Apps(管理应用) > Cloudflare Set Up(Cloudflare 设置) 访问应用设置页面来启用或禁用加速。
您也可以通过 Settings > Data models 手动配置 Data Models。在 Splunk 文档 ↗ 中了解更多关于 data model acceleration 的信息。
按照 启用 Logpush 到 Splunk 上的说明创建 Logpush 作业。API 调用会创建 Logpush 作业但不会启用它。
通过 Cloudflare 仪表板或 API 启用 Logpush 作业,按照 启用 Logpush 到 Splunk 上的说明操作。通过仪表板启用:
- 前往 Cloudflare 仪表板并选择 Analytics & Logs(分析与日志) > Logs(日志)。
- 选择 Edit(编辑) 并选择下方仪表板部分引用的字段,以完全填充所有表格和图表。
- 通过切换 Edit 链接旁的开关启用 Logpush 作业。数据需要几分钟才能填充。
要验证是否正在接收数据,在 Splunk 中搜索 index=cloudflare。
您可以使用以下十三个(13)仪表板分析 Cloudflare 日志。
您可以在这些仪表板中使用筛选器,按日期和时间、设备类型、国家/地区、user agent、客户端 IP、hostname 等缩小分析范围,进一步帮助调试和追踪。
以下概述的仪表板是 Cloudflare App for Splunk 的一部分。
Web Traffic Overview 和 Web Traffic Types:概览 Cloudflare 网络上网站和应用程序的最重要指标。

Summary 和 Detailed:了解网站和应用程序的可用性。指标包括源站响应错误比率、源站响应状态随时间变化、3xx/4xx/5xx 错误百分比随时间变化等。

Overview:了解网站和应用程序面临的威胁,包括阻止的威胁数量、威胁随时间变化、主要威胁国家/地区等。

WAF:了解 Web Application Firewall 识别和缓解的威胁,包括 SQL 注入、XSS 等事件。使用此数据微调防火墙,针对明显威胁并防止误报。

Rate Limiting:了解速率限制防护,抵御拒绝服务攻击、暴力破解登录尝试以及针对网站或应用程序的其他滥用行为。

Bots Summary 和 Bots Detailed:调查网站上的 bot 活动,防止内容抓取、结账欺诈、垃圾注册和其他恶意活动。

Requests and Cache 和 Bandwidth:识别并解决性能问题和缓存配置错误。指标包括总带宽与缓存带宽、节省的带宽、总请求数、缓存比率、主要未缓存请求等。

Hostname, Content Type, Request Methods, Connection Type:了解最受欢迎的主机名、最常请求的内容类型、请求方法细分和连接类型。

Static vs. Dynamic Content:了解静态和动态内容的性能,包括最慢的 URL。

所有仪表板都有一组可应用于整个仪表板的筛选器,如下例所示。筛选器应用于整个仪表板。
您可以使用筛选器深入查看数据。筛选器包括客户端国家/地区、客户端设备类型、客户端 IP、客户端请求 host、客户端请求 URI、客户端请求 user agent、边缘响应状态、源站 IP 和源站响应状态。
默认时间间隔设置为 24 小时。请注意,为正确计算,筛选器需要排除 Worker 子请求(WorkerSubrequest = false)和 purge 请求(ClientRequestMethod 不是 PURGE)。
可用筛选器:
-
Time Range (EdgeStartTimestamp)
-
Client Country
-
Client Device type
-
Client IP
-
Client Request Host
-
Client Request URI
-
Client Request User Agent
-
Edge response status
-
Origin IP
-
Origin Response Status
-
RayID
-
Worker Subrequest
-
Client Request Method
Splunk Cloudflare App 依赖下方列出的 Cloudflare Enterprise Logs 字段的数据。根据您启用的字段,某些仪表板可能无法完全填充。
如果是这种情况,请验证并测试每个仪表板下方的 Cloudflare App 筛选器(这些筛选器在所有仪表板中相同)。您可以删除不需要的筛选器,即使此类筛选器包含日志中已有的数据字段。
此外,您可以将 Cloudflare Logs 中获得的字段列表与 Splunk > Settings > Data Model > Cloudflare 中列出的字段进行比较。
可用字段:
-
CacheCacheStatus
-
CacheResponseBytes
-
CacheResponseStatus (deprecated)
-
ClientASN
-
ClientCountry
-
ClientDeviceType
-
ClientIP
-
ClientIPClass
-
ClientRequestBytes
-
ClientRequestHost
-
ClientRequestMethod
-
ClientRequestPath
-
ClientRequestProtocol
-
ClientRequestReferer
-
ClientRequestURI
-
ClientRequestUserAgent
-
ClientSSLCipher
-
ClientSSLProtocol
-
ClientSrcPort
-
EdgeColoCode
-
EdgeColoID
-
EdgeEndTimestamp
-
EdgePathingOp
-
EdgePathingSrc
-
EdgePathingStatus
-
EdgeRequestHost
-
EdgeResponseBytes
-
EdgeResponseContentType
-
EdgeResponseStatus
-
EdgeServerIP
-
EdgeStartTimestamp
-
OriginIP
-
OriginResponseStatus
-
OriginResponseTime
-
OriginSSLProtocol
-
RayID
-
SecurityAction
-
SecurityActions
-
SecurityRuleDescription
-
SecurityRuleID
-
SecurityRuleIDs
-
SecuritySources
-
WAFFlags
-
WAFMatchedVar
-
WorkerSubrequest
-
ZoneID