容器服务集群基于火山引擎日志服务,允许您通过配置容器的环境变量,快速完成集群中容器的日志采集,包括标准输出日志和文档路径日志。本文为您介绍如何通过配置容器的环境变量,实现容器日志的采集。
功能概述
容器服务支持在创建容器时,使用环境变量配置该容器的日志采集功能,将指定的日志采集到日志服务产品中。支持的配置参数如下:
- 日志采集类型:包括 容器标准输出 和 容器文件路径。当日志采集模式为 容器文件路径 时,允许指定日志文件的具体路径。
- 日志项目:日志项目是日志数据的项目管理单元,用于资源隔离和控制,您可以使用日志项目对应一个应用、业务或产品。
- 日志主题:日志主题是日志数据的采集、读写单元。一个日志项目可以包括多个日志主题,您可以使用日志主题对容器日志进行细分。
- 日志最大存储时间:日志的保存时间,可以指定具体的保存时间,或永久保存。
- 日志分区数:日志分区是日志读写的基本单元,所有日志数据都保存在分区中。每个分区提供一定的读写能力,建议根据实际业务需求合理规划日志分区的数量。
- 自动分裂日志分区和分裂数:允许自动分裂日志分区,并配置分裂数,扩大日志主题的整体读写能力。
- 日志标识:允许对日志进行标识。
使用限制
- 通过环境变量来配置容器日志时,允许系统自动创建 日志项目 和 日志主题。该操作可能会导致使用过程中超过资源配额。因此在使用该功能前,建议您首先在日志服务的配额中心 申请资源配额。
说明
日志服务产品的默认资源配额,请参见 使用限制。
- 删除容器时,系统不会自动删除容器对应的 日志项目 和 日志主题。如需删除,您需要登录日志服务控制台,手工删除,详情请参见 删除日志项目 和 删除日志主题。
前提条件
- 已开通日志服务。若未开通,请登录 日志服务控制台,根据控制台向导提示,开通服务。
- 已安装 log-collector 组件,并升级到 v1.2.4 及以上版本,详情请参见 安装组件。
- (可选)已在日志服务中创建 日志项目 和 日志主题。详细操作,请参见 日志项目 和 日志主题。
说明
您可以在配置创建容器前,创建 日志项目 和 日志主题。也可以创建容器时,使用环境变量自动创建 日志项目 和 日志主题。
配置日志采集
采集标准输出日志
您可以在创建应用时,通过配置环境变量来采集容器标准输出的日志。以创建无状态负载为例,操作步骤如下:
- 登录 容器服务控制台。
- 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
- 单击集群名称,进入集群配置页面。
- 在左侧菜单栏中选择 工作负载 > 无状态负载。 单击 使用 Yaml 创建,部署应用。
apiVersion: apps/v1
kind: Deployment
metadata:
name: log-app-demo # 应用的名称
namespace: default # 应用所在的命名空间
spec:
replicas: 1 # 应用的副本数
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- env:
- name: volc_logs_demo # 采集容器标准输出的日志
value: stdout
- name: volc_logs_demo_project # 指定日志项目
value: doc-demo
- name: volc_logs_demo_topic # 指定日志主题
value: pod-log
name: nginx # 容器名称
image: nginx:latest # 应用镜像的地址和版本
ports:
- containerPort: 80 # 容器端口
- 单击 确定,完成配置。
采集文件路径日志
您可以在创建应用时,通过配置环境变量来采集容器指定路径的日志。以创建无状态负载为例,操作步骤如下:
- 登录 容器服务控制台。
- 在左侧菜单栏中选择 集群,并在右侧集群列表中选择目标集群。
- 单击集群名称,进入集群配置页面。
- 在左侧菜单栏中选择 工作负载 > 无状态负载。 单击 使用 Yaml 创建,部署应用。
apiVersion: apps/v1
kind: Deployment
metadata:
name: log-app-demo # 应用的名称
namespace: default # 应用所在的命名空间
spec:
replicas: 1 # 应用的副本数
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- env:
- name: volc_logs_demo # 采集容器指定路径文件的日志
value: /var/log/nginx/access.log
- name: volc_logs_demo_project # 指定日志项目
value: doc-demo
- name: volc_logs_demo_topic # 指定日志主题
value: pod-log
name: nginx # 容器名称
image: nginx:latest # 应用镜像的地址和版本
ports:
- containerPort: 80 # 容器端口
- 单击 确定,完成配置。
查看日志
应用创建完成后,您可以登录日志服务控制台,查看和检索日志。
- 登录 日志服务控制台。
- 在左侧菜单栏中选择 日志服务 > 日志项目管理。在日志项目列表中,单击目标日志项目名称,进入日志项目详情。
- 在左侧菜单栏中选择 详情,在右侧 日志主题 列表内,可以查到对应的日志主题。
- 在左侧菜单栏中选择 检索分析,并选择对应的 日志主题,即可对容器日志进行检索和分析。
环境变量说明
容器日志采集相关的环境变量,如下表所示。
说明
- 使用环境变量配置容器日志采集时,默认采集方式为极简模式。如需解析日志内容,建议使用 日志服务控制台。
- 下表环境变量中的
{key}
表示日志服务中采集配置的名称,需保持在集群内唯一。
环境变量 | 说明 | 示例 | 注意事项 |
---|
volc_logs_{key} | 必选。配置日志采集模式,取值为: - stdout:表示采集容器标准输出日志。
- 配置日志文件的具体路径,例如
/var/log/nginx/access.log ,表示采集指定路径的日志。
value 为字符串形式,取值范围为 3~63。仅支持小写英文字母、数字和- ,且不能以- 开头或结尾。
| - name: volc_logs_demo
value: stdout
- name: volc_logs_demo
value: /var/log/nginx/access.log
| 如果volc_logs_{key}_topic 日志主题不存在,则会自动创建名为{key} 的日志主题。 |
volc_logs_{key}_project | 必选。指定日志服务的 日志项目。 value 为字符串形式,取值范围为 3~63。仅支持小写英文字母、数字和- ,且不能以- 开头或结尾。
| - name: volc_logs_demo_project
value: doc-demo
| - 日志项目需要与集群在相同的地域。
- 如果日志项目已存在,则使用已存在的日志项目。
- 如果日志项目不存在,则会自动创建日志项目。
|
volc_logs_{key}_topic | 可选。指定日志服务的 日志主题。 value 为字符串形式,取值范围为 3~63。仅支持小写英文字母、数字和- ,且不能以- 开头或结尾。
| - name: volc_logs_demo_topic
value: pod-log
| - 如果日志主题已存在,则使用已存在的日志主题。
- 如果日志主题不存在,则会自动创建日志主题。
|
volc_logs_{key}_tags | 可选。配置日志标签,用于对日志进行标识。 | - name: volc_logs_demo_tags
value: app=demo
| 无 |
volc_logs_{key}_shard | 可选。创建日志主题时,日志分区数。
value 为整数形式,取值范围为 1~10。若未配置该环境变量,默认为 1。 | - name: volc_logs_demo_shard
value: 4
| 如果日志主题已经存在,则该参数不生效。 |
volc_logs_{key}_shardautosplit | 可选。创建日志主题时,是否自动分裂日志分区。取值为: - True:(默认)表示自动分裂日志分区。
- False:表示不自动分裂日志分区。
| - name: volc_logs_demo_shardautosplit
value: True
| 如果日志主题已经存在,则该参数不生效。 |
volc_logs_{key}_maxshard | 可选。创建日志主题时,日志分区的最大分裂数。
value 为整数形式,取值范围为 1~10。若未配置该环境变量,默认值为 10。 说明 当volc_logs_{key}_shardautosplit 为False 时,该参数不生效。 | - name: volc_logs_demo_maxshard
value: 5
| 如果日志主题已经存在,则该参数不生效。 |
volc_logs_{key}_ttl | 可选。创建日志主题时,日志的保存时间。
value 为整数形式,取值范围为 1~3650,单位为 天。取值 3650 表示日志永久保存。若未配置该环境变量,默认值为 30。 | - name: volc_logs_demo_ttl
value: 90
| 如果日志主题已经存在,则该参数不生效。 |