Apache日志是运维网站的重要信息,日志服务支持通过Apache配置模式快速采集Apache日志并进行多维度分析。本文介绍如何通过日志服务控制台创建Apache配置模式的Logtail配置采集日志。
前提条件
- 已创建Project和Logstore。更多信息,请参见创建Project和创建Logstore。
- 用于安装Logtail的服务器具备访问远端服务器80端口和443端口的能力。
- 目标服务器持续产生日志。重要 Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取文件。
背景信息
- Apache日志格式
- combined格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
- common格式
LogFormat "%h %l %u %t \"%r\" %>s %b"
- 自定义格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized
相关字段说明如下所示。更多信息,请参见mod_log_config。
字段格式 字段名称 说明 %a client_addr 客户端IP地址。 %A local_addr 本地IP地址。 %b response_size_bytes 响应字节大小,空值时显示为短划线(-)。 %B response_bytes 响应字节大小,空值时为0。 %D request_time_msec 请求时间,单位为微秒。 %f filename 文件名。 %h remote_addr 远程的主机名。 %H request_protocol_supple 请求协议。 %I bytes_received 服务器接收的字节数,需要启用mod_logio模块。 %k keep_alive 在此连接上处理的请求数。 %l remote_ident 远程主机提供的识别信息。 %m request_method_supple 请求方法。 %O bytes_sent 服务器发送的字节数,需要启用mod_logio模块。 %p remote_port 服务器端口号。 %P child_process 子进程ID。 %q request_query 查询字符串,如果不存在则为空字符串。 %r request 请求内容,包括方法名、地址和HTTP协议。 %R response_handler 服务端的处理程序类型。 %s status 响应的HTTP状态,初始状态。 %>s status 响应的HTTP状态,最终状态。 %t time_local 服务器时间。 %T request_time_sec 请求时间,单位为秒。 %u remote_user 客户端用户名。 %U request_uri_supple 请求的URI路径,不带查询字符串。 %v server_name 服务器名称。 %V server_name_canonical 根据UseCanonicalName指令设定的服务器名称。 “%{User-Agent}i” http_user_agent 客户端信息。 “%{Rererer}i” http_referer 来源页。 - combined格式
- 原始日志
192.168.1.2 - - [02/Feb/2022:17:44:13 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "http://localhost/x1.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.XX.XX.97 Safari/537.36"
- 采集到日志服务后的日志
操作步骤
- 登录日志服务控制台。
- 在接入数据区域,选择Apache-文本日志。
- 选择目标Project和Logstore,单击下一步。
- 创建机器组。
- 如果您已有可用的机器组,请单击使用现有机器组。
- 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
- 在ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建。
具体操作,请参见安装Logtail(ECS实例)。
重要 如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。更多信息,请参见安装Logtail(Linux系统)或安装Logtail(Windows系统)。手动安装Logtail后,您必须在该服务器上手动配置用户标识。具体操作,请参见配置用户标识。
- 安装完成后,单击确认安装完毕。
- 在创建机器组页面,输入名称,单击下一步。
日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见创建IP地址机器组和创建用户自定义标识机器组。
- 在ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建。
- 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步。
- 在Logtail配置页签中,创建Logtail配置。
配置项 详情 配置名称 Logtail配置名称,在其所属Project内必须唯一。创建Logtail配置成功后,无法修改其名称。 您也可以单击导入其他配置,导入已创建的Logtail配置。
日志路径 根据日志在服务器上的位置,设置日志目录和文件名称。 - 如果是Linux系统中的日志路径,必须以正斜线(/)开头,例如/apsara/nuwa/.../app.Log。
- 如果是Windows系统中的日志路径,必须以盘符开头,例如C:\Program Files\Intel\...\*.Log。
目录名和文件名支持完整名称和通配符模式,文件名规则请参见Wildcard matching。日志文件查找模式为多层目录匹配,即指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。例如:- /apsara/nuwa/**/*.log表示/apsara/nuwa目录(包含该目录的递归子目录)中后缀名为.log的文件。
- /var/logs/app_*/**/*.log表示/var/logs目录下所有符合app_*格式的目录(包含该目录的递归子目录)中后缀名为.log的文件。
- /var/log/nginx/**/access*表示/var/log/nginx目录(包含该目录的递归子目录)中以access开头的文件。
说明 日志路径通配符只支持星号(*)和半角问号(?)。- 星号(*)表示匹配多个任意字符。
- 半角问号(?)表示匹配单个任意字符。
设置采集黑名单 打开设置采集黑名单开关后,可进行黑名单配置,即可在采集时忽略指定的目录或文件。支持完整匹配和通配符模式匹配目录和文件名。例如: - 选择按目录路径,配置路径为/home/admin/dir1,则表示在采集时忽略/home/admin/dir1目录下的所有内容。
- 选择按目录路径,配置路径为/home/admin/dir*,则表示在采集时忽略/home/admin/目录下所有以dir开头的子目录下的内容。
- 选择按目录路径,配置路径为/home/admin/*/dir,则表示在采集时忽略/home/admin/目录下二级目录名为dir的子目录下的所有内容。
例如/home/admin/a/dir目录下的内容被忽略,/home/admin/a/b/dir目录下的内容被采集。
- 选择按文件路径,配置路径为/home/admin/private*.log,则表示在采集时忽略/home/admin/目录下所有以private开头,以.log结尾的文件。
- 选择按文件路径,配置路径为/home/admin/private*/*_inner.log,则表示在采集时忽略/home/admin/目录下以private开头的目录内,以_inner.log结尾的文件。
例如/home/admin/private/app_inner.log文件被忽略,/home/admin/private/app.log文件被采集。
说明- 目录通配符只支持星号(*)和半角问号(?)。
- 星号(*)表示匹配多个任意字符。
- 半角问号(?)表示匹配单个任意字符。
- 如果您在配置日志路径时使用了通配符,但又需要过滤掉其中部分路径时,需在黑名单中填写对应的完整路径来保证过滤生效。
例如您配置日志路径为/home/admin/app*/log/*.log,但要过滤/home/admin/app1*目录下的所有子目录,则需配置黑名单,即选择按目录路径,配置路径为/home/admin/app1*/** 。如果配置为/home/admin/app1*,则黑名单不会生效。
- 匹配黑名单过程存在计算开销,建议黑名单条目数在10条内。
- 目录路径不能以正斜线(/)结尾,例如将设置路径为/home/admin/dir1/,目录黑名单不会生效。
是否为Docker文件 如果是Docker容器中的文件,您可打开是否为Docker文件开关,配置内部路径与容器Tag。Logtail会自动监测容器的创建和销毁,并根据Tag进行容器过滤,采集指定容器的日志。具体操作,请参见通过DaemonSet-控制台方式采集容器文本日志。 模式 采集模式,默认为APACHE配置模式,可修改为其它模式。 日志格式 根据您Apache日志配置文件中定义的日志格式进行选择,包括common、combined和自定义。 APACHE配置字段 Apache配置文件中的日志配置部分,通常以LogFormat开头。 - 当配置日志格式为common或combined时,此处会自动填充对应格式的配置字段,请确认是否和Apache配置文件中定义的格式一致。
- 当配置日志格式为自定义时,请根据实际情况填写,例如LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D %f %k %p %q %R %T %I %O" customized。
APACHE键名称 日志服务会根据APACHE配置字段中的内容自动读取Apache键。 丢弃解析失败日志 是否丢弃解析失败的日志,具体说明如下: - 打开丢弃解析失败日志开关,解析失败的日志不上传到日志服务。
- 关闭丢弃解析失败日志开关,日志解析失败时,原始日志将作为__raw_log__字段的值上传到日志服务。
最大监控目录深度 设置日志目录被监控的最大深度。最大深度范围:0~1000,0代表只监控本层目录。 请根据您的需求选择高级配置。如果没有特殊需求,建议保持默认配置。参数 描述 启用插件处理 当您的业务日志太复杂或不固定,固定解析模式(Nginx模式、完整正则模式、JSON模式等)无法满足日志解析需求时,您可以打开启用插件处理开关,添加Logtail插件解析日志。 日志服务会根据您选择的采集模式生成默认的插件配置,您可以在默认配置后面添加其他插件配置,即您可以添加多个processors配置。更多信息,请参见概述。重要 打开启用插件处理开关后,上传原始日志、时区属性、丢弃解析失败日志、过滤器配置、接受部分字段(分隔符模式)等功能不可用。上传原始日志 打开上传原始日志开关后,原始日志将作为__raw__字段的值与解析过的日志一起上传到日志服务。 Topic生成方式 设置Topic生成方式。更多信息,请参见日志主题。 - 空-不生成Topic:默认选项,表示设置Topic为空字符串,在查询日志时不需要输入Topic即可查询。
- 机器组Topic属性:设置为机器组Topic属性,用于明确区分不同服务器产生的日志数据。
- 文件路径正则:设置为文件路径正则,则需要设置自定义正则,用正则表达式从路径里提取一部分内容作为Topic。用于区分不同用户或实例产生的日志数据。
日志文件编码 设置日志文件编码格式,取值为utf8、gbk。 时区属性 采集日志时,日志时间的时区属性。 - 机器时区:默认为Logtail所在主机或容器的时区。
- 自定义时区:手动选择时区。
超时属性 如果一个日志文件在指定时间内没有任何更新,则认为监控已超时。 - 永不超时:持续监控所有日志文件,永不超时。
- 30分钟超时:如果日志文件在30分钟内没有更新,则认为监控超时,Logtail不再监控该文件。
选择30分钟超时时,还需设置最大超时目录深度,范围为1~3。
过滤器配置 只采集符合过滤条件的日志,各个过滤条件之间为与关系。例如: - 满足条件即采集。
- 设置Key为level,Regex为WARNING|ERROR,表示只采集level字段值为WARNING或ERROR的日志。
- 设置Key为content,Regex为.*05\/Jan\/2023.*,表示只采集content字段值包含05/Jan/2023的日志。说明 极简模式下,只生成content字段。如果您要设置过滤条件,只能将Key设置为content。
- 过滤不符合条件的日志。更多信息,请参见Regular-Expressions.info。
- 设置Key为level,Regex为^(?!.*(INFO|DEBUG)).*,表示不采集level字段值中包含INFO或DEBUG的日志。
- 设置Key为level,Regex为^(?!(INFO|DEBUG)$).*,表示不采集level字段值为INFO或DEBUG的日志。
- 设置Key为url,Regex为.*^(?!.*(healthcheck)).*,表示不采集url字段值中包含healthcheck的日志。
更多信息,请参见regex-exclude-word、regex-exclude-pattern。
首次采集大小 通过首次采集大小,可以确认首次采集的新文件的内容位置。首次采集大小默认为1024 KB。 - 首次采集时,如果文件小于1024 KB,则从文件内容起始位置开始采集。
- 首次采集时,如果文件大于1024 KB,则从距离文件末尾1024 KB的位置开始采集。
您可以通过此处修改首次采集大小,取值范围为0~10485760,单位为KB。
扩展配置 Logtail的扩展配置。更多信息,请参见advanced参数说明。 例如您要通过当前Logtail配置去采集其他Logtail配置已匹配的文件,并指定聚合发送周期,可添加如下配置。
{ "force_multiconfig": true, "batch_send_interval": 3 }
单击下一步表示创建Logtail配置,日志服务开始采集日志。说明- Logtail配置生效时间最长需要3分钟,请耐心等待。
- 如果遇到Logtail采集报错,请参见如何查看Logtail采集错误信息、日志服务采集数据常见的错误类型。
- 预览数据及创建索引,然后单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引。重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
- 单击查询日志,系统将跳转至Logstore查询分析页面。您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。更多信息,请参见查询和分析日志。
问题排查
使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见Logtail采集日志失败的排查思路进行排查。