You need to enable JavaScript to run this app.
导航
NGINX 配置模式
最近更新时间:2024.11.22 11:13:37首次发布时间:2022.08.16 11:17:17

LogCollector 根据采集配置采集服务器上的文本日志,并支持以 NGINX 配置模式解析 NGINX 日志。本文档介绍创建 NGINX 配置模式采集配置采集的操作步骤。

背景信息

Nginx 提供了灵活的日志记录功能,每个模块的配置均可以拥有独立的日志记录。其中,Nginx 访问日志承载了网站访问者有关的活动记录,访问日志的数据收集对业务的数据运营与运维分析具备重要意义。日志服务支持创建 Nginx 配置模式的采集配置,适用于采集 Nginx 访问日志的场景。
LogCollector 通过 NGINX 配置模式采集日志时,以 \n 换行符作为日志结束的标识符,以指定的 Nginx 日志格式提取日志内容(Value),并使用默认或自定义的 Key 作为字段名,对日志数据进行个性化的结构化处理。

Nginx 日志格式

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

各字段含义如下:

字段

说明

remote_addr

客户端 IP 地址。如果使用了代理服务器,则显示代理服务器 IP 地址。

remote_user

客户端名称。

time_local

访问时间和时区,服务器本地时间。

request_method

HTTP 请求方法。

request_uri

请求的访问地址。

protocol

协议。

request

请求的 URI 和 HTTP 协议。

request_time

整个请求的总时间,单位为秒。

request_length

请求报文的长度,包括请求行、请求头和请求正文。

status

HTTP 请求的状态码。

body_bytes_sent

发送给客户端的文件主体内容字节数。

http_referer

访问来源的页面链接地址。

http_user_agent

客户端浏览器信息。

默认 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 采集到的日志数据中增加以下元数据字段,并默认为其创建索引。

预留字段

说明

__path__

原始日志文件目录及文件名。

__source__

原始日志文件所在服务器的 IP 地址。

前提条件

操作步骤

步骤一 选择日志空间

  1. 登录日志服务控制台
  2. 在顶部导航栏中,选择日志服务所在的地域。
  3. 在左侧导航栏中,选择常用功能 > 日志接入
  4. 日志接入页面的LogCollector日志采集页签中,选择日志采集模式。
  5. 选择日志空间,单击下一步:选择机器组
    选择日志项目日志主题,采集到的日志数据将被存储到该日志主题中。

步骤二 选择机器组

  1. 全部机器组区域中,选择需要被采集日志的机器组。
    如果列表中无可用的机器组,您需要先创建机器组。具体操作,请参考创建机器组(机器标识)创建机器组(IP地址)
  2. 已选机器组区域中确认机器组无误后,单击下一步:采集规则

步骤三 配置采集规则

