You need to enable JavaScript to run this app.
文档中心
日志服务

日志服务

复制全文
下载 pdf
采集容器日志
采集容器日志(DaemonSet-Pod 环境变量方式)
复制全文
下载 pdf
采集容器日志(DaemonSet-Pod 环境变量方式)
通过 DaemonSet 方式采集容器文本日志或容器标准输出时,您可以通过 Pod 环境变量方式创建采集配置。本文档演示通过 DaemonSet-Pod 环境变量方式创建日志采集配置的操作步骤。​
背景信息​
日志服务支持通过 DaemonSet 方式采集容器日志,同时支持通过 Pod 环境变量方式创建采集配置。​
  • 通过 DaemonSet 方式采集容器日志时,支持采集容器的标准输出和容器文本日志,资源占用相对较少,配置灵活。​
  • 通过 Pod 环境变量方式创建采集配置的操作简单便捷。​
此外,LogCollector 采集容器日志时,支持单行、多行等多种采集配置,除各种采集配置默认附加的预留字段之外,日志服务还会对 LogCollector 采集到的容器日志添加以下预留字段,并默认为其创建索引。​
容器文本日志的预留字段:​
​
预留字段​
说明​
__image_name__​
镜像名称。​
__container_name__​
容器名称。​
__container_ip__​
容器或 Pod 的 IP 地址。​
__pod_name__​
Pod 名称。​
__pod_uid__​
Pod 的唯一标识。​
__namespace__​
Pod 所属的 Namespace。​
​
容器标准输出的预留字段:​
​
预留字段​
说明​
__container_source__​
数据源类型,即 stdout 或 stderr。​
__image_name__​
镜像名称。​
__container_name__​
容器名称。​
__container_ip__​
容器或 Pod 的 IP 地址。​
__pod_name__​
Pod 名称。​
__pod_uid__​
Pod 的唯一标识。​
__namespace__​
Pod 所属的 Namespace。​
​
前提条件​
限制说明​
  • 采集容器标准输出时:​
  • Docker 容器引擎仅支持 JSON 类型的日志驱动。​
  • 如果某些容器匹配了多个采集配置,那么在该容器上仅最新的采集配置生效。​
  • 采集容器内日志文件时:​
  • 容器内日志文件的采集路径目前仅支持不挂载、emptyDir 挂载和 hostPath 挂载 3 种方式。​
  • 采集路径不支持设置为软链接,因为 LogCollector 无法访问容器内日志文件的软链接,请按照容器内日志文件的真实路径配置采集路径。​
  • 在容器停止之后,LogCollector 会收到该容器的 stop 事件,并随即停止采集该容器的日志。如果 LogCollector 采集该容器的日志有一定延迟,则容器停止之前产生的部分日志可能未被采集。​
  • LogCollector 支持的容器引擎包括 Docker 和 Containerd。不同类型容器引擎的访问路径限制如下:​
  • Docker:LogCollector 通过宿主机的 /run/docker.sock 访问 Docker 容器引擎,请确保该路径存在且 LogCollector 具备访问权限。​
  • Containerd:LogCollector 通过宿主机的 /run/containerd/containerd.sock 访问 Containerd 容器引擎,请确保该路径存在且 LogCollector 具备访问权限。​
Pod 环境变量说明​
您可以在创建应用时,通过配置 Pod 环境变量来创建日志服务资源,然后采集容器标准输出或者容器文本日志。​
其中,Pod 环境变量的参数需要根据业务需求自行制定,参数说明如下:​
说明​
如下环境变量名称中的 {rule_name} 应替换为实际的采集配置名称,且该名称中不支持包含下划线(_)。​
​
环境变量​
数据类型​
是否必填​
说明​
示例​
volc_logs_{rule_name}​
String​
是​
采集的日志类型,说明如下:​
  • 采集容器标准输出时,需设置 value 为 stdout。​
  • 采集容器内日志文件中的文本日志时,需设置 value 为容器内日志文件的具体路径。​
  • 容器标准输出。​
  • ​
    - name: volc_logs_demo​
    value: stdout​
    ​
  • 容器内日志文件。​
  • ​
    - name: volc_logs_demo​
    value: /var/log/nginx/access.log​
    ​
volc_logs_{rule_name}_project​
String​
是​
日志项目名称。如果指定的日志项目不存在,日志服务会自动创建日志项目。​
​
- name: volc_logs_demo_project​
value: doc-demo​
​
volc_logs_{rule_name}_topic​
String​
否​
日志主题名称。如果指定的日志主题不存在,日志服务会自动创建日志主题,日志主题名称和 {rule_name} 变量值相同。​
​
- name: volc_logs_demo_topic​
value: pod-log​
​
volc_logs_{rule_name}_ttl​
Integer​
否​
创建日志主题时,指定日志在该日志主题中的存储时长,超过存储时长的过期日志会被自动清除。单位为天,默认为 30 天。取值范围为 1~3650,指定为 3650 天表示永久存储。​
​
- name: volc_logs_demo_ttl​
value: 90​
​
volc_logs_{rule_name}_shard​
Integer​
否​
创建日志主题时,指定日志分区的数量,取值范围为 1~10,默认创建 1 个分区。 每个分区提供的写入能力为 5MiB/s、500 次/s,读取能力为 20 MiB/s、100 次/s。请在创建日志主题时合理规划分区,创建后暂不支持修改分区数量。​
​
- name: volc_logs_demo_shard​
value: 4​
​
volc_logs_{rule_name}_shardautosplit​
Boolean​
否​
创建日志主题时,指定是否开启分区的自动分裂功能。​
  • True:当写入的数据量连续 5 分钟超过已有分区服务能力时,日志服务会根据数据量自动分裂分区以满足业务需求,但分裂后的分区数量不可超出最大分裂数。最近 15 分钟内分裂出来的新分区不会自动分裂。​
  • False(默认值):不开启分区的自动分裂。​
