ECI支持对接阿里云日志服务SLS,将ECI日志采集到SLS中。本文介绍如何自定义配置ECI日志采集,包括指定项目、日志库、机器组等。
背景信息
在不同场景下使用ECI时,如果开启了日志采集,对应的默认日志相关配置如下:
如果使用OpenAPI,则每个地域下默认会生成一个项目和一个机器组。
项目名称为
eci-log-default-project-{Region}-{账号ID}
。机器组名称为
eci-log-default-machine-group-{Region}
。
如果使用K8s,则每个集群下默认会生成一个项目和一个机器组。
项目名称为
k8s-log-{K8s集群ID}
。机器组名称为
k8s-group-{K8s集群ID}
。
根据业务需要,您可能需要将ECI实例的日志收集到自定义项目下的自定义日志库里。对于不同的应用和服务,您可能还需要将ECI实例加入不同的机器组。对于项目、日志库和机器组等日志相关的自定义配置,可以通过以下两种方式实现:
通过ECI的环境变量进行配置
通过容器的环境变量传入日志相关的自定义配置,系统将自动创建对应的项目、日志库和机器组等。
通过日志服务SLS的控制台或API进行配置
通过日志服务SLS的控制台或者OpenAPI来创建自定义的项目、日志库和机器组等。创建完成后,为日志库创建自定义Config并应用到新的机器组后,ECI日志即可输出到新的日志库。
本文主要介绍如何通过环境变量自定义配置ECI日志采集。
配置说明
通过CreateContainerGroup创建ECI实例时,如果开启了日志采集(通过SlsEnable参数开启),则可以通过容器的环境变量传入日志相关的自定义配置,例如项目、日志库、配置、机器组、分区、日志保留时间等。传入自定义配置时,各项配置的格式和要求如下:
配置(Logtail配置)
自定义设置配置的方式如下:
-name: aliyun_logs_{配置名称} -value: {日志采集路径}
注意对于标准输出,必须将日志采集路径设置为stdout。
项目(Project)
自定义设置项目的方式如下:
-name: aliyun_logs_{配置名称}_project -value: {项目名称}
项目名称的格式要求如下:
长度为3~63个字符。
仅支持小写字母、数字和短划线(-),且必须以小写字母和数字作为开头和结尾。
说明如果名称格式校验不通过,将直接忽略该配置,采用默认项目。
日志库(Logstore)
默认情况下,日志库名称与配置名称相同。自定义设置日志库的方式如下:
-name: aliyun_logs_{配置名称}_logstore -value: {日志库名称}
日志库名称的格式要求如下:
长度为3~63个字符。
仅支持小写字母、数字、短划线(-)和下划线(_),且必须以小写字母和数字作为开头和结尾。
说明如果名称格式校验不通过,将直接忽略该配置,采用默认日志库。
机器组(Machinegroup)
自定义设置机器组的方式如下:
-name: aliyun_logs_{配置名}_machinegroup -value: {机器组名称}
机器组名称的格式要求如下:
长度为3~63个字符。
仅支持小写字母、数字、短划线(-)和下划线(_),且必须以小写字母和数字作为开头和结尾。
说明如果名称格式校验不通过,将直接忽略该配置,采用默认机器组。
分区(Shard)
Logstore读写日志必须保存在某一个分区上,默认情况下,每个日志库有2个分区。自定义设置分区的方式如下:
-name: aliyun_logs_{配置名}_shard -value: {分区数值} #默认为2,取值范围为1~10。
日志保留时间
默认情况下,日志在Logstore中可以保留90天。自定义设置保留时间的方式如下:
-name: aliyun_logs_{配置名}_ttl -value: {时间天数} #单位为天,默认为90,取值范围为1~3650。
标签(Tag)
自定义设置标签的方式如下:
-name: aliyun_logs_{配置名}_tags -value: {Tag名称}={Tag值}
配置示例
假设您需要自定义以下日志相关配置项:
日志库和Logtail配置:标准输出日志保存到stdout-test,文本文件日志保存到file-test。
项目:eci-test-project
机器组:eci-test-mg
则配置示例如下:
#开启日志采集
'SlsEnable': 'true',
#设置标准输出日志配置
'Container.1.EnvironmentVar.1.Key': 'aliyun_logs_stdout-test',
'Container.1.EnvironmentVar.1.Value': 'stdout',
'Container.1.EnvironmentVar.2.Key': 'aliyun_logs_stdout-test_project',
'Container.1.EnvironmentVar.2.Value': 'eci-test-project',
'Container.1.EnvironmentVar.3.Key': 'aliyun_logs_stdout-test_machinegroup',
'Container.1.EnvironmentVar.3.Value': 'eci-test-mg',
#设置文本文件日志配置
'Container.1.EnvironmentVar.4.Key': 'aliyun_logs_file-test',
'Container.1.EnvironmentVar.4.Value': '/log/*.log',
'Container.1.EnvironmentVar.5.Key': 'aliyun_logs_file-test_project',
'Container.1.EnvironmentVar.5.Value': 'eci-test-project',
'Container.1.EnvironmentVar.6.Key': 'aliyun_logs_file-test_machinegroup',
'Container.1.EnvironmentVar.6.Value': 'eci-test-mg',
创建ECI实例时,按上述配置开启日志采集并传入环境变量后,该ECI实例的日志能被采集到对应项目的对应日志库中。配置效果如下:
标准输出
文本文件