文档

自定义配置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文件,否则无法采集日志。

    日志采集3
    说明

    如果不想开启是否为Docker文件,您需要手动将日志目录挂载到EmptyDir Volume下,才可以采集日志。

配置效果如下:

  • 标准输出

    标准输出
  • 文本文件

    文本文件
  • 本页导读 (1)
文档反馈