本文介绍跨阿里云账号采集日志的操作步骤。
背景信息
如果您的服务器是与日志服务属于不同账号的ECS服务器、其他云厂商的服务器或自建IDC时,要通过Logtail采集该服务器日志您需要在服务器上安装Logtail后,配置日志服务所在阿里云账号ID为用户标识,表示该账号有权限通过Logtail采集该服务器日志。否则在机器组中会无法显示服务器IP或显示服务器心跳失败,导致Logtail无法采集日志到日志服务。
例如某电商公司拥有两个电商应用,均部署在阿里云杭州地域的集群上,并使用杭州地域的日志服务进行日志管理。
应用A部署在阿里云账号A(12****456)下的集群(Linux系统)上,并使用该账号下的日志服务进行日志管理。
应用B部署在阿里云账号B(17****397)下的集群(Linux系统)上,并使用该账号下的日志服务进行日志管理。
现公司业务调整,计划将两个应用的日志集中统一采集到阿里云账号A(12****456)下的日志服务中,即将两个应用的日志分别采集到同一个日志服务Project下的不同Logstore中。
跨账号采集原理
实现账号A跨账号采集B账号集群日志的关键点在于让A账号的日志服务感知到B账号集群的存在,在同地域的情况下只需要通过B账号集群的机器授权A账号,允许A账号采集就可以实现。
因此您需要在B集群中配置账号A的UID对A账号进行授权,并在A账号的Project中新增一个Logstore、机器组和Logtail采集配置,用于采集和存储应用B相关的日志。应用A相关的日志采集保持不变(使用原有的Logstore、机器组和Logtail采集配置)。下面我们将分主机环境和K8s环境向您展示具体的操作步骤。
主机环境操作步骤
步骤一:创建用户标识文件
登录阿里云账号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,单击下一步。
在创建机器组向导中,单击使用现有机器组。
在机器组配置向导中,选中您在步骤二中创建的机器组,将该机器组从源机器组移动到应用机器组,单击下一步。
创建Logtail采集配置,单击下一步。
具体参数说明,请参见使用完整正则模式采集日志。
重要由于账户A需要采集的文件与原来账号B是相同的,且默认一份文件只能生效一个采集配置,因此需要停止账号B的采集或添加强制采集配置(请参考如何实现文件中的日志被采集多份)使账户A的采集配置生效。
此处创建Logtail采集配置成功后,请删除阿里云账号B下的原有Logtail采集配置,并关闭强制采集配置,避免重复采集日志。如何删除,请参见删除Logtail采集配置。
预览数据及设置索引,单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见配置索引。
K8s环境操作步骤
步骤一:设置阿里云账号为用户标识
使用阿里云账号B登录容器服务管理控制台。
设置阿里云账号A为用户标识。
在左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群。
在左侧导航栏中,选择配置管理 > 配置项。
选择命名空间为kube-system,然后在配置项列表中单击alibaba-log-configuration对应的编辑。
在编辑面板中,完成如下操作,然后单击确定。在log-ali-uid配置项中增加阿里云账号A的ID,多个账号之间使用半角逗号(,)相隔,例如
17****397,12****456
。然后记录log-machine-group配置项的值(例如k8s-group-cc47****54428
),在创建机器组时需设置用户自定义标识为该值。
重启logtail-ds,使配置生效。在logtail-ds详情页面,确认各个容器组的状态为Running且创建时间为您更新配置后的时间。
在左侧导航栏中,选择工作负载 > 进程守护集。
在守护进程集列表中,单击logtail-ds对应的编辑。
在环境变量区域,单击新增。
新增一个任意内容的自定义变量(例如
random_id:439157431651471905349
)。单击更新。
步骤二:创建机器组
使用阿里云账号A登录日志服务控制台。
在Project列表区域,单击目标Project。
在左侧导航栏中,选择资源 > 机器组。
选择机器组右侧的 > 创建机器组。
在创建机器组对话框中,配置如下参数,然后单击确定。其中用户自定义标识需设置为您在步骤一:设置阿里云账号为用户标识中获取的机器组标识(例如
k8s-group-cc47****54428
)。其他参数说明,请参见创建用户自定义标识机器组。检查机器组中的服务器心跳都为OK。
在机器组列表中,单击目标机器组。
在机器组配置页面,查看容器节点(ECS)的心跳状态。心跳为OK表示容器节点与日志服务的连接正常。如果显示FAIL请参见Logtail机器组无心跳。
步骤三:创建Logtail采集配置
使用阿里云账号A登录日志服务控制台。
在数据接入区域,单击Kubernetes-文件。
选择目标Project和Logstore,单击下一步。
单击使用现有机器组。
选中您在步骤二:创建机器组中所创建的机器组,将该机器组从源机器组移动到应用机器组,单击下一步。
设置Logtail采集配置,单击下一步。具体参数说明,请参见通过DaemonSet-控制台方式采集容器文本日志。
重要由于账户A需要采集的文件与原来账号B是相同的,且默认一份文件只能生效一个采集配置,因此需要停止账户B的采集或添加强制采集配置(请参考如何实现文件中的日志被采集多份)使账户A的采集配置生效。
此处创建Logtail采集配置成功后,请删除阿里云账号B下的原有Logtail采集配置,并关闭强制采集配置,避免重复采集日志。如何删除,请参见删除Logtail采集配置。
预览数据及设置索引,单击下一步。日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见配置索引。
相关操作-停止数据采集
如果您需要停止阿里云账号B下的数据采集,可以将其Logtail配置与ECS集群B所在机器组的关联接触,具体操作如下:
在账号A的采集配置完成后等待2分钟,确保配置已经下发。
点击按钮。
选择要暂停的logtail配置。
点击修改。
在应用机器组中选中要摘除的机器组。
点击“<”。
点击保存。
若A账号的采集配置在此操作2分钟后仍然没有生效,即未能采集到数据,请立刻恢复B账号的采集配置,避免日志采集丢失。
相关操作-历史数据迁移
如果您需要将阿里云账号B下的历史数据迁移到当前的Logstore中,可以在原Logstore中创建数据加工任务,将数据复制到当前Logstore中。具体操作,请参见复制Logstore数据。
跨账号加工数据时,需使用自定义角色或密钥方式进行授权,此处以自定义角色为例。
第一个角色ARN用于授予数据加工任务使用该角色来读取源Logstore中的数据。角色权限配置说明请参见授予RAM角色源Logstore读权限。
第二个角色ARN用于授予数据加工任务使用该角色将数据加工结果写入目标Logstore。角色权限配置说明请参见授予RAM角色目标Logstore写权限(跨账号)。