自定义配置ECI日志采集
ECI支持对接阿里云日志服务SLS,将ECI日志采集到SLS中。本文介绍如何自定义配置ECI日志采集,包括指定项目、日志库、机器组等。
背景信息
阿里云日志服务SLS是针对日志数据的一站式服务,您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能。更多信息,请参见日志服务简介。
日志服务支持按量付费,即按照您的实际使用量收费。关于日志服务如何计费,请参见计费概述。
功能概述
默认情况下,如果开启了日志采集,每个地域下默认会生成一个项目和一个机器组:
项目名称为
eci-log-default-project-{Region}-{账号ID}
。机器组名称为
eci-log-default-machine-group-{Region}
。
根据业务需要,您可能需要将ECI实例的日志收集到自定义项目下的自定义日志库里。对于不同的应用和服务,您可能还需要将ECI实例加入不同的机器组。对于项目、日志库和机器组等日志相关的自定义配置,可以通过以下两种方式实现:
通过ECI的环境变量进行配置
通过容器的环境变量传入日志相关的自定义配置,如果日志服务侧没有环境变量对应的项目、日志库和机器组等,系统将自动创建。
重要仅在创建ECI实例时才能通过环境变量自定义配置日志采集,更新实例时传入的日志相关环境变量不会生效。
通过日志服务SLS的控制台或API进行配置
通过日志服务SLS的控制台或者openAPI来创建自定义的项目、日志库和机器组等。创建完成后,为日志库创建自定义Config并应用到新的机器组后,ECI日志即可输出到新的日志库。
本文主要介绍如何通过环境变量自定义配置ECI日志采集。
配置说明
通过CreateContainerGroup创建ECI实例时,可以通过容器的环境变量传入日志相关的自定义配置,例如项目(Project)、日志库(Logstore)、Logtail配置、机器组(Machinegroup)、分区(Shard)、日志保留时间、标签(Tag)等。传入自定义配置时,各项配置的格式和要求如下:
Logtail配置
自定义设置Logtail配置的方式如下:
-name: aliyun_logs_{配置名称}
-value: {日志采集路径}
对于标准输出,日志采集路径可以设置为以下几种:
stdout:采集正常输出和错误信息。
stderr-only:只采集错误信息,不采集正常输出。
stdout-only:只采集正常输出,不采集错误信息。
项目
自定义设置项目的方式如下:
-name: aliyun_logs_{配置名称}_project
-value: {项目名称}
项目名称的格式要求如下:
长度为3~63个字符。
仅支持小写字母、数字和短划线(-),且必须以小写字母和数字作为开头和结尾。
如果名称格式校验不通过,将直接忽略该配置,采用默认项目。
日志库
默认情况下,日志库名称与Logtail配置名称相同。
自定义设置日志库的方式如下:
-name: aliyun_logs_{配置名称}_logstore
-value: {日志库名称}
日志库名称的格式要求如下:
长度为3~63个字符。
仅支持小写字母、数字、短划线(-)和下划线(_),且必须以小写字母和数字作为开头和结尾。
如果名称格式校验不通过,将直接忽略该配置,采用默认日志库。
机器组
自定义设置机器组的方式如下:
-name: aliyun_logs_{配置名}_machinegroup
-value: {机器组名称}
机器组名称的格式要求如下:
长度为3~63个字符。
仅支持小写字母、数字、短划线(-)和下划线(_),且必须以小写字母和数字作为开头和结尾。
如果名称格式校验不通过,将直接忽略该配置,采用默认机器组。
分区
Logstore读写日志必须保存在某一个分区上,默认情况下,每个日志库有2个分区。
自定义设置分区的方式如下:
-name: aliyun_logs_{配置名}_shard
-value: {分区数值} #默认为2,取值范围为1~10。
日志保留时间
默认情况下,日志在Logstore中可以保留90天。
自定义设置保留时间的方式如下:
-name: aliyun_logs_{配置名}_ttl
-value: {时间天数} #单位为天,默认为90,取值范围为1~3650。
标签
自定义设置标签的方式如下:
-name: aliyun_logs_{配置名}_tags
-value: {Tag名称}={Tag值}
配置示例
假设您需要自定义以下日志相关配置项:
日志库和Logtail配置:标准输出日志保存到stdout-test,文本文件日志保存到file-test。
项目:eci-test-project
机器组:eci-test-mg
则配置示例如下:
#设置标准输出日志配置
'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实例的日志能被采集到对应项目的对应日志库中。
如果之前没有创建过日志库和Logtail配置,系统会根据传入的环境变量自动创建。
如果使用之前已有的日志库和Logtail配置,需确保Logtail配置已开启是否为Docker文件,否则无法采集日志。
说明如果不想开启是否为Docker文件,您需要手动将日志目录挂载到EmptyDir Volume下,才可以采集日志。
配置效果如下:
标准输出
文本文件