LogCollector 根据采集配置采集服务器上的文本日志,并支持以 NGINX 配置模式解析 NGINX 日志。本文档介绍创建 NGINX 配置模式采集配置采集的操作步骤。
Nginx 提供了灵活的日志记录功能,每个模块的配置均可以拥有独立的日志记录。其中,Nginx 访问日志承载了网站访问者有关的活动记录,访问日志的数据收集对业务的数据运营与运维分析具备重要意义。日志服务支持创建 Nginx 配置模式的采集配置,适用于采集 Nginx 访问日志的场景。
LogCollector 通过 NGINX 配置模式采集日志时,以 \n
换行符作为日志结束的标识符,以指定的 Nginx 日志格式提取日志内容(Value),并使用默认或自定义的 Key 作为字段名,对日志数据进行个性化的结构化处理。
Nginx 预定义了名为 main 的日志格式,如需自定义访问日志的输出格式,可以在 Nginx.conf
文件中修改 log_format
参数,例如:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$request_time $request_length ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent"'; access_log /var/logs/nginx/access.log main
各字段含义如下:
字段 | 说明 |
---|---|
| 客户端 IP 地址。如果使用了代理服务器,则显示代理服务器 IP 地址。 |
| 客户端名称。 |
| 访问时间和时区,服务器本地时间。 |
| HTTP 请求方法。 |
| 请求的访问地址。 |
| 协议。 |
| 请求的 URI 和 HTTP 协议。 |
| 整个请求的总时间,单位为秒。 |
| 请求报文的长度,包括请求行、请求头和请求正文。 |
| HTTP 请求的状态码。 |
| 发送给客户端的文件主体内容字节数。 |
| 访问来源的页面链接地址。 |
| 客户端浏览器信息。 |
默认 main 格式的日志样例如下:
192.168.1.1 - - [34/Sep/2022:12:23:12 +0800] "POST /abc.com.testfile HTTP/1.0" 0.000 129 200 43912736 "-" "Wget/1.11.4 Red Hat modified"
在 NGINX 配置模式下,日志服务会在 LogCollector 采集到的日志数据中增加以下元数据字段,并默认为其创建索引。
预留字段 | 说明 |
---|---|
| 原始日志文件目录及文件名。 |
| 原始日志文件所在服务器的 IP 地址。 |
填写规则名称。
规则名称即 LogCollector 采集配置的名称。
您也可以单击导入其他采集配置,选择日志Region、日志项目和采集配置,将已创建的采集配置导入到当前配置中,您只需要指定采集规则名称即可。
选择是否启用容器日志采集。
采集宿主机日志及 Sidecar 方式采集容器日志时,此配置应维持默认的关闭状态。
填写采集路径。
采集路径即日志所在的目录和文件名,LogCollector 会按照采集路径中的目录部分匹配符合规则的目录,监听这些目录下符合规则的日志文件。最多设置 10 个不同的采集路径。
采集路径可以指定完整的目录和文件名,也可以通过通配符模糊匹配。
说明
**
时,表示多层目录匹配,仅在此时,日志服务才会监听指定目录下深至8级的子目录。*
、双星号**
和半角问号?
。双星号**
最多只能配置一个。常见的采集路径的配置方式及示例如下。
配置方式 | 日志路径示例 | 说明 |
---|---|---|
完整文件名称 |
| 指定完整的目录和文件名,不包含通配符,表示监听指定目录下的指定文件,不监听其子目录。 |
文件名模糊匹配 |
| 不指定文件名,表示监听所有日志文件;指定部分文件名规则,表示监听符合规则的部分文件。 |
路径模糊匹配 |
| 通过
|
设置采集路径黑名单。
配置采集路径黑名单之后,日志服务通过 LogCollector 采集日志时,会忽略指定的目录和文件。选择启用后,请根据页面提示设置黑名单目录和文件。
说明
/var/log/project/*.log
,需要过滤其中/var/log/project
目录下的所有子目录,则采集路径黑名单应设置为目录路径,配置路径为/var/log/project/**
。采集路径黑名单中的路径类型支持设置为目录路径和文件路径。
配置 | 说明 |
---|---|
目录路径 | 采集时忽略指定的目录。目录路径支持完整匹配和通配符模式匹配。
|
文件路径 | 采集时忽略指定的文件,需配置文件路径及文件名。文件路径支持完整匹配和通配符模式匹配。
|
设置采集策略。
采集策略表示 LogCollector 采集增量日志还是全量日志。默认为增量日志。
配置 | 说明 |
---|---|
全量 | LogCollector 从每个文件的起始位置开始采集日志,此时 LogCollector 会采集历史日志数据。 |
增量 | LogCollector 采集日志时,只采集文件内新增的内容。监控范围内的日志文件写入新的日志时,触发 LogCollector 日志采集行为。
|
指定采集模式。
配置 | 说明 |
---|---|
采集模式 | LogCollector 解析日志文件的模式,此处请配置为NGINX配置模式。 |
Nginx 日志配置 | Nginx 日志格式。通常记录在
|
正则表达式 | 日志服务根据Nginx日志配置中填写的内容,自动生成的正则表达式。您也可以在此基础上进行自定义的修改。 |
日志样例 | 输入匹配Nginx日志配置的日志样例,并单击验证。 |
提取结果 | 日志服务根据Nginx日志配置与日志样例进行字段匹配与解析,生成的 Nginx 键名称和对应的值。请确认提取结果中字段 Key 与 Value 是否匹配,若不匹配,请调整Nginx日志配置、正则表达式或日志样例,直至字段提取成功无误。 |
设置时间字段。
采集时间点:将采集日志时 LogCollector 所在服务器的系统时间作为日志时间戳。
自定义时间:提取原始日志中自带的时间作为日志时间戳。相关配置如下:
配置 | 说明 |
---|---|
时间键名称 | 时间字段的名称,即您在提取结果中获取到的时间字段。 |
时间正则 | 如果您只解析时间字段中的部分内容,可使用正则表达式进行提取。 |
时间精度 | 勾选启用纳秒时间精度后,支持提取纳秒精度的时间。详细说明,请参考启用 LogCollector 高精度时间。 |
时间转换格式 | 根据提取到的时间内容,设置时间转换格式。例如时间为 说明
|
时区属性 | 设置时区。
|
选择是否忽略未更新的文件。
开启后,当日志文件更新时间不在您所指定的时间范围内时,LogCollector 会忽略该文件,不进行采集。
选择是否启用插件配置。
通过 LogCollector 采集文本日志时,如果业务日志结构复杂、格式不固定,无法通过 JSON 模式等常规的日志采集模式进行解析时,可以通过 LogCollector 插件进行采集后处理。详细说明请参考插件概述。
启用高级设置。
请根据您的需求选择高级配置。如果没有特殊需求,建议保持默认配置。
配置 | 说明 |
---|---|
过滤器 | 是否开启日志字段过滤规则。默认为关闭状态。开启后,通过正则表达式配置过滤规则,完全匹配正则表达式的日志才会被采集上报,帮助您筛选出有价值的日志数据。 |
上传解析失败日志 | 是否上传解析失败的日志,默认为关闭状态。
|
上传hostname字段 | 是否上传 hostname 字段,默认为关闭状态。
|
解析采集路径 | 通过正则表达式提取采集路径中的字段,并将其作为元数据添加到日志数据中。此功能默认为关闭状态。
|
HashKey路由Shard | 指定 HashKey 将数据写入到符合范围要求的日志分区。此功能默认为关闭状态。
|
上传原始日志 | 是否将原始日志作为一个字段上传到日志服务,默认为关闭状态。
|
上传常量字段 | 开启后,LogCollector 会将指定字段的 Key 和 Value 封装到每一条日志中。常量字段需遵循以下限制:
|
上传机器组 Label | 是否将机器组的 Label 信息上传到日志服务,默认为关闭状态。
|
允许文件多次采集 | 默认情况下,一个日志文件只能匹配一个采集配置,被采集到一个日志主题中。完成该配置后,可实现一个日志文件同时匹配多个采集配置。具体配置说明,请参考文件日志或标准输出同时被采集多份。 |
扩展配置 | LogCollector 扩展配置,JSON 对象格式。目前支持的参数包括 CloseInactive、CloseRemoved、CloseRenamed、CloseEOF 和 CloseTimeout。详细的参数说明请参考CreateRule中的数据结构Advanced。 |
确认采集配置,并单击下一步:检查索引配置。
创建采集配置之后,LogCollector 将采集日志并保存至指定的日志主题中,您可以在日志主题中执行检索分析操作。具体操作,请参考检索分析流程。