全部产品
Search
文档中心

容器服务 ACK:自定义配置ECI日志采集

更新时间:May 19, 2022

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实例的日志能被采集到对应项目的对应日志库中。配置效果如下:

  • 标准输出

    标准输出
  • 文本文件

    文本文件