本教程说明如何使用 Graylog ↗ 分析 Cloudflare Logs ↗。
如果您之前未使用过 Cloudflare Logs,请访问我们的 Logs 文档 了解更多详情。联系 Cloudflare 客户账户团队为您的账户启用日志。
在将 Cloudflare 日志数据发送到 Graylog 之前,请确保:
- 拥有现有的 Graylog 安装。支持单节点和集群配置
- 拥有启用了 Cloudflare Logs 的 Cloudflare Enterprise 账户
- 已配置 Logpush
在将 Cloudflare 日志导入 Graylog 之前:
- 配置 Cloudflare Logpush,将所有所需字段的日志推送到您选择的 AWS S3 存储桶。
- 下载最新的 Graylog Integration for Cloudflare ↗。
- 解压缩 zip 文件。
解压缩后,集成包包括:
- graylog-s3-lambda.jar
- content-packs/cloudflare/cloudflare-logpush-content-pack.json
- content-packs/cloudflare/threat-lookup.csv
- 在 AWS Web 控制台中导航到 Lambda 服务页面。
- 创建新的 Lambda 函数,指定您选择的 function name 和 Java-8 runtime。
- 创建或指定具有以下权限的执行角色。您也可以根据特定设置进一步限制资源权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Policy",
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup"
"s3:GetObject",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:your-region:your-account-number:*",
"arn:aws:s3:your-region::cloudflare-bucket-name/*"
]
}
]
}注意: 如果您的 Graylog 集群在 VPC 中运行,可能需要添加 AWSLambdaVPCAccessExecutionRole 托管角色,以允许 Lambda 函数 将流量路由到 VPC。
-
创建 Lambda 函数 后,上传在任务 1 中下载的 function 代码 graylog-s3-lambda.jar。为 Handler 指定以下方法:org.graylog.integrations.s3.GraylogS3Function::handleRequest。
-
至少指定以下必需的环境变量,为 Graylog 集群配置 Lambda 函数:
-
CONTENT_TYPE(必需)- application/x.cloudflare.log 值,表示 Lambda 函数 将处理 Cloudflare 日志。
-
COMPRESSION_TYPE (必需 ) - gzip,因为 Cloudflare 日志是 gzip 压缩的。
-
GRAYLOG_HOST (必需) - Graylog 主机或集群负载均衡器的主机名或 IP 地址。
-
GRAYLOG_PORT (可选 - 默认为 12201) - Graylog 服务端口。
-
CONNECT_TIMEOUT (可选 - 默认为 10000) - 等待建立连接的毫秒数。
-
LOG_LEVEL (可选 - 默认为 INFO) - Lambda 函数 生成的 CloudWatch 日志中包含的详细程度。支持的值为 OFF、ERROR、WARN、INFO、DEBUG、TRACE 和 ALL。提高日志级别以帮助故障排除。有关更多信息,请参阅 Defining Custom Log Levels in Code ↗。
-
CLOUDFLARE_LOGPUSH_MESSAGE_FIELDS (可选 - 默认为全部) - 从消息中解析的字段。以逗号分隔的字段名称列表指定。
CLOUDFLARE_LOGPUSH_MESSAGE_SUMMARY_FIELDS (可选 - 默认为 ClientRequestHost, ClientRequestPath, OriginIP, ClientSrcPort, EdgeServerIP, EdgeResponseBytes) - 包含在 Graylog 每条消息顶部解析字段上方消息摘要中的字段。以逗号分隔的字段名称列表指定。

注意: Graylog Lambda S3 README ↗ 文件中提供了更多配置变量,用于微调 function 配置。
-
为 Lambda 函数 创建 AWS S3 Trigger,以便 function 可以处理写入的每个 Cloudflare 日志字段。指定任务 1 中的相同 S3 存储桶,并选择 All object create events 选项。可以在此处应用任何其他所需的文件筛选器。

-
如果您的 Graylog 集群位于 VPC 内,您需要配置 Lambda 函数 以访问 VPC 中的资源 ↗。您可能还需要为 AWS S3 服务创建 VPC endpoint ↗。这允许 Lambda 函数 在 VPC 中运行时直接访问 S3。
将 Cloudflare Logpush content pack 导入 Graylog 会加载接收 Cloudflare 日志所需的配置并安装 Cloudflare 仪表板。
content pack 安装以下组件:
- Cloudflare 仪表板(任务 4)。
- Cloudflare GELF (TCP) input,允许 Graylog 接收 Cloudflare 日志。
- Cloudflare message stream ↗。
- 帮助处理和解析 Cloudflare 日志字段的 Pipeline ↗ 规则。
要导入 content pack:
-
找到在任务 1 中下载并解压的 cloudflare-logpush-content-pack.json 文件。
在 Graylog 中,前往 System(系统) > Content Packs(内容包),点击右上角的 Upload(上传)。上传后,Cloudflare Logpush 内容包会出现在已上传内容包列表中。

点击 Install(安装)。

-
在 Install 对话框中,输入可选的安装注释,并验证所有配置参数都输入了正确的值。
- MaxMind™️ 数据库需要路径,可在 https://dev.maxmind.com/geoip/ ↗ 获取。
- Threat Lookup CSV 文件也需要路径,在任务 1 中解压。

-
安装后,Graylog 集群即可从 Lambda 函数接收 Cloudflare 日志。
有关更多信息和故障排除技巧,请参阅 Graylog Lambda S3 README ↗。
您可以在 Graylog Cloudflare 集成页面 ↗ 查看仪表板。仪表板包括:
这是 Cloudflare 网络上网站和应用程序最重要指标的概览。您可以使用仪表板筛选器进一步细分信息,进行事件和趋势的细粒度分析。
使用此仪表板:
- 监控 Cloudflare 网络上网站和应用程序最重要的 Web 流量指标
- 查看流量来自哪些国家/地区和 IP,并分析移动端与桌面端流量、协议、方法和内容类型的细分
此概览提供网站和应用程序面临威胁的洞察,包括阻止的威胁数量、威胁随时间变化、主要威胁国家/地区等。
使用此仪表板:
- 监控网站和应用程序最重要的安全和威胁指标
- 微调和配置 IP 防火墙
此仪表板帮助识别并解决性能问题和缓存配置错误。指标包括总带宽与缓存带宽、节省的带宽、总请求数、缓存比率、主要未缓存请求等。
使用此仪表板:
- 监控缓存行为并识别配置错误
- 改进配置和缓存比率
此仪表板提供网站和应用程序可用性的洞察。指标包括源站响应错误比率、源站响应状态随时间变化、3xx/4xx/5xx 错误百分比随时间变化等。
使用此仪表板:
- 通过查看边缘和源站响应状态码调查网站和应用程序的错误
- 根据国家/地区、客户端 IP、hostname 和其他指标进一步分析基于状态码的错误
使用此仪表板检测并缓解恶意 bot,防止凭据填充、垃圾注册、内容抓取、点击欺诈、库存囤积和其他恶意活动。
使用此仪表板:
- 调查网站上的 bot 活动,防止内容抓取、结账欺诈、垃圾注册和其他恶意活动。
- 利用洞察调整 Cloudflare,防止 bot 在网站、应用程序和 API 端点上过度使用和滥用。
