ECI支持对接阿里云日志服务SLS,将ECI日志采集到SLS中。本文介绍如何通过环境变量自定义配置ECI日志采集,包括指定项目、日志库、机器组等。
背景信息
阿里云日志服务SLS是针对日志数据的一站式服务,您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能。更多信息,请参见日志服务简介。
日志服务按照您的实际使用量收费。关于日志服务如何计费,请参见计费概述。
默认情况下,创建ECI实例时如果开启了日志采集功能,系统会自动生成一个项目和一个机器组:
项目名称为
eci-log-default-project-{Region}-{账号ID}
。机器组名称为
eci-log-default-machine-group-{Region}
。
如果您有自定义日志采集的需求,例如需要将日志收集到自定义的项目和日志库,或者需要将不同应用对应的ECI实例加入到不同的机器组,可以通过容器的环境变量传入日志相关的自定义配置,如果日志服务没有环境变量对应的项目、日志库和机器组等,系统将自动创建。
注意事项
仅在创建ECI实例时才能通过环境变量自定义配置日志采集,更新实例时传入的日志相关环境变量不会生效。
对于自定义配置的日志Project和Logtail配置,如果后续不再使用,请及时删除相关Project和Logtail配置,避免产生不必要的费用。
配置说明
创建ECI实例时,可以通过容器的环境变量传入日志相关的自定义配置,包括项目(Project)、日志库(Logstore)、Logtail配置、机器组(Machinegroup)、分区(Shard)、日志保留时间、标签(Tag)等。可配置的环境变量如下:
日志相关环境变量名称的格式前缀为aliyun_logs_{key}
,{key}
表示日志服务中Logtail配置的名称,只能包含小写字母、数字和短划线(-)。
配置对象 | 环境变量名称 | 环境变量取值说明 |
Logtail配置 | aliyun_logs_{key} | 创建Logtail配置。取值为日志采集路径。
|
项目 | aliyun_logs_{key}_project | 指定Project。Project名称格式要求如下:
说明 项目名称必须全局唯一,创建后不可修改。如果名称格式校验不通过,将直接忽略该配置,采用默认项目。 |
日志库 | aliyun_logs_{key}_logstore | 指定Logstore。Logstore名称格式要求如下:
说明 如果名称格式校验不通过,将直接忽略该配置,采用默认日志库。默认情况下,日志库名称与Logtail配置名称 |
机器组 | aliyun_logs_{key}_machinegroup | 指定机器组。机器组名称格式要求如下:
说明 如果名称格式校验不通过,将直接忽略该配置,采用默认机器组。 |
分区 | aliyun_logs_{key}_shard | 设置日志分区数。取值范围为1~10。 Logstore读写日志必须保存在某一个分区上,默认情况下,每个日志库有2个分区。 |
日志保留时间 | aliyun_logs_{key}_ttl | 设置日志保留时间,单位为天。取值范围为1~3650。
|
标签 | aliyun_logs_{key}_tags | 绑定标签。取值格式为 |
配置示例
假设您需要自定义以下日志相关配置项:
Logtail配置和Logstore名称:标准输出日志保存到stdout-eci,文本文件日志保存到file-eci。
Project名称:project-eci-test
机器组名称:mg-eci-test
以下为示例配置,实际配置请使用您自定义的配置,确保Project名称唯一。
OpenAPI
调用CreateContainerGroup接口创建ECI实例时,可以通过Container.N.EnvironmentVar.N.Key和Container.N.EnvironmentVar.N.Value来设置环境变量。示例如下:
ContainerGroupName=test-sls
Container.1.Name=busybox
Container.1.Image=registry-vpc.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
Container.1.Command.1=/bin/sh
Container.1.Arg.1=-c
Container.1.Arg.2=mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
# 采集标准输出
Container.1.EnvironmentVar.1.Key=aliyun_logs_stdout-eci
Container.1.EnvironmentVar.1.Value=stdout
Container.1.EnvironmentVar.2.Key=aliyun_logs_stdout-eci_project
Container.1.EnvironmentVar.2.Value=project-eci-test
Container.1.EnvironmentVar.3.Key=aliyun_logs_stdout-eci_machinegroup
Container.1.EnvironmentVar.3.Value=mg-eci-test
# 采集文本文件
Container.1.EnvironmentVar.4.Key=aliyun_logs_file-eci
Container.1.EnvironmentVar.4.Value=/log/*.log
Container.1.EnvironmentVar.5.Key=aliyun_logs_file-eci_project
Container.1.EnvironmentVar.5.Value=project-eci-test
Container.1.EnvironmentVar.6.Key=aliyun_logs_file-eci_machinegroup
Container.1.EnvironmentVar.6.Value=mg-eci-test
控制台
通过弹性容器实例控制台创建ECI实例时,您可以在容器配置区域选择容器,展开该容器的高级配置,然后打开环境变量开关,添加环境变量。示例如下:
效果示例
在日志服务控制台找到目标Project,单击Project名称后进入日志库,可查看日志信息。示例如下: