本文介绍如何配置LoongCollector(Logtail)采集器,实现ECS实例、自建Linux/Windows等主机文本日志的增量采集。如需采集全量日志,可以通过导入历史日志实现。
基础采集配置(必选):这是完成日志采集的核心步骤,定义了从哪里采集(日志路径)、如何解析日志以及将日志发送到哪个Logstore。
高级采集配置(可选):在完成基础采集配置后,对日志内容进行脱敏、过滤等处理,满足更精细化的日志采集需求。
核心概念
在开始配置日志采集前,请先了解阿里云日志服务(SLS)的核心资源概念。
什么是Project
Project是阿里云日志服务中的资源管理单元,用于隔离和控制不同项目或应用的日志数据。一个Project可以包含多个Logstore。
什么是Logstore
Logstore是日志数据的存储单元,用于存储日志。在Project内,您可以根据业务需求创建多个Logstore存储不同类型的日志,如使用两个Logstore分别存储Nginx访问日志和应用错误日志。
前提条件
权限须知
若您使用阿里云主账号登录,默认拥有所有操作权限,可直接进行相关操作。
若您使用RAM账号登录,请联系主账号使用者通过系统权限策略或自定义权限策略授权:
系统权限策略:由阿里云创建并维护的预定义策略,您可以直接使用,但无法修改其内容。
AliyunLogFullAccess:管理日志服务的权限。
AliyunECSFullAccess:管理ECS的权限。
如果日志服务Project与ECS实例同账号同地域,可以通过阿里云运维编排服务(OOS)在ECS实例中自动安装LoongCollector(Logtail),此时除了管理日志服务与ECS的权限外,还需要OOS的操作权限:
AliyunOOSFullAccess:管理OOS的权限。
自定义权限策略:当系统策略无法满足需求,可通过创建自定义权限策略实现精细化权限管理。示例主要包含权限为:
查看Project:查看Project列表,查看指定Project详情。
管理日志库 (Logstore): 在Project下创建新的日志库,或修改、删除已有的日志库。
管理采集配置: 创建、删除和修改采集配置。
查看日志: 查询和分析指定Project下指定日志库中的数据。
请将Resource中的
${regionName}
、${uid}
、${projectName}
、${logstoreName}
依次替换为您的地域名称,主账号id,需要访问的Project名称和需要查询的日志库名称。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "log:ListProject", "log:GetAcceleration", "log:ListDomains", "log:GetLogging", "log:ListTagResources" ], "Resource": "acs:log:${regionName}:${uid}:project/*" }, { "Effect": "Allow", "Action": "log:GetProject", "Resource": "acs:log:${regionName}:${uid}:project/${projectName}" }, { "Effect": "Allow", "Action": [ "log:ListLogStores", "log:*LogStore", "log:*Index", "log:ListShards", "log:GetCursorOrData", "log:GetLogStoreHistogram", "log:GetLogStoreContextLogs" ], "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/*" }, { "Effect": "Allow", "Action": "log:*", "Resource": [ "acs:log:${regionName}:${uid}:project/${projectName}/logtailconfig/*", "acs:log:${regionName}:${uid}:project/${projectName}/machinegroup/*" ] }, { "Effect": "Allow", "Action": "log:ListSavedSearch", "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/savedsearch/*" }, { "Effect": "Allow", "Action": "log:ListDashboard", "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/dashboard/*" }, { "Effect": "Allow", "Action": "log:GetLogStoreLogs", "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/logstore/${logstoreName}" }, { "Effect": "Allow", "Action": [ "ecs:DescribeTagKeys", "ecs:DescribeTags", "ecs:DescribeInstances", "ecs:DescribeInvocationResults", "ecs:RunCommand", "ecs:DescribeInvocations", "ecs:InvokeCommand" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "oos:ListTemplates", "oos:StartExecution", "oos:ListExecutions", "oos:GetExecutionTemplate", "oos:ListExecutionLogs", "oos:ListTaskExecutions" ], "Resource": "*" } ] }
权限
对应操作
资源
只读Project
GetAcceleration
GetLogging
ListProject
ListDomains
ListTagResources
acs:log:${regionName}:${uid}:project/*
获取指定Project
GetProject
acs:log:${regionName}:${uid}:project/${projectName}
管理Logstore
ListLogStores
*LogStore
*Index
ListShards
GetCursorOrData
GetLogStoreHistogram
GetLogStoreContextLogs
acs:log:${regionName}:${uid}:project/${projectName}/*
管理LoongCollector(Logtail)数据接入
*
acs:log:${regionName}:${uid}:project/${projectName}/logtailconfig/*
acs:log:${regionName}:${uid}:project/${projectName}/machinegroup/*
查询快速查询
ListSavedSearch
acs:log:${regionName}:${uid}:project/${projectName}/savedsearch/*
查询仪表盘
ListDashboard
acs:log:${regionName}:${uid}:project/${projectName}/dashboard/*
查询指定日志库日志
GetLogStoreLogs
acs:log:${regionName}:${uid}:project/${projectName}/logstore/${logstoreName}
操作ECS的权限
DescribeTagKeys
DescribeTags
DescribeInstances
DescribeInvocationResults
RunCommand
DescribeInvocations
InvokeCommand
*
操作OOS的权限(可选)
仅在日志服务与ECS实例同账号同地域通过OOS自动化安装LoongCollector(Logtail)时需要。
ListTemplates
StartExecution
ListExecutions
GetExecutionTemplate
ListExecutionLogs
ListTaskExecutions
*
创建Project
创建Logstore
若您无可用Logstore,请参考此处步骤创建一个基础Logstore,如需详细了解创建配置请参见管理Logstore。
|
安装LoongCollector(Logtail)
LoongCollector 是阿里云日志服务(SLS)推出的新一代日志采集 Agent,是 Logtail 的升级版。
请根据主机与日志服务Project的关系,选择对应的安装步骤:
ECS与Project同账号同地域:自动安装。
ECS与Project同账号不同地域:手动安装。
其他场景如不同账号同地域、不同账号不同地域、其他云服务器或自建IDC,请参考LoongCollector安装(Linux)。LoongCollector不支持Windows,若需要在Windows系统中请参考机器组中Windows相关内容。
ECS与Project同账号同地域
ECS实例与日志服务Project同账号同地域时,可以通过阿里云运维编排服务(OOS)在ECS实例中自动安装LoongCollector(Logtail),同时完成机器组的创建和配置,此处仅提供自动安装的必需操作,更多详细信息请参考LoongCollector安装(Linux):
|
日志服务提供了正则、单行等多种文本日志接入模板,各模板之间除了解析插件不同外,其余配置完全相同;同时,模板内支持添加、删除解析插件。此处您可以根据采集日志的特点选择模板,也可以任意选择文本日志模板后再根据日志特点进行插件配置。
在机器组配置页面,选择主机场景和ECS安装环境后单击创建机器组。
在创建机器组面板中,选择与Project同地域的ECS实例(ECS实例可以选择多台),单击安装并创建为机器组,等待安装完成,配置机器组名称并单击确定。
说明如果安装失败或一直处于等待中,请检查ECS地域是否与Project相同。
安装后,您可前往
资源 > 机器组页面,单击新建的机器组,在机器组配置 > 机器组状态区域,查看心跳状态。如果心跳为OK则表示创建成功。
ECS与Project同账号不同地域
当ECS与Project属于同一个阿里云账号,但不属于同一个地域时,需要手动下载安装包,并通过公网传输的方式执行安装命令。
下载LoongCollector:替换
${region_id}
为ECS实例所属地域的RegionID。wget https://aliyun-observability-release-${region_id}.oss-${region_id}.aliyuncs.com/loongcollector/linux64/latest/loongcollector.sh -O loongcollector.sh;
安装LoongCollector
选择安装命令,并替换
${region_id}
为Project所属地域的RegionID。合适的网络传输方式有利于日志数据的传输更快速稳定。公网:适用于大多数场景,最常见于跨地域或外部服务器(如自建IDC),但受带宽限制且不稳定。
chmod +x loongcollector.sh; ./loongcollector.sh install ${region_id}-internet
传输加速:用于跨地域(如国内到国外),通过CDN加速提升性能,避免公网延迟高,传输不稳定问题,但流量需额外计费。
需要先打开Project的日志跨域传输加速功能,再执行安装命令。
chmod +x loongcollector.sh; ./loongcollector.sh install ${region_id}-acceleration
安装完成后执行
sudo /etc/init.d/loongcollectord status
查看状态,系统返回loongcollector is running
则表示安装并启动成功。若显示未运行,请卸载后重新安装。
创建机器组:用于管理和组织多台服务器的日志采集工作。
创建用户自定义标识文件:日志服务通过发现用户自定义标识与主机上的LoongCollector建立心跳连接。
重要同一机器组中不允许同时存在Linux和Windows服务器,请勿在Linux和Windows服务器上配置相同的用户自定义标识。
一个服务器可配置多个用户自定义标识,标识之间以换行符分隔。
在指定目录下(如目录不存在请手动创建)创建用户自定义标识文件
user_defined_id
,并配置用户自定义标识,此处以user-defined-1
为例:默认情况下,新增、删除、修改自定义标识文件后,1分钟内生效。
echo "user-defined-1" > /etc/ilogtail/user_defined_id
配置机器组:登录日志服务控制台,单击管理日志资源的Project,在左侧导航栏中,选择
资源 > 机器组。单击机器组右侧
> 创建机器组,配置完成后单击确定。
设置机器组名称。
机器组标识:选择用户自定义标识。
用户自定义标识:手动输入
user-defined-1
。
确认机器组创建成功:创建完成后,在机器组列表,单击新建的机器组,在机器组配置 > 机器组状态区域,查看心跳状态。如果心跳为OK则表示创建成功。若心跳失败,请检查用户标识与用户自定义标识内容是否正确。
基础采集配置
在确认满足前提条件后,您可以开始进行基础配置。同时,也可以参考高级采集配置,对日志内容进行脱敏、过滤等处理,实现更精细化的日志采集需求。
若您通过阿里云运维编排服务(OOS)自动安装了LoongCollector,则选择模板接入的操作已完成,您可跳过此步骤,直接进行基础采集配置。
登录日志服务控制台,单击管理日志资源的Project查看日志库列表,单击存放日志的Logstore名称前的展开,之后单击数据接入后的
,在搜索框中输入文本日志进行模板搜索,选择合适的模板,单击立即接入:
日志服务提供了正则、单行、多行等多种文本日志接入模板,各模板之间除了日志解析插件不同外,其余配置完全相同;同时,模板内支持添加、删除日志解析插件。此处您可以根据采集日志的特点选择模板,也可以任意选择文本日志模板后再进行插件配置与组合。
单行-文本日志采集:将日志整行存入content字段(保留原始文本),适合快速采集无需分析的日志(如临时调试),操作简单但后续分析时需通过模糊搜索手动提取信息,分析成本高。
其他文本日志采集:根据日志格式选择内置解析功能(如Nginx/JSON/正则)会自动提取关键字段(如status=200、method=GET),查询分析更高效,适合需长期频繁分析的日志,虽然需要配置解析规则,但能显著降低查询分析成本。
对比示例(以Nginx日志为例)
原始日志: | |
极简模式(单行-文本日志)采集结果 | 选择解析插件(Nginx)解析结果 |
|
|
极简单行
示例:
原始日志 | 原始日志整行存储至content |
|
|
选择单行 - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引,通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
正则解析
示例:使用正则表达式(\S+)\s-\s(\S+)\s\[([^]]+)]\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]+)"\s"([^"]+).*
进行解析。
原始日志 | 自定义正则解析 |
|
|
选择正则 - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径:
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:
添加日志样例:请务必使用实际场景中待采集日志的样例,配置日志样例可协助您配置日志处理相关参数,降低配置难度。
配置正则解析插件:单击正则解析,配置正则表达式和日志提取字段。
正则表达式:用于匹配日志,支持自动生成或手动输入的方式。
如果提供了日志样例,可以通过单击自动生成正则表达式,在日志样例中划选需要提取的日志内容,单击生成正则,自动生成正则表达式。
根据日志内容手动输入正则表达式,如果提供了日志样例,可以单击验证,测试正则表达式是否能够正确解析日志内容。
日志提取字段:为提取的日志内容(Value),设置对应的字段名(Key)。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
分隔符解析
示例:
原始日志 | 按指定字符 |
|
|
选择分隔符 - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径:
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:配置分隔符解析插件。
分隔符:根据日志内容选择正确的分隔符。以CSV文件格式为例,单击下拉列表选择自定义,并输入半角逗号(,)。
引用符:当日志字段内容中包含分隔符时,需要指定引用符进行包裹,被引用符包裹的内容会被解析为一个完整字段。
日志提取字段:按分隔顺序为分隔后的值设置Key,Key只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头。最大长度为128字节。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
标准JSON解析
示例:
原始日志 | 标准JSON键值自动提取 |
|
|
选择JSON - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:配置JSON解析插件,提取Object首层的键作为Key,Object首层的值作为Value。
原始字段:解析日志前,用于存放日志内容的原始字段,默认值为content。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
嵌套JSON解析
示例:原始日志如下,对原始字段进行JSON展开,并使用展开深度作为前缀。
{"s_key":{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}}
展开深度 | 多层级JSON解析日志 |
0 |
|
1 |
|
选择单行 - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:单击添加处理插件,选择拓展处理插件 > 展开JSON字段,进行如下配置。
原始字段:需要展开的原始字段名。
JSON展开深度:默认值为0,表示展开到能解析成功的最深的地方;1表示当前层级,以此类推。
JSON展开连接符:JSON展开时字段名的连接符,默认值为下划线(_)。
JSON展开字段前缀:指定JSON展开后字段名的前缀。
展开数组:指定是否展开数组类型的字段,如
{"k":["1","2"]}
展开后会变为{"k[0]":"1","k[1]":"2"}
。若您想修改字段名,可以组合使用重命名字段插件,将展开后的字段名映射为新的字段名,从而满足日志处理和分析的需求。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
JSON数组解析
示例:
原始日志 | 提取JSON数组结构 |
|
|
选择单行 - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:
处理模式:选择SPL。
SPL语句:您可以使用
json_extract
函数,从JSON数组中提取JSON对象。更多json函数请参考JSON函数的基本语法及示例。示例:从日志字段
content
中提取 JSON 数组中的元素,并将结果分别存储在新字段json1
和json2
中。* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
Nginx日志解析
示例:
原始日志 | 根据 |
|
|
选择Nginx - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径:
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:配置Nginx解析插件。
根据需要选择是否开启处理配置中的多行模式,如果开启,配置行首正则表达式。
在处理模式中选择处理插件组合,单击添加处理插件,选择NGINX模式解析插件,并在NGINX日志配置中输入如下内容后单击确认。
log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
说明Nginx模式插件支持根据log_format中的定义将日志内容结构化,解析为多个键值对形式。如默认内容不符合您的需求,可使用自定义格式。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
IIS日志解析
示例:
原始日志 | 微软IIS服务器专用格式适配 |
|
|
选择IIS - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径:
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:IIS模式解析插件支持根据IIS日志格式定义将日志内容结构化,解析为多个键值对形式。
根据需要选择是否开启处理配置中的多行模式,如果开启,配置行首正则表达式。
在处理模式中选择处理插件组合,单击添加处理插件,选择IIS模式解析插件,选择日志格式与IIS配置字段后单击确认。
日志格式:选择您的IIS服务器日志采用的日志格式。
IIS:Microsoft IIS日志文件格式。
NCSA:NCSA公用日志文件格式。
W3C:W3C扩展日志文件格式。
IIS配置字段:选择IIS或NCSA时,日志服务已默认设置了IIS配置字段,选择W3C时,设置为您的IIS配置文件中
logExtFileFlags
参数中的内容。例如:logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引,通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
Apache日志解析
示例:combined
格式日志解析结果如下
原始日志 | Apache通用日志格式 |
|
|
选择Apache - 文本日志模板,在机器组配置页面选择好安装环境和机器组后,单击下一步进入Logtail配置页面,进行如下配置,完成后单击下一步:
全局配置:填写配置名称
输入配置:
文件路径:即日志采集的路径:
Linux
以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows
以盘符开头,如C:\Program Files\Intel\**\*.Log。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
处理配置:Apache模式解析插件,此处以combined日志格式为例。
日志格式:combined
APACHE配置字段:当日志格式为combined时,此处会自动填充对应格式的配置字段,请确认是否和Apache配置文件中定义的格式一致。
在查询分析配置页面预览数据,单击自动生成索引,日志服务将生成字段索引。通过此索引针对特定字段进行精确查询,从而减少索引费用和提高查询效率。完成后单击下一步结束配置。
高级采集配置
您可以在基础采集配置的同时,参考下述操作进行高级配置,以满足更精细化的日志采集需求,也可以在基础配置完成后通过更新方式进行调整。以下是常见高级配置及其功能:
Logtail提供了处理插件用于将原始日志进一步解析为结构化数据,处理插件分为原生处理插件和扩展处理插件,此处覆盖原生处理插件的使用。
在目标Project页面中单击
展开目标Logstore,单击Logtail配置,单击目标Logtail配置操作列的管理Logtail配置,在配置页面单击编辑。
在Logtail配置页面,您可按需从下列场景中选择合适的操作修改采集配置规则:
配置多行日志采集:当一条日志内容(如异常堆栈信息)占用多行时,需启用多行模式,并配置行首正则表达式以匹配日志的起始行,将占用多行的日志作为一条日志采集并存储到日志服务。
允许文件多次采集:允许一个文件日志被多个LoongCollector(Logtail)配置采集。
配置日志主题类型:为不同的日志流设置不同的主题(Topic),可用于组织和分类日志数据,更好地管理和检索相关日志。
配置采集黑名单:在采集时忽略指定的目录或文件,支持按照文件路径、文件、目录配置黑名单。
日志脱敏处理:对日志中的敏感信息进行脱敏处理后保存到日志服务。
日志内容过滤:当原始日志中有大量无效日志无需保存到日志服务时,可使用日志过滤来剔除。
指定写入日志时间:用于解析日志中的时间字段,并将解析结果设置为日志的
__time__
字段。日志传输压缩:如果您想要优化日志传输效率,您可配置压缩方式,支持
lz4
和zstd
。
对比示例(以脱敏插件为例)
原始日志: | |
JSON文本日志采集结果 | 脱敏插件解析结果 |
|
|
配置多行日志采集
日志服务默认为单行模式,按行进行日志的切分与存储,导致含堆栈信息的多行日志被逐行切分,每一行作为独立日志存储和展示,不利于分析。
针对上述问题,可通过开启多行模式来改变日志服务的切分方式,并通过配置正则表达式匹配日志起始行,从而将原始日志按照起始行规则进行切分和存储。示例如下:
原始日志:
[2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
单行模式与多行模式对比:
单行模式:每行作为独立日志,堆栈信息被拆散,丢失上下文 | 多行模式:通过行首正则识别完整日志,保留完整语义结构 |
| |
在Logtail配置页面进行多行模式配置,配置完成后单击保存即可:
处理配置:开启多行模式。
类型:选择自定义或多行JSON。
自定义:原始日志的格式不固定,需配置行首正则表达式,来标定每一条日志的起始行。
行首正则表达式:支持自动生成或手动输入,正则表达式需要能够匹配完整的一行数据,如上述示例中匹配的正则表达式为
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*
。单击自动生成正则表达式,然后在日志样例文本框中,划选需提取的日志内容,单击生成正则。
单击手动输入正则表达式,输入正则表达式。配置完成后,单击验证。
多行JSON:当原始日志均为标准JSON格式时选择,LoongCollector(Logtail)会自动处理单条JSON日志内部的换行。
切分失败处理方式:
丢弃:直接丢弃这段日志。
保留单行:将每行日志文本单独保留为一条日志。
配置日志主题类型
在Logtail配置页面进行如下配置,配置完成后单击保存即可:
全局配置 > 其他全局配置:配置日志主题类型。
日志主题类型:选择日志主题(Topic)的生成方式。
机器组Topic:日志服务支持将一个LoongCollector(Logtail)配置应用到多个机器组。使用机器组Topic可用于区分来自不同机器组的日志。LoongCollector(Logtail)上报数据时,会将服务器所在机器组的机器组Topic作为日志主题上传至Project。用户在查询日志时需要指定日志主题作为查询条件。
文件路径提取:若不同的用户或应用将日志保存在不同的顶级目录中,但下级目录和日志文件名相同,日志服务在采集日志时无法明确区分日志是由哪个用户或应用产生的。此时文件路径提取方式可用于区分不同用户或应用产生的日志数据。通过正则表达式来完整匹配文件路径,并将表达式匹配的结果(用户名或应用名)作为日志主题(Topic)上传至日志服务。
使用正则从文件路径中提取Topic
说明文件路径的正则表达式中,需要对正斜线(/)进行转义。
场景1:不同用户将日志记录在不同目录下,但是日志文件名称相同,目录路径如下所示。
/data/logs ├── userA │ └── serviceA │ └── service.log ├── userB │ └── serviceA │ └── service.log └── userC └── serviceA └── service.log
如果在Logtail配置中仅配置文件路径为
/data/logs
且文件名称为service.log
,LoongCollector(Logtail)会将三个service.log
文件中的内容采集至同一个Logstore中,因此无法区分日志具体由哪个用户产生。您可以使用正则表达式提取文件路径中的值,生成不同的日志主题。正则表达式
提取结果
\/data\/logs\/(.*)\/serviceA\/.*
__topic__: userA __topic__: userB __topic__: userC
场景2:如果单个日志主题不足以区分日志的来源,您可以在日志文件路径中配置多个正则捕获组来提取关键信息。其中捕获组包括命名捕获组(?P<name>)与非命名捕获组两类。
如果使用命名捕获组,则生成的tag字段为
__tag__:{name}
;如果使用非命名捕获组,则生成的tag字段为
__tag__:__topic_{i}__
,其中{i}
为捕获组的序号。
说明当正则表达式中存在多个捕获组时,不会生成
__topic__
字段。例如,文件路径为
/data/logs/userA/serviceA/service.log
,您可以通过以下方式提取文件路径中的多个值:示例
正则表达式
提取结果
使用非命名捕获组进行正则提取。
\/data\/logs\/(.*?)\/(.*?)\/service.log
__tag__:__topic_1__: userA __tag__:__topic_2__: serviceA
使用命名捕获组进行正则提取。
\/data\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/service.log
__tag__:user: userA __tag__:service: serviceA
验证:配置完成后,根据日志主题查询日志:在日志查询分析页面,输入对应生成的日志主题,例如
__topic__: userA
、__tag__:__topic_1__: userA
查询相应主题的日志。更多信息,请参见查询语法与功能。自定义:输入
customized:// + 自定义主题名
,使用自定义的静态日志主题。
允许文件多次采集
在Logtail配置页面进行如下配置:
输入配置:开启允许文件多次采集。默认一个日志文件只能匹配一个LoongCollector(Logtail)配置,开启后,同一个文件支持被多个LoongCollector(Logtail)配置采集。
配置采集黑名单
在Logtail配置页面进行如下配置:
匹配黑名单过程存在计算开销,建议黑名单条目数控制在10条内。
输入配置 > 其他输入配置:开启采集黑名单,选择对应的黑名单方式进行配置。
支持完整匹配和通配符匹配目录和文件名。其中,通配符只支持星号(*)和半角问号(?)。
文件路径黑名单:配置采集时需要忽略的文件路径,相关示例如下:
/home/admin/private*.log
:在采集时忽略/home/admin/
目录下所有以private开头,以.log结尾的文件。/home/admin/private*/*_inner.log
:在采集时忽略/home/admin/
目录下以private开头的目录内,以_inner.log结尾的文件。
文件黑名单:配置采集时需要忽略的文件名,示例如下:
app_inner.log
:在采集时忽略所有名为app_inner.log
的文件。
目录黑名单:目录路径不能以正斜线(/)结尾,以下为目录路径示例:
/home/admin/dir1/
:目录黑名单不会生效。/home/admin/dir*
:在采集时忽略/home/admin/
目录下所有以dir开头的子目录下的文件。/home/admin/*/dir
:在采集时忽略/home/admin/
目录下二级目录名为dir的子目录下的所有文件。例如/home/admin/a/dir
目录下的文件被忽略,/home/admin/a/b/dir
目录下的文件被采集。
日志脱敏处理
示例:
原始日志 | 解析日志 |
|
|
在Logtail配置页面,单击处理配置页签中的添加处理插件,插件类型选择原生处理插件 > 脱敏处理,进行如下配置:
日志内容过滤
在Logtail配置页面,单击处理配置页签中的添加处理插件,插件类型选择原生处理插件 > 原生插件:过滤处理,进行白名单配置:配置后只采集符合白名单条件的日志。
字段名:需要进行过滤的日志字段。
字段值:用于过滤的正则表达式,仅支持全文匹配,不支持关键词部分匹配。
指定写入日志时间
日志传输压缩
在Logtail配置页面进行如下配置:
输出配置:指定传输数据时的压缩方式。
说明仅Logtail 1.3.4及以上的版本支持zstd压缩。
lz4:压缩速度快,压缩率较低。
zstd:压缩率高,速度略低,内存占用高。
常见问题
如何将ECS服务器的日志传输到另一个阿里云账号的Project?
如果您尚未安装LoongCollector,请参考前提条件选择合适的跨账号场景进行安装;
如果您已安装了LoongCollector,请参考如下步骤配置用户标识,用于标识这台服务器有权限被日志服务Project所属账号访问、采集日志。
只有在采集非本账号ECS、自建IDC、其他云厂商服务器日志时需要配置用户标识。
复制日志服务所属的主账号ID:鼠标悬浮在右上角用户头像上,在弹出的标签页中查看并复制账号ID。
登录需要采集日志的服务器,创建阿里云账号ID文件配置用户标识:
touch /etc/ilogtail/users/{阿里云账号ID} # 如果/etc/ilogtail/users目录不存在,请手动创建目录。用户标识配置文件只需配置文件名,无需配置文件后缀。
如何将ECS服务器的日志传输到同账号不同地域的Project?
如果您尚未安装LoongCollector,请参考前提条件选择合适的跨地域场景进行安装;
如果已安装LoongCollector,则需要修改LoongCollector配置。
执行
sudo /etc/init.d/ilogtaild stop
命令,停止LoongCollector。修改LoongCollector启动配置文件
ilogtail_config.json
,根据您的网络需求从以下两种方式中选择一种进行修改:配置文件路径:
/usr/local/ilogtail/ilogtail_config.json
方式一:使用公网传输
参考RegionID,将配置文件中的地域替换为日志服务所在的地域,需要修改的字段包括:
primary_region
config_servers
中的地域部分data_servers
中的region
和endpoint_list
地域部分
方式二:使用传输加速
将data_server_list参数中的endpoint一行替换为
log-global.aliyuncs.com
。文件路径,请参见Logtail网络类型,启动参数与配置文件。
配置文件示例如下:
$cat { "primary_region" : "cn-shanghai", "config_servers" : [ "http://logtail.cn-shanghai.log.aliyuncs.com" ], "data_servers" : [ { "region" : "cn-shanghai", "endpoint_list": [ "cn-shanghai.log.aliyuncs.com" ] } ], "cpu_usage_limit" : 0.4, "mem_usage_limit" : 384, "max_bytes_per_sec" : 20971520, "bytes_per_sec" : 1048576, "buffer_file_num" : 25, "buffer_file_size" : 20971520, "buffer_map_num" : 5 }
执行
sudo /etc/init.d/ilogtaild start
命令,启动LoongCollector。
机器组心跳连接为fail,应该如何处理?
检查用户标识:如果您的服务器类型不是ECS,或使用的ECS和Project属于不同阿里云账号,请根据如下表格检查指定目录下是否存在正确的用户标识。
系统
指定目录
解决方法
Linux
/etc/ilogtail/users/
执行
cd /etc/ilogtail/users/ && touch <uid>
命令,创建用户标识文件。Windows
C:\LogtailData\users\
进入
C:\LogtailData\users\
目录,创建一个名为<uid>
的空文件。如果指定路径下存在以当前Project所属的阿里云账号ID命名的文件,则说明用户标识配置正确。
检查机器组标识:如果您使用了用户自定义标识机器组,请检查指定目录下是否存在
user_defined_id
文件,如果存在请检查该文件中的内容是否与机器组配置的自定义标识一致。系统
指定目录
解决方法
Linux
/etc/ilogtail/user_defined_id
# 配置用户自定义标识,如目录不存在请手动创建 echo "user-defined-1" > /etc/ilogtail/user_defined_id
Windows
C:\LogtailData\user_defined_id
在
C:\LogtailData
目录下新建user_defined_id
文件,并写入用户自定义标识。(如目录不存在,请手动创建)如果用户标识和机器组标识均配置无误,请参考LoongCollector(Logtail)机器组问题排查思路进一步排查。
日志采集无数据
检查是否有增量日志:配置LoongCollector(Logtail)采集后,如果待采集的日志文件没有新增日志,则LoongCollector(Logtail)不会采集该文件。
检查机器组心跳状态:前往
资源 > 机器组页面,单击目标机器组名称,在机器组配置 > 机器组状态区域,查看心跳状态。
如果心跳为OK,则表示机器组与日志服务 Project 连接正常。
如果心跳为FAIL:
检查用户标识:如果您的服务器类型不是ECS,或使用的ECS和Project属于不同阿里云账号,请根据如下表格检查指定目录下是否存在正确的用户标识。
系统
指定目录
解决方法
Linux
/etc/ilogtail/users/
执行
cd /etc/ilogtail/users/ && touch <uid>
命令,创建用户标识文件。Windows
C:\LogtailData\users\
进入
C:\LogtailData\users\
目录,创建一个名为<uid>
的空文件。如果指定路径下存在以当前Project所属的阿里云账号ID命名的文件,则说明用户标识配置正确。
检查机器组标识:如果您使用了用户自定义标识机器组,请检查指定目录下是否存在
user_defined_id
文件,如果存在请检查该文件中的内容是否与机器组配置的自定义标识一致。系统
指定目录
解决方法
Linux
/etc/ilogtail/user_defined_id
# 配置用户自定义标识,如目录不存在请手动创建 echo "user-defined-1" > /etc/ilogtail/user_defined_id
Windows
C:\LogtailData\user_defined_id
在
C:\LogtailData
目录下新建user_defined_id
文件,并写入用户自定义标识。(如目录不存在,请手动创建)如果用户标识和机器组标识均配置无误,请参考Logtail机器组问题排查思路(主机场景)进一步排查。
确认LoongCollector(Logtail)采集配置是否已应用到机器组:即使LoongCollector(Logtail)采集配置已创建,但如果未将其应用到机器组,日志仍无法被采集。
前往
资源 > 机器组页面,单击目标机器组名称,进入机器组配置页面。
在页面中查看管理配置,左侧展示全部Logtail配置,右侧展示已生效Logtail配置。如果目标LoongCollector(Logtail)采集配置已移动到右侧生效区域,则表示该配置已成功应用到目标机器组。
如果目标LoongCollector(Logtail)采集配置未移动到右侧生效区域,请单击修改,在左侧全部Logtail配置列表中勾选目标LoongCollector(Logtail)配置名称,单击
移动到右侧生效区域,完成后单击保存。
采集日志报错或格式错误
排查思路:这种情况说明网络和基础配置是通的,问题主要出在日志内容与解析规则不匹配。您需要查看具体的错误信息来定位问题:
在Logtail配置页面,单击采集异常的LoongCollector(Logtail)配置名称,在日志采集错误页签下,单击时间选择设置查询时间。
在采集异常监控 > 全量错误信息区域,查看错误日志的告警类型,并根据采集数据常见错误类型查询对应的解决办法。
更多信息
全局配置参数介绍
配置项 | 说明 |
配置名称 | LoongCollector(Logtail)配置名称,在其所属Project内必须唯一。创建成功后,无法修改其名称。 |
日志主题类型 | 选择日志主题(Topic)的生成方式。包含机器组Topic,文件路径提取,自定义三种方式。 |
高级参数 | 其它可选的与配置全局相关的高级功能参数,请参见创建LoongCollector(Logtail)流水线配置。 |
输入配置参数介绍
配置项 | 说明 |
文件路径 | 根据日志在主机(例如ECS)上的位置,设置日志目录和文件名称: 目录名和文件名均支持完整模式和通配符模式,文件名规则请参见Wildcard matching。其中,日志路径通配符只支持星号(*)和半角问号(?)。 日志文件查找模式为多层目录匹配,即符合条件的指定目录(包含所有层级的目录)下所有符合条件的文件都会被查找到。例如:
|
最大目录监控深度 | 设置日志目录被监控的最大深度,即文件路径中通配符 |
文件编码 | 选择日志文件的编码格式。 |
首次采集大小 | 配置首次生效时,匹配文件的起始采集位置距离文件结尾的大小。首次采集大小设定值为1024 KB。
您可以通过此处修改首次采集大小,取值范围为0~10485760KB。 |
采集黑名单 | 打开采集黑名单开关后,可进行黑名单配置,即可在采集时忽略指定的目录或文件。支持完整匹配和通配符匹配目录和文件名。其中,通配符只支持星号(*)和半角问号(?)。 重要
支持按照文件路径黑名单、文件黑名单、目录黑名单设置,详细说明如下: 文件路径黑名单
文件黑名单选择文件黑名单,配置文件名为 目录黑名单
|
允许文件多次采集 | 默认情况下,一个日志文件只能匹配一个LoongCollector(Logtail)配置。如果文件中的日志需要被采集多份,需要打开允许文件多次采集开关。 |
高级参数 | 其它可选的与文件输入插件相关的高级功能参数,请参见创建LoongCollector(Logtail)流水线配置。 |
处理配置参数介绍
配置项 | 说明 |
日志样例 | 待采集日志的样例,请务必使用实际场景的日志。日志样例可协助您配置日志处理相关参数,降低配置难度。支持添加多条样例,总长度不超过1500个字符。
|
多行模式 |
|
处理模式 | 处理插件组合,包括原生插件和拓展插件。有关处理插件的更多信息,请参见处理插件概述。 重要 处理插件的使用限制,请以控制台页面的提示为准。
|