将其他阿里云账号ECS上的日志集中采集到日志服务

介绍如何将一个阿里云账号(源账号)下的ECS服务器日志,统一采集到另一个阿里云账号(目标账号)的日志服务Project中。该方案通过在源ECS上配置授权,允许目标账号的Logtail进行日志采集,实现日志的集中管理和分析。

快速入门

业务场景说明

在多账号的云环境中,集中管理日志的常见原因如下:

  • 统一运维监控:将分散在不同业务账号下的应用日志、系统日志集中存储,便于统一的监控、告警和故障排查。

  • 安全合规审计:将所有操作日志、安全日志归集到专用的安全或审计账号,满足合规性要求。

  • 业务迁移:在业务从一个阿里云账号迁移到另一个账号的过程中,将日志采集任务过渡到新账号。

介绍如何将日志采集任务从源账号迁移至目标账号。

方案架构

该方案基于文件授权的信任模型。在源账号的ECS服务器上创建特定的授权和标识文件,即可授予目标账号通过Logtail采集该服务器日志的权限。

架构图

工作流程如下:

  1. 在源账号(账号B)的每台ECS服务器上,创建一个以目标账号(账号A)的UID命名的授权文件。

  2. 同时,在ECS上创建一个包含自定义标识符的文件,用于在目标账号中对这批机器进行分组。

  3. ECS上的Logtail客户端识别到授权文件后,会向目标账号(账号A)的日志服务发送心跳,并上报其自定义标识。

  4. 在目标账号(账号A)的日志服务控制台,创建一个使用该自定义标识的机器组。心跳正常的ECS将自动加入该机器组

  5. 为该机器组应用Logtail采集配置,Logtail将根据配置采集日志并发送到目标账号(账号A)的Logstore。

重要

跨账号加工数据时,需使用自定义角色进行授权:

实施步骤

步骤一:在源ECS上配置授权与标识

在源账号的ECS服务器上创建授权文件和标识文件,以允许目标账号采集日志,并为后续创建机器组提供唯一标识。

  1. 登录源账号下的ECS服务器。

  2. 执行以下脚本完成授权与标识配置。将脚本中的{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 "配置完成。稍后在目标账号的日志服务控制台检查机器组心跳状态。"
  1. (可选)验证配置

    • 检查文件是否创建成功: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服务器。

  1. 使用目标账号(账号A)登录日志服务控制台

  2. Project列表页面,单击目标Project。

  3. 在左侧导航栏中,选择资源 > 机器组

  4. 单击创建机器组

  5. 创建机器组对话框中,完成以下配置:

    • 机器组名称:自定义,例如 cross-account-app-servers

    • 机器组类型:选择用户自定义标识

    • 用户自定义标识:输入在步骤一脚本中设置的MACHINE_GROUP_ID值。确保内容完全一致,无多余的空格或换行符。

  6. 单击确定

  7. 机器组列表中找到新创建的机器组,单击其名称进入详情页。等待1-3分钟后刷新页面,心跳状态应显示为OK。如果心跳FAIL,请参考本文“心跳失败(FAIL)排查”章节进行排查。

步骤三:创建并应用Logtail采集配置

创建日志采集规则,并将其应用到已创建的机器组,以启动日志采集。

  1. 在目标账号的日志服务控制台中,进入目标ProjectLogstore。

  2. 选择快速接入 > 快速接入数据,然后选择正则-文本日志(或其他适合的日志类型)。

  3. 接入数据向导的选择机器组步骤中,将上一步创建的机器组源机器组移动到应用机器组,然后单击下一步

  4. 配置Logtail采集规则,包括日志路径采集模式等。

    重要

    为实现平滑迁移并避免费用浪费,建议在确认目标账号采集稳定后,立即登录源账号(账号B)的日志服务控制台,删除或停用原有的Logtail采集配置。

  5. 完成后续的预览数据及设置索引步骤,然后单击下一步。日志服务默认开启全文索引,可根据需要配置字段索引

背景信息

您要通过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)。

架构图

步骤一:创建用户标识文件

  1. 登录阿里云账号B下的ECS服务器。

    重要

    您需要在ECS集群B的每台ECS服务器中创建用户标识文件。

  2. 执行如下命令创建用户标识文件。

    您需要配置阿里云账号A为用户标识,即创建阿里云账号A的同名文件。更多信息,请参见配置用户标识

    touch /etc/ilogtail/users/12****456

步骤二:创建用户自定义标识机器组

  1. ECS服务器上创建机器组的自定义用户标识文件。

    重要

    您需要在ECS集群B的每台ECS服务器中创建机器组的用户自定义标识文件。

    1. 登录阿里云账号B下的ECS服务器。

    2. 在指定目录下创建/etc/ilogtail/user_defined_id文件并添加用户自定义标识。

      例如配置用户自定义标识为application_b,则在文件中输入application_b,并保存。文件路径说明,请参见创建用户自定义标识机器组

  2. 在日志服务控制台上创建机器组。

    1. 使用阿里云账号A登录日志服务控制台

    2. Project列表区域,单击目标Project。

    3. 在左侧导航栏中,选择资源 > 机器组

    4. 选择机器组右侧的机器组 > 创建机器组

    5. 创建机器组对话框中,配置如下参数,然后单击确定

      其中用户自定义标识需设置为您在步骤1中设置的用户自定义标识。其他参数说明,请参见创建用户自定义标识机器组机器组

  3. 检查机器组中的服务器心跳都为OK。

    1. 在机器组列表中,单击目标机器组。

    2. 机器组配置页面,查看使用了相同用户自定义标识的ECS服务器及其心跳状态。

      心跳OK表示ECS服务器与日志服务的连接正常。如果显示FAIL请参见Logtail机器组无心跳机器组状态

步骤三:采集日志

  1. 使用阿里云账号A登录日志服务控制台

  2. 单击快速接入

    image

  3. 快速接入数据对话框中,选择正则-文本日志

  4. 接入数据向导中,选择目标ProjectLogstore,单击下一步

  5. 配置机器组配置

    1. 使用场景选择主机场景

    2. 安装环境选择ECS

    3. 选中您在步骤二中创建的机器组,将该机器组从源机器组移动到应用机器组,单击下一步

  6. 创建Logtail采集配置,单击下一步

    具体参数说明,请参见使用完整正则模式采集日志

    重要
    • 默认一个文件只能匹配一个Logtail采集配置。此时账号B下的采集未停止,账号A下的Logtail采集配置无法生效,因此您需要使用如下方式使账号A下的Logtail采集配置生效。

    • 此处创建Logtail采集配置成功后,请删除阿里云账号B下的原有Logtail采集配置,避免重复采集日志。如何删除,请参见删除Logtail采集配置

    logtail采集配置

  7. 预览数据及设置索引,单击下一步

    日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见创建索引

相关操作

如果您需要将阿里云账号B下的历史数据迁移到当前的Logstore中,可以在原Logstore中创建数据加工任务,将数据复制到当前Logstore中。具体操作,请参见复制Logstore数据

重要

跨账号加工数据时,需使用自定义角色方式进行授权,此处以自定义角色为例。