配置基础信息

  1. 填写规则名称
    规则名称即 LogCollector 采集配置的名称。
    您也可以单击导入其他采集配置,选择日志Region日志项目采集配置,将已创建的采集配置导入到当前配置中,您只需要指定采集规则名称即可。

  2. 选择是否启用容器日志采集
    采集宿主机日志及 Sidecar 方式采集容器日志时,此配置应维持默认的关闭状态。

  3. 填写采集路径
    采集路径即日志所在的目录和文件名,LogCollector 会按照采集路径中的目录部分匹配符合规则的目录,监听这些目录下符合规则的日志文件。最多设置 10 个不同的采集路径。
    采集路径可以指定完整的目录和文件名,也可以通过通配符模糊匹配。

    说明

    • 默认情况下,一个日志文件只能匹配一个采集配置,被采集到一个日志主题中。如果多个采集配置重复采集同一个文件,则以最新创建的采集配置规则为准。
    • 日志采集路径中指定通配符**时,表示多层目录匹配,仅在此时,日志服务才会监听指定目录下深至8级的子目录。
    • 日志服务目前支持的通配符包括星号*、双星号**和半角问号?。双星号**最多只能配置一个。

    常见的采集路径的配置方式及示例如下。

    配置方式

    日志路径示例

    说明

    完整文件名称

    /var/log/access.log

    指定完整的目录和文件名,不包含通配符,表示监听指定目录下的指定文件,不监听其子目录。
    例如,左侧示例表示监听 /var/log 目录下名为 access.log 的日志文件。

    文件名模糊匹配

    /var/log/*.log

    不指定文件名,表示监听所有日志文件;指定部分文件名规则,表示监听符合规则的部分文件。
    例如,左侧示例表示监听 /var/log 目录下,文件格式为 .log 的日志文件。

    路径模糊匹配

    /var/log/**/access.log
    /var/log/*/access.log
    /var/log/**

    通过*模糊匹配路径时,仅监听一级目录中的日志文件;通过**模糊匹配路径时,表示监听一级及其子目录下的日志文件,目录深度最大为 8。
    例如:

    • /var/log/**/access.log 表示监听 /var/log 目录及其子目录下名为 access.log 的日志文件,目录深度最大为 8。
    • /var/log/**表示监听 /var/log 目录及其子目录下所有的日志文件,目录深度最大为 8。
  4. 设置采集路径黑名单
    配置采集路径黑名单之后,日志服务通过 LogCollector 采集日志时,会忽略指定的目录和文件。选择启用后,请根据页面提示设置黑名单目录和文件。

    说明

    • 每个采集配置中最多设置 10 条采集路径黑名单。
    • 如果您在配置日志路径时使用了通配符,但又需要过滤掉其中部分目录或文件时,需要在黑名单中填写对应的完整路径或文件名来保证过滤生效。例如采集路径为/var/log/project/*.log,需要过滤其中/var/log/project目录下的所有子目录,则采集路径黑名单应设置为目录路径,配置路径为/var/log/project/**

    采集路径黑名单中的路径类型支持设置为目录路径文件路径

    配置

    说明

    目录路径

    采集时忽略指定的目录。目录路径支持完整匹配和通配符模式匹配。

    • 完整匹配:指定完整的目录名称,例如 /var/log/mydata/new
    • 通配符匹配:目录中包含通配符,支持的通配符包括星号(*)和半角问号(?)。例如 /var/log/mydata/n* 表示不采集目录 /var/log/mydata/ 下以 n 开头的目录。

    文件路径

    采集时忽略指定的文件,需配置文件路径及文件名。文件路径支持完整匹配和通配符模式匹配。

    • 完整匹配:指定完整的路径及文件名称,例如 /var/log/mydata/access.log
    • 通配符匹配:路径及文件名中包含通配符,支持的通配符包括星号(*)半角问号(?)和双星号(**)。通配符中,双星号(**)最多只能配置一个。例如 /data/nginx/log/*/*/access.log 表示不采集目录 /data/nginx/log 及其一级和二级目录中名为 access.log 的日志文件。

    Image