​
- name: volc_logs_demo_shardautosplit​
value: True​
​
volc_logs_{rule_name}_maxshard​
Integer​
否​
创建日志主题时,指定分区的最大分裂数,即分区分裂后,所有分区的最大数量。取值范围为 1~10,默认为 10。​
​
- name: volc_logs_demo_maxshard​
value: 5​
​
volc_logs_{rule_name}_tags​
String​
否​
为每条日志添加的常量字段。​
​
- name: volc_logs_demo_tags​
value: app=demo​
​
​
配置示例​
采集容器标准输出​
您可以在创建应用时,通过配置 Pod 环境变量来采集容器标准输出。​
以创建无状态负载为例,Pod 环境变量配置示例如下:​
​
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:​
- name: nginx​
image: nginx:latest​
ports:​
- containerPort: 80​
env: ​
- name: volc_logs_demo # 采集规则的名字是demo,并且采集容器标准输出​
value: stdout​
- name: volc_logs_demo_project # 日志项目的名字是doc-demo​
value: doc-demo​
- name: volc_logs_demo_topic # 日志主题的名字是pod-log​
value: pod-log​
​
采集容器内日志文件​
您可以在创建应用时,通过配置 Pod 环境变量来采集容器内日志文件。​
以创建无状态负载为例,Pod 环境变量配置示例如下:​
​
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:​
- name: nginx​
image: nginx:latest​
ports:​
- containerPort: 80​
env: ​
- name: volc_logs_demo # 采集规则名称为demo,并且采集容器内日志文件。​
value: /var/log/nginx/access.log​
- name: volc_logs_demo_project # 日志项目名称为 doc-demo。​
value: doc-demo​
- name: volc_logs_demo_topic # 日志主题名称为 pod-log。​
value: pod-log​
​
Pod 环境变量支持来自 ConfigMap 或者 Secret 挂载​
Pod 环境变量来自 ConfigMap 挂载​
  • 当 Pod 环境变量来自 ConfigMap 挂载时,如果 Pod 环境变量设置了 prefix,那么 Pod 环境变量配置示例如下:​
  • ​
    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:​
    - name: nginx​
    image: nginx:latest​
    ports:​
    - containerPort: 80​
    envFrom:​
    - configMapRef:​
    name: nginx-deployment-configmap​
    optional: false​
    prefix: volc_logs_ ​
    ---​
    apiVersion: v1​
    kind: ConfigMap​
    metadata:​
    name: nginx-deployment-configmap​
    namespace: default​
    data:​
    logs-demo: stdout​
    logs-demo_project: doc-demo​
    logs-demo_topic: pod-log​
    ​
  • 当 Pod 环境变量来自 ConfigMap 挂载,如果 Pod 环境变量没有设置 prefix,那么 Pod 环境变量配置示例如下:​
  • ​
    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:​
    - name: nginx​
    image: nginx:latest​
    ports:​
    - containerPort: 80​
    envFrom:​
    - configMapRef:​
    name: nginx-deployment-configmap​
    optional: false ​
    ---​
    apiVersion: v1​
    kind: ConfigMap​
    metadata:​
    name: nginx-deployment-configmap​
    namespace: default​
    data:​
    volc_logs_logs-demo: stdout​
    volc_logs_logs-demo_project: doc-demo​
    volc_logs_logs-demo_topic: pod-log​
    ​
Pod 环境变量来自 Secret 挂载​
  • 当 Pod 环境变量来自 Secret 挂载,如果 Pod 环境变量设置了 prefix,那么 Pod 环境变量配置示例如下:​
  • ​
    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:​
    - name: nginx​
    image: nginx:latest​
    ports:​
    - containerPort: 80​
    envFrom:​
    - secretRef:​
    name: nginx-deployment-secret​
    optional: false​
    prefix: volc_logs_ ​
    ​
    ---​
    apiVersion: v1​
    kind: Secret​
    metadata:​
    name: nginx-deployment-secret​
    namespace: default​
    type: Opaque​
    data:​
    logs-demo: c3Rkb3V0 # base64编码的stdout​
    logs-demo_project: ZG9jLWRlbW8= # base64编码的doc-demo​
    logs-demo_topic: cG9kLWxvZw== # base64编码的pod-log​
    ​
  • 当 Pod 环境变量来自 Secret 挂载,如果 Pod 环境变量没有设置 prefix,那么 Pod 环境变量配置示例如下:​
  • ​
    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:​
    - name: nginx​
    image: nginx:latest​
    ports:​
    - containerPort: 80​
    envFrom:​
    - secretRef:​
    name: nginx-deployment-secret​
    optional: false ​
    ---​
    apiVersion: v1​
    kind: Secret​
    metadata:​
    name: nginx-deployment-secret​
    namespace: default​
    type: Opaque​
    data:​
    volc_logs_logs-demo: c3Rkb3V0 # base64编码的stdout​
    volc_logs_logs-demo_project: ZG9jLWRlbW8= # base64编码的doc-demo​
    volc_logs_logs-demo_topic: cG9kLWxvZw== # base64编码的pod-log​
    ​
后续步骤​
  • 创建采集配置之后,LogCollector 会根据指定规则开始监听容器内日志文件或容器标准输出并采集日志,日志数据将保存在指定的日志主题中。​
  • 日志索引默认为关闭状态,您需要为日志主题开启索引功能,并配置索引,才能在控制台中对采集到的日志数据进行查询分析。​
​
最近更新时间:2026.08.26 16:00:46
这个页面对您有帮助吗?
有用
有用
无用
无用