介绍如何将一个阿里云账号(源账号)下的ECS服务器日志,统一采集到另一个阿里云账号(目标账号)的日志服务Project中。该方案通过在源ECS上配置授权,允许目标账号的Logtail进行日志采集,实现日志的集中管理和分析。
快速入门
业务场景说明
在多账号的云环境中,集中管理日志的常见原因如下:
统一运维监控:将分散在不同业务账号下的应用日志、系统日志集中存储,便于统一的监控、告警和故障排查。
安全合规审计:将所有操作日志、安全日志归集到专用的安全或审计账号,满足合规性要求。
业务迁移:在业务从一个阿里云账号迁移到另一个账号的过程中,将日志采集任务过渡到新账号。
介绍如何将日志采集任务从源账号迁移至目标账号。
方案架构
该方案基于文件授权的信任模型。在源账号的ECS服务器上创建特定的授权和标识文件,即可授予目标账号通过Logtail采集该服务器日志的权限。

工作流程如下:
在源账号(账号B)的每台ECS服务器上,创建一个以目标账号(账号A)的UID命名的授权文件。
同时,在ECS上创建一个包含自定义标识符的文件,用于在目标账号中对这批机器进行分组。
ECS上的Logtail客户端识别到授权文件后,会向目标账号(账号A)的日志服务发送心跳,并上报其自定义标识。
在目标账号(账号A)的日志服务控制台,创建一个使用该自定义标识的机器组。心跳正常的ECS将自动加入该机器组。
为该机器组应用Logtail采集配置,Logtail将根据配置采集日志并发送到目标账号(账号A)的Logstore。
跨账号加工数据时,需使用自定义角色进行授权:
第一个角色ARN用于授予数据加工任务使用该角色来读取源Logstore中的数据。角色权限配置说明请参见授权RAM角色只读访问源Logstore。
第二个角色ARN用于授予数据加工任务使用该角色将数据加工结果写入目标Logstore。角色权限配置说明请参见授权RAM角色写数据到目标Logstore(跨账号)。
实施步骤
步骤一:在源ECS上配置授权与标识
在源账号的ECS服务器上创建授权文件和标识文件,以允许目标账号采集日志,并为后续创建机器组提供唯一标识。
登录源账号下的ECS服务器。
执行以下脚本完成授权与标识配置。将脚本中的
{TARGET_ACCOUNT_ID}和{YOUR_MACHINE_GROUP_ID}替换为实际值。
#!/bin/bash
# 替换为目标账号(账号A)的阿里云账号ID(16位数字)。
TARGET_ACCOUNT_ID="{TARGET_ACCOUNT_ID}"
# 为这批机器定义一个唯一的标识符。
# 建议使用业务名、环境名等组合,例如 "my-app-prod-servers"。
MACHINE_GROUP_ID="{YOUR_MACHINE_GROUP_ID}"
# 1. 创建授权文件目录。
sudo mkdir -p /etc/ilogtail/users
# 2. 创建授权文件,文件名即为目标账号ID,授予该账号采集权限。
sudo touch "/etc/ilogtail/users/${TARGET_ACCOUNT_ID}"
# 3. 创建用户自定义标识文件,用于在目标账号中识别和分组机器。
echo "${MACHINE_GROUP_ID}" | sudo tee /etc/ilogtail/user_defined_id > /dev/null
# 4. 重启Logtail服务使配置生效。
# 如果系统不使用systemd,请使用 'sudo /etc/init.d/ilogtaild restart'。
sudo systemctl restart ilogtail
echo "配置完成。稍后在目标账号的日志服务控制台检查机器组心跳状态。"
(可选)验证配置
检查文件是否创建成功:
sudo ls -l /etc/ilogtail/users/和sudo cat /etc/ilogtail/user_defined_id。检查Logtail服务状态:
sudo systemctl status ilogtail。查看Logtail日志,确认有心跳信息发出:
sudo tail -n 100 /var/log/ilogtail/ilogtail.LOG | grep Heartbeat。
步骤二:在目标账号中创建机器组
在目标账号的日志服务控制台中创建机器组,通过上一步设置的自定义标识来识别并管理源账号的ECS服务器。
使用目标账号(账号A)登录日志服务控制台。
在Project列表页面,单击目标Project。
在左侧导航栏中,选择资源 > 机器组。
单击创建机器组。
在创建机器组对话框中,完成以下配置:
机器组名称:自定义,例如
cross-account-app-servers。机器组类型:选择用户自定义标识。
用户自定义标识:输入在步骤一脚本中设置的
MACHINE_GROUP_ID值。确保内容完全一致,无多余的空格或换行符。
单击确定。
在机器组列表中找到新创建的机器组,单击其名称进入详情页。等待1-3分钟后刷新页面,心跳状态应显示为OK。如果心跳为FAIL,请参考本文“心跳失败(FAIL)排查”章节进行排查。
步骤三:创建并应用Logtail采集配置
创建日志采集规则,并将其应用到已创建的机器组,以启动日志采集。
在目标账号的日志服务控制台中,进入目标Project和Logstore。
选择快速接入 > 快速接入数据,然后选择正则-文本日志(或其他适合的日志类型)。
在接入数据向导的选择机器组步骤中,将上一步创建的机器组从源机器组移动到应用机器组,然后单击下一步。
配置Logtail采集规则,包括日志路径、采集模式等。
重要为实现平滑迁移并避免费用浪费,建议在确认目标账号采集稳定后,立即登录源账号(账号B)的日志服务控制台,删除或停用原有的Logtail采集配置。
完成后续的预览数据及设置索引步骤,然后单击下一步。日志服务默认开启全文索引,可根据需要配置字段索引
背景信息
您要通过Logtail采集服务器日志时,在服务器上安装Logtail后,还需配置日志服务所在阿里云账号ID为用户标识,表示该账号有权限通过Logtail采集该服务器日志。否则在机器组中会显示服务器心跳失败,导致Logtail无法采集日志到日志服务。
例如某电商公司拥有两个电商应用,部署在阿里云杭州地域的ECS集群上,并使用杭州地域的日志服务进行日志管理。
应用A部署在阿里云账号A(12****456)下的ECS集群(Linux系统)上,并使用该账号下的日志服务进行日志管理。
应用B部署在阿里云账号B(17****397)下的ECS集群(Linux系统)上,并使用该账号下的日志服务进行日志管理。
现公司业务调整,计划将两个应用的日志集中采集到阿里云账号A(12****456)下的日志服务中,即将两个应用的日志分别采集到同一个日志服务Project下的不同Logstore中。因此您需要新增一个Logtail采集配置、机器组和Logstore,用于采集和存储应用B相关的日志。应用A相关的日志采集保持不变(使用原有的Logtail采集配置、机器组和Logstore)。

