本文介绍如何使用LoongCollector(Logtail)实现对ECS实例、自建Linux/Windows等主机文本日志的增量采集。如需采集全量日志,可以通过导入历史日志实现。
权限准备
阿里云主账号登录:默认拥有全部权限,可直接操作。
RAM账号登录:需要主账号授权相应权限策略。
系统权限策略
若使用系统预定义策略,建议添加以下权限:
AliyunLogFullAccess
:管理日志服务的权限。AliyunECSFullAccess
:管理ECS的权限。(可选)
AliyunOOSFullAccess
:当通过 OOS 一键安装LoongCollector(Logtail)时需要。
自定义权限策略(精细化控制)
当系统策略无法满足最小权限原则时,可通过创建自定义权限策略实现可使用如下示例策略,示例主要包含权限为:
查看Project:查看Project列表,查看指定Project详情。
管理日志库 (Logstore): 在Project下创建新的日志库,或修改、删除已有的日志库。
管理采集配置: 创建、删除和修改采集配置。
查看日志: 查询和分析指定Project下指定日志库中的数据。
替换${regionName}
${uid}
、${projectName}
、${logstoreName}
为实际的地域名称,主账号id,目标Project和Logstore。
权限 | 对应操作 | 资源 |
只读Project |
|
|
获取指定Project |
|
|
管理Logstore |
|
|
管理LoongCollector(Logtail)数据接入 |
|
|
查询快速查询 |
|
|
查询仪表盘 |
|
|
查询指定日志库日志 |
|
|
操作ECS的权限 |
|
|
操作OOS的权限(可选) 仅在日志服务与ECS实例同账号同地域通过OOS自动化安装LoongCollector(Logtail)时需要。 |
|
|
采集配置创建流程
创建Project和Logstore:Project是资源管理单元,隔离不同业务日志,而Logstore用于存储日志。
安装LoongCollector:LoongCollector 是新一代日志采集 Agent,是 Logtail 的升级版。
创建采集配置:
本文仅介绍常用的配置参数,涵盖典型使用场景下的核心选项。如需了解完整的配置参数列表及详细说明,请参考更多信息。
创建Project和Logstore
若您已提前创建好Project和Logstore,可跳过此步骤,直接安装LoongCollector(Logtail)。
登录日志服务控制台。
单击创建Project。
配置:
所属地域:根据日志来源选择,创建后不可修改。
Project名称:阿里云内全局唯一,创建后不可修改。
其他配置保持默认,单击创建。如需了解其他参数,请参见管理Project。
单击Project名称,进入目标Project。
在左侧导航栏,选择
,单击+。
在创建Logstore页面,完成以下核心配置:
Logstore名称:设置一个在Project内唯一的名称。该名称创建后不可修改。
Logstore类型:根据规格对比选择标准型或查询型。
计费模式:
按使用功能计费:按存储、索引、读写次数等各项资源独立计费。适合小规模或功能使用不确定的场景。
按写入数据量计费:仅按原始写入数据量计费,并提供30天的免费存储周期及免费的数据加工、投递等功能。成本模型简单,适合存储周期接近30天或数据处理链路复杂的场景。
数据保存时间:设置日志的保留天数,取值范围为1~3650天(3650天表示永久保存)。默认为30天。
其他配置保持默认,单击确定。如需了解其他配置信息,请参考管理Logstore。
安装LoongCollector(Logtail)
本文仅提供安装LoongCollector的基础操作步骤,如需了解详细信息,请参考LoongCollector安装(Linux)。
如果您已安装LoongCollector或Logtail,可跳过此步骤,直接创建采集配置。
|
日志服务提供了正则、单行等多种文本日志接入模板,各模板之间除了解析插件不同外,其余配置完全相同;同时,模板内支持添加、删除解析插件。此处您可以根据采集日志的特点选择模板,也可以任意选择文本日志模板后再根据日志特点进行插件配置。
机器组配置,完成后单击下一步:
使用场景:主机场景
安装环境:支持ECS、自建机器 - Linux、自建机器 - Windows
单击创建机器组:
ECS
选择与Project同地域的ECS实例(ECS实例可以选择多台)。
单击安装并创建为机器组,等待安装完成。
配置机器组名称并单击确定。
说明如果安装失败或一直处于等待中,请检查ECS地域是否与Project相同。若ECS地域与Project不属于同一账号或地域,请参考LoongCollector安装(Linux)。
自建机器 - Linux
根据网络类型复制对应的安装命令,在服务器上下载并安装LoongCollector:
您在控制台上获取的命令是一条完整的复合指令,依次包含下载安装包、添加执行权限、安装LoongCollector三个操作,通过分号
;
连接,可一键执行该命令。公网:属于以下两种情况时,请选择公网传输数据。
ECS实例和日志服务Project属于不同地域。
服务器为其他云厂商服务器或自建IDC。
全球加速:如果业务服务器、日志服务Project分别属于国内地域和国外地域,使用公网传输数据可能会出现网络延迟高、传输不稳定等问题,您可以选择传输加速传输数据。
需要先打开Project的日志跨域传输加速功能,再执行安装命令。
安装完成后,您可执行如下命令查看启动状态:返回
loongcollector is running
表示启动成功。sudo /etc/init.d/loongcollectord status
(可选)配置主账号AliUid作为用户标识:只有在采集非本账号ECS、自建服务器、其他云厂商服务器日志时需要配置用户ID。
在控制台复制如下命令:
touch /etc/ilogtail/users/155***********44
在目标服务器,执行该命令,创建用户标识文件。
配置机器组:
在服务器上将自定义字符串
user-defined-test-1
写入用户自定义标识文件。#向指定文件写入自定义字符串,若目录不存在需手动创建。文件路径和名称由日志服务固定,不可自定义。 echo "user-defined-test-1" > /etc/ilogtail/user_defined_id
在控制台的机器组设置区域,进行如下配置,并单击确定:
名称:设置机器组名称,Project内唯一,必须以小写字母或数字开头和结尾,且只能包含小写字母、数字、连字符(-)和下划线(_),长度为3~128字符。
机器组标识:选择用户自定义标识。
用户自定义标识:输入配置的用户自定义标识,需要与服务器用户自定义标识文件中自定义字符串内容一致。此例为
user-defined-test-1
。
单击下一步,页面出现机器组心跳情况。查看心跳状态:
若为FAIL:可能是初次建立心跳需要花费一些时间,请等待两分钟左右,再刷新心跳状态。
若仍为FAIL,请参考机器组心跳连接为fail,应该如何处理?进行排查。
若为OK:表示机器组连接正常。
单击下一步,进入Logtail配置页面。
自建机器 - Windows
LoongCollector暂不支持Windows系统,如需在Windows主机上采集日志,需要安装Logtail。
在控制台上,根据地域下载安装包。
解压
loongcollector_installer.zip
到当前目录。以管理员身份运行Windows PowerShell或cmd,进入
目录(您的安装包的解压目录)。在控制台上,根据网络类型复制对应的安装命令:loongcollector_installer
公网:适用于大多数场景,常见于跨地域或其他云/自建服务器,但受带宽限制且可能不稳定。
全球加速:用于跨地域(如中国内地到海外),通过CDN加速提升性能,避免公网延迟高,传输不稳定问题,但流量需额外计费。
需要先打开Project的日志跨域传输加速功能,再执行安装命令。
(可选)配置主账号AliUid作为用户标识:只有在采集非本账号ECS、自建服务器、其他云厂商服务器日志时需要配置用户ID。
创建主账号AliUid同名文件到目录 C:\LogtailData\users,例如:
C:\LogtailData\users\155***********44
。配置机器组:
在服务器的指定目录
C:\LogtailData
下,创建user_defined_id用户自定义标识文件。如果目录C:\LogtailData不存在,请手动创建。
将自定义字符串
user-defined-test-1
写入该文件C:\LogtailData\user_defined_id。同一机器组中不允许同时存在Linux服务器、Windows服务器,即请勿在Linux和Windows服务器上配置相同的用户自定义标识。一个服务器可配置多个用户自定义标识,标识之间以换行符分割。
在控制台的机器组设置区域,进行如下配置,并单击确定:
名称:设置机器组名称,Project内唯一,必须以小写字母或数字开头和结尾,且只能包含小写字母、数字、连字符(-)和下划线(_),长度为3~128字符。
机器组标识:选择用户自定义标识。
用户自定义标识:输入配置的用户自定义标识,需要与服务器用户自定义标识文件中自定义字符串内容一致。此例为
user-defined-test-1
。
单击下一步,页面出现机器组心跳情况。查看心跳状态:
若为FAIL:可能是初次建立心跳需要花费一些时间,请等待两分钟左右,再刷新心跳状态。
若仍为FAIL,请参考机器组心跳连接为fail,应该如何处理?进行排查
若为OK:表示机器组连接正常。
单击下一步,进入Logtail配置页面。
全局配置
配置名称:采集配置名称,在其所属Project内必须唯一。创建成功后,无法修改。命名规则:
仅支持小写字母、数字、连字符(-)和下划线(_)。
必须以小写字母或者数字作为开头和结尾。
输入配置
类型:文本日志采集。
文件路径:日志采集的路径。
Linux:以“/”开头,如
/data/mylogs/**/*.log
,表示/data/mylogs
目录下所有后缀名为.Log的文件。Windows:以盘符开头,如
C:\Program Files\Intel\**\*.Log
。
最大目录监控深度:文件路径中通配符
**
匹配的最大目录深度。默认为0,表示只监控本层目录。
常用处理配置
此处仅介绍原生处理插件,覆盖常见日志处理场景,如需更多功能,请参考扩展处理插件。
对于Logtail 2.0及以上版本以及LoongCollector组件,推荐遵循以下插件组合规则:
优先使用原生插件。
当原生插件无法满足需求时,可在原生插件后配置扩展插件。
原生插件只能在扩展插件之前使用。
结构化配置
如果您在安装LoongCollector(Logtail)时,根据日志格式选择了文本日志接入模板,系统会自动为您预置对应的解析插件,但该插件仍需手动配置:
请单击插件名称,进入配置页面,参考如下说明配置解析插件,也可以根据业务需求灵活添加其他解析插件,或删除不需要的插件。
正则解析
通过正则表达式提取日志字段,并将日志解析为键值对形式。
| 原始日志:
|
自定义正则解析:正则表达式
|
分隔符解析
通过分隔符将日志内容结构化,解析为多个键值对形式,支持单字符分隔符和多字符分隔符。
单击添加处理插件,选择 :
| 原始日志:
|
按指定字符
|
标准JSON解析
将Object类型的JSON日志结构化,解析为键值对形式。
单击添加处理插件,选择 :
| 原始日志:
|
标准JSON键值自动提取:
|
嵌套JSON解析
通过指定展开深度,将嵌套的JSON日志解析为键值对形式。
单击添加处理插件,选择 :
| 原始日志:
|
展开深度:0,并使用展开深度作为前缀。
| |
展开深度:1,并使用展开深度作为前缀。
|
JSON数组解析
使用json_extract
函数,从JSON数组中提取JSON对象。
将处理模式切换为SPL:
| 原始日志:
|
提取JSON数组结构:
|
Nginx日志解析
根据log_format中的定义将日志内容结构化,解析为多个键值对形式。如默认内容不符合您的需求,可使用自定义格式。
单击添加处理插件,选择 :
| 原始日志:
|
根据
|
Apache日志解析
根据Apache日志配置文件中的定义将日志内容结构化,解析为多个键值对形式。
单击添加处理插件,选择 :
| 原始日志:
|
Apache通用日志格式
|
IIS日志解析
根据IIS日志格式定义将日志内容结构化,解析为多个键值对形式。
单击添加处理插件,选择 :
| 原始日志:
|
微软IIS服务器专用格式适配:
|
数据脱敏
对日志中的敏感数据进行脱敏处理。
在处理配置区域,单击添加处理插件,选择 : | 原始日志:
|
脱敏结果:
|
内容过滤
基于正则表达式匹配日志字段值,仅采集符合白名单条件的日志。
在处理配置区域,单击添加处理插件,选择 :
| 原始日志:
|
过滤日志:设置字段名为
|
时间解析
对日志中的时间字段进行解析,并将解析结果设置为日志的__time__
字段。
在处理配置区域,单击添加处理插件,选择 :
| 原始日志:
|
时间解析: |
多行日志采集
默认情况下,日志服务以单行模式工作,会将每一行文本都视为一条独立的日志。这会导致包含堆栈跟踪、JSON 等内容的多行日志被错误地拆分,从而丢失上下文。
针对上述问题,可以开启多行模式,定义一个行首正则表达式,让日志服务能够准确识别一条完整日志的起始行,从而将多行内容合并为一条日志。
处理配置:
| 原始日志:
|
单行模式:每行作为独立日志,堆栈信息被拆散,丢失上下文。 | |
多行模式:通过行首正则识别完整日志,保留完整语义结构。
|
输出配置
配置日志传输压缩:
仅Logtail 1.3.4及以上的版本支持zstd压缩。
lz4:压缩速度快,压缩率较低。
zstd:压缩率高,速度略低,内存占用高。
其他高级配置
配置日志主题类型
:选择Topic生成方式。
机器组Topic:日志服务支持将一个采集配置应用到多个机器组。LoongCollector上报数据时,会将服务器所在机器组的Topic作为日志主题上传至Logstore,您可以根据Topic区分来自不同机器组的日志。
文件路径提取:若不同的用户或应用将日志写入不同的顶级目录,但下级路径和文件名相同,导致无法从文件名区分日志来源。此时您可以配置文件路径提取,通过正则表达式来匹配完整的文件路径,并将匹配结果(用户名或应用名)作为日志主题(Topic)上传至Logstore。
说明文件路径的正则表达式中,需要对正斜线(/)进行转义。
通过文件路径正则提取
场景描述:不同用户将日志记录在不同目录下,但是日志文件名称相同,目录路径如下所示。
/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
通过多捕获组提取
场景描述:如果单个日志主题不足以区分日志的来源,可以在日志文件路径中配置多个正则捕获组来提取关键信息。其中捕获组包括命名捕获组(?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:// + 自定义主题名
,使用自定义的静态日志主题。
黑名单
:开启采集黑名单,单击添加,配置黑名单。
支持完整匹配和通配符匹配目录和文件名,通配符只支持星号(*)和半角问号(?)。
文件路径黑名单:需要忽略的文件路径,示例:
/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
目录下的文件被采集。
配置首次采集大小
配置首次生效时,匹配文件的起始采集位置距离文件结尾的大小。
:配置首次采集大小,默认为1024 KB。取值范围为0~10485760KB。
首次采集时,如果文件小于1024 KB,则从文件内容起始位置开始采集。
首次采集时,如果文件大于1024 KB,则从距离文件末尾1024 KB的位置开始采集。
允许文件多次采集
默认一个日志文件只能匹配一个LoongCollector(Logtail)配置,开启后,同一个文件支持被多个LoongCollector(Logtail)配置采集。
:开启允许文件多次采集。
常见问题
如何将ECS服务器的日志传输到另一个阿里云账号的Project?
如果您尚未安装LoongCollector,请参考安装LoongCollector(Logtail)选择合适的跨账号场景进行安装;
如果您已安装了LoongCollector,请参考如下步骤配置用户标识,用于标识这台服务器有权限被日志服务Project所属账号访问、采集日志。
只有在采集非本账号ECS、自建IDC、其他云厂商服务器日志时需要配置用户标识。
复制日志服务所属的主账号ID:鼠标悬浮在右上角用户头像上,在弹出的标签页中查看并复制账号ID。
登录需要采集日志的服务器,创建阿里云账号ID文件配置用户标识:
touch /etc/ilogtail/users/{阿里云账号ID} # 如果/etc/ilogtail/users目录不存在,请手动创建目录。用户标识配置文件只需配置文件名,无需配置文件后缀。
如何将ECS服务器的日志传输到同账号不同地域的Project?
如果您尚未安装LoongCollector,请参考安装LoongCollector(Logtail)选择合适的跨地域场景进行安装;
如果已安装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网络类型,启动参数与配置文件。
执行
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:参考机器组心跳连接为fail,应该如何处理?进行排查。
确认LoongCollector(Logtail)采集配置是否已应用到机器组:即使LoongCollector(Logtail)采集配置已创建,但如果未将其应用到机器组,日志仍无法被采集。
前往
页面,单击目标机器组名称,进入机器组配置页面。在页面中查看管理配置,左侧展示全部Logtail配置,右侧展示已生效Logtail配置。如果目标LoongCollector(Logtail)采集配置已移动到右侧生效区域,则表示该配置已成功应用到目标机器组。
如果目标LoongCollector(Logtail)采集配置未移动到右侧生效区域,请单击修改,在左侧全部Logtail配置列表中勾选目标LoongCollector(Logtail)配置名称,单击
移动到右侧生效区域,完成后单击保存。
采集日志报错或格式错误
排查思路:这种情况说明网络和基础配置是通的,问题主要出在日志内容与解析规则不匹配。您需要查看具体的错误信息来定位问题:
在Logtail配置页面,单击采集异常的LoongCollector(Logtail)配置名称,在日志采集错误页签下,单击时间选择设置查询时间。
在采集数据常见错误类型查询对应的解决办法。
区域,查看错误日志的告警类型,并根据