配置日志格式

  1. 设置采集策略
    采集策略表示 LogCollector 采集增量日志还是全量日志。默认为增量日志。

    配置

    说明

    全量

    LogCollector 从每个文件的起始位置开始采集日志,此时 LogCollector 会采集历史日志数据。

    增量

    LogCollector 采集日志时,只采集文件内新增的内容。监控范围内的日志文件写入新的日志时,触发 LogCollector 日志采集行为。

    • 对于首次采集的日志文件,LogCollector 会根据您指定的增量阈值,自动确认采集的位置。
      • 如果新文件大小不超过您所指定的增量阈值,从新文件的起始位置开始首次采集。
      • 如果新文件大小超过您所指定的增量阈值,从新文件的末尾减去增量阈值后的位置开始首次采集,即仅采集增量日志。
    • 对于非首次采集的日志文件,LogCollector 会根据 Checkpoint 确定采集位置,继续采集。

    Image

  2. 指定采集模式

    配置

    说明

    采集模式

    LogCollector 解析日志文件的模式,此处请配置为NGINX配置模式

    Nginx 日志配置

    Nginx 日志格式。通常记录在 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"';
    

    正则表达式

    日志服务根据Nginx日志配置中填写的内容,自动生成的正则表达式。您也可以在此基础上进行自定义的修改。
    Image

    日志样例

    输入匹配Nginx日志配置的日志样例,并单击验证

    提取结果

    日志服务根据Nginx日志配置日志样例进行字段匹配与解析,生成的 Nginx 键名称和对应的值。请确认提取结果中字段 Key 与 Value 是否匹配,若不匹配,请调整Nginx日志配置正则表达式日志样例,直至字段提取成功无误。
    Image

  3. 设置时间字段

    • 采集时间点:将采集日志时 LogCollector 所在服务器的系统时间作为日志时间戳。

    • 自定义时间:提取原始日志中自带的时间作为日志时间戳。相关配置如下:

      配置

      说明

      时间键名称

      时间字段的名称,即您在提取结果中获取到的时间字段。

      时间正则

      如果您只解析时间字段中的部分内容,可使用正则表达式进行提取。

      时间精度

      勾选启用纳秒时间精度后,支持提取纳秒精度的时间。详细说明,请参考启用 LogCollector 高精度时间

      时间转换格式

      根据提取到的时间内容,设置时间转换格式。例如时间为01/March/2024 20:15:02,则可配置时间转换格式%d/%b/%Y:%H:%M:%S。详细的格式说明请参考时间格式

      说明

      • 如果时间转换格式填写错误导致无法正确解析时间,将以采集时间为准。
      • 默认情况下,日志时间支持精确到毫秒,即配置时间转换格式时,支持配置到毫秒。如果时间转换格式中未指定毫秒级的解析方式,则毫秒部分会自动填充为 0。
      • 在采集配置中勾选启用纳秒时间精度后,日志转换格式支持到纳秒级别。
      • 如果您需要在日志时间中添加时区且原始日志时间包含时区,那么您可以在时间转换格式中添加时区格式(%z)以提取时区。另外,您也可以在时间转换格式中添加固定时区格式(+08:00),然后选择合适的时区属性
        例如时间为2024-03-03 15:00:00 +08:00,您可以设置时间转换格式%Y-%m-%d %H:%M:%S %z,或者设置时间转换格式%Y-%m-%d %H:%M:%S +08:00且选择对应的时区属性。

      时区属性

      设置时区。

      • 机器时区:使用 LogCollector 所在服务器的系统时区。
      • 自定义时区:包括 UTC 和 GMT。如果要支持夏令时或冬令时,请选择 UTC;否则,请选择 GMT。
  4. 选择是否忽略未更新的文件。
    开启后,当日志文件更新时间不在您所指定的时间范围内时,LogCollector 会忽略该文件,不进行采集。

配置插件

选择是否启用插件配置
通过 LogCollector 采集文本日志时,如果业务日志结构复杂、格式不固定,无法通过 JSON 模式等常规的日志采集模式进行解析时,可以通过 LogCollector 插件进行采集后处理。详细说明请参考插件概述