步骤一:创建用户标识文件
登录阿里云账号B下的ECS服务器。
重要您需要在ECS集群B的每台ECS服务器中创建用户标识文件。
执行如下命令创建用户标识文件。
您需要配置阿里云账号A为用户标识,即创建阿里云账号A的同名文件。更多信息,请参见配置用户标识。
touch /etc/ilogtail/users/12****456
步骤二:创建用户自定义标识机器组
在ECS服务器上创建机器组的自定义用户标识文件。
重要您需要在ECS集群B的每台ECS服务器中创建机器组的用户自定义标识文件。
登录阿里云账号B下的ECS服务器。
在指定目录下创建/etc/ilogtail/user_defined_id文件并添加用户自定义标识。
例如配置用户自定义标识为
application_b,则在文件中输入application_b,并保存。文件路径说明,请参见创建用户自定义标识机器组。
在日志服务控制台上创建机器组。
使用阿里云账号A登录日志服务控制台。
在Project列表区域,单击目标Project。
在左侧导航栏中,选择。
选择机器组右侧的。
在创建机器组对话框中,配置如下参数,然后单击确定。
其中用户自定义标识需设置为您在步骤1中设置的用户自定义标识。其他参数说明,请参见创建用户自定义标识机器组。

检查机器组中的服务器心跳都为OK。
在机器组列表中,单击目标机器组。
在机器组配置页面,查看使用了相同用户自定义标识的ECS服务器及其心跳状态。
心跳为OK表示ECS服务器与日志服务的连接正常。如果显示FAIL请参见Logtail机器组无心跳。

步骤三:采集日志
使用阿里云账号A登录日志服务控制台。
单击快速接入。

在快速接入数据对话框中,选择正则-文本日志。
在接入数据向导中,选择目标Project和Logstore,单击下一步。
配置机器组配置。
使用场景选择主机场景。
安装环境选择ECS。
选中您在步骤二中创建的机器组,将该机器组从源机器组移动到应用机器组,单击下一步。
创建Logtail采集配置,单击下一步。
具体参数说明,请参见使用完整正则模式采集日志。
重要默认一个文件只能匹配一个Logtail采集配置。此时账号B下的采集未停止,账号A下的Logtail采集配置无法生效,因此您需要使用如下方式使账号A下的Logtail采集配置生效。
停止账号B下的采集,即使用账号B登录日志服务控制台,从目标机器组中移除Logtail采集配置。具体操作,请参见应用Logtail采集配置到指定机器组。
在账号A下添加强制采集配置。更多信息,请参见如何实现文件中的日志被采集多份。
此处创建Logtail采集配置成功后,请删除阿里云账号B下的原有Logtail采集配置,避免重复采集日志。如何删除,请参见删除Logtail采集配置。

预览数据及设置索引,单击下一步。
日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见创建索引。
相关操作
如果您需要将阿里云账号B下的历史数据迁移到当前的Logstore中,可以在原Logstore中创建数据加工任务,将数据复制到当前Logstore中。具体操作,请参见复制Logstore数据。
跨账号加工数据时,需使用自定义角色方式进行授权,此处以自定义角色为例。
第一个角色ARN用于授予数据加工任务使用该角色来读取源Logstore中的数据。角色权限配置说明请参见授权RAM角色只读访问源Logstore。
第二个角色ARN用于授予数据加工任务使用该角色将数据加工结果写入目标Logstore。角色权限配置说明请参见授权RAM角色写数据到目标Logstore(跨账号)。
> 创建机器组