高级设置

  1. 启用高级设置
    请根据您的需求选择高级配置。如果没有特殊需求,建议保持默认配置。

    配置

    说明

    过滤器

    是否开启日志字段过滤规则。默认为关闭状态。开启后,通过正则表达式配置过滤规则,完全匹配正则表达式的日志才会被采集上报,帮助您筛选出有价值的日志数据。
    例如,设置 Key 为response_code,过滤规则为400|500,表示只采集response_code为 400 或 500 类型的日志。
    Image

    上传解析失败日志

    是否上传解析失败的日志,默认为关闭状态。

    • 开启:所有解析失败的日志,均以指定字段作为键名称(Key),原始日志内容作为值(Value)上传到日志服务。其中键名称可以通过失败日志键名称指定,默认为 LogParseFailed
    • 关闭:解析失败的日志不上传到日志服务。

    Image

    上传hostname字段

    是否上传 hostname 字段,默认为关闭状态。

    • 开启:在原始日志中增加一个字段,用于记录日志源的 hostname。字段名可以通过 hostname键名称指定,默认为 hostname
    • 关闭:不添加 hostname 字段。

    Image

    解析采集路径

    通过正则表达式提取采集路径中的字段,并将其作为元数据添加到日志数据中。此功能默认为关闭状态。
    开启此功能后,您需要设置采集路径样例、提取正则表达式和提取结果。

    • 采集路径样例:实际场景的采集路径样例。
      • 采集路径样例必须是一个绝对路径。
      • 路径样例中不能包含通配符*?**
    • 提取正则表达式:用于提取路径字段的正则表达式。必须和采集路径样例匹配,否则无法成功提取。
    • 提取结果:提取结果中展示日志服务根据正则表达式将路径样例解析并提取到的每个字段值(Value)。您需要为每个字段指定字段名称(Key)。
      • 最多配置 100 个字段名。
      • 字段名不可为空,且不可重复。

    Image

    HashKey路由Shard

    指定 HashKey 将数据写入到符合范围要求的日志分区。此功能默认为关闭状态。

    • 开启此功能,表示使用 HashKey 路由 Shard 模式采集数据,将数据有序写入到指定 Shard 中。适用于数据写入和消费对有序性要求较高的场景。 此时需要设置 HashKey,日志服务会将数据写入到包含该 Key 值的 Shard 中。HashKey 的取值范围为 [00000000000000000000000000000000-ffffffffffffffffffffffffffffffff)。
    • 关闭此功能,表示使用负载均衡模式采集数据,自动根据负载均衡原则将数据包写入当前可用的任一 Shard 中。该模式适用于写入和消费行为与 Shard 无关的场景,例如不保序。

    Image

    上传原始日志

    是否将原始日志作为一个字段上传到日志服务,默认为关闭状态。

    • 开启:原始的日志数据将被封装在指定字段中,和解析后的日志数据一起上传到日志服务中。字段名可以通过原始日志键名称指定,默认值为 raw,实际对应的日志字段为 __raw__
    • 关闭:不添加原始日志字段。

    Image

    上传常量字段

    开启后,LogCollector 会将指定字段的 Key 和 Value 封装到每一条日志中。常量字段需遵循以下限制:

    • 支持上传最多 5 个常量字段。
    • 字段名(Key)不可重复,不可为空。长度限制为 1~128 字符,包括英文字母、数字、和特殊字符(-_./),且不能以下划线开头。
    • 字段值(Value)不可为空,长度最大为 512 KiB。

    Image

    上传机器组 Label

    是否将机器组的 Label 信息上传到日志服务,默认为关闭状态。

    • 开启:LogCollector 会将机器组的 Label 信息上传到指定字段中。您可以在机器组Label键名称中指定字段名称,默认值为host_group_label
    • 关闭:不上传机器组 Label 信息。

    Image

    允许文件多次采集

    默认情况下,一个日志文件只能匹配一个采集配置,被采集到一个日志主题中。完成该配置后,可实现一个日志文件同时匹配多个采集配置。具体配置说明,请参考文件日志或标准输出同时被采集多份

    扩展配置

    LogCollector 扩展配置,JSON 对象格式。目前支持的参数包括 CloseInactive、CloseRemoved、CloseRenamed、CloseEOF 和 CloseTimeout。详细的参数说明请参考CreateRule中的数据结构Advanced。
    例如填写以下配置,表示日志文件持续 10 秒没有新日志写入、日志文件被移除或重命名、LogCollector 读取至文件末尾、日志文件监控时长超过 30 分钟后,释放文件句柄。
    Image

  2. 确认采集配置,并单击下一步:检查索引配置

步骤四 检查索引配置

  1. 检查索引配置。
    根据页面提示,按需设置或更新索引,您也可以单击导入已有索引配置,导入其他日志主题的索引。
    • 若此日志主题未设置索引,可以参考配置索引进行设置。
    • 若此日志主题已设置索引,可以根据采集规则中解析的日志字段判断是否需要更新索引。

    说明

    • 启用索引后,您才能检索分析采集到的日志数据。
    • 更新后的索引设置仅对后续写入的新数据生效。其他检索分析的使用说明及限制请参考检索概述分析概述
  2. 单击完成:检查索引配置

后续步骤

创建采集配置之后,LogCollector 将采集日志并保存至指定的日志主题中,您可以在日志主题中执行检索分析操作。具体操作,请参考检索分析流程