You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
日志
通过 Sidecar 方式采集 VCI 容器日志
复制全文
下载 pdf
通过 Sidecar 方式采集 VCI 容器日志
弹性容器实例支持通过 Sidecar 方式采集容器日志。本文介绍如何通过 Sidecar 方式部署容器日志采集 Agent,采集 VCI 容器的标准输出日志和文件日志。​
前提条件​
  • 已在日志服务中创建 日志项目 和 日志主题。详细操作,请参见 日志项目 和 日志主题。​
  • 在日志项目中创建采集配置,关联上述创建的机器组。详细操作,请参见 采集容器日志。​
操作步骤​
本文以在 Sidecar 容器使用火山引擎日志服务提供的日志采集组件 LogCollector 为例。若您有自己的日志采集组件,可自行实现 Sidecar 容器配置。​
使用 Sidecar 方式采集容器日志时,相关可配置的参数注解(Annotation)说明,请参见 Pod Annotation 说明。​
  1. 创建 Sidecar 容器配置文件。示例logcollector-config.yaml的代码如下:​
注意​
按照下方参数说明表和 YAML 文件中的注释说明,将占位符变量(${占位符})替换为您业务相关的实际值。​
  • ​
    apiVersion: v1​
    kind: ConfigMap​
    metadata:​
    name: logcollector-config​
    namespace: ${namespace}​
    data:​
    filebeat.yml: |​
    filebeat:​
    is_sidecar: true​
    ​
    output.tls:​
    endpoint: ${volc_tls_endpoint}​
    region: ${volc_region}​
    secret_id: ${your_ak}​
    secret_key: ${your_sk}​
    label: ${your_labels}​
    ​
    # 以下代码片段为日志输出配置。​
    # 详情请见开源文档 https://www.elastic.co/guide/en/beats/filebeat/7.17/configuration-logging.html。​
    logging.level: info​
    logging.to_files: true ​
    logging.files:​
    name: filebeat​
    keepfiles: 7​
    permissions: 0644​
    ​
  • 参数说明如下:​
  • ​
    变量​
    示例​
    说明​
    namespace​
    default​
    Sidecar 容器所在的命名空间。​
    endpoint​
    https://tls-cn-beijing.ivolces.com​
    日志服务连接域名,即服务地址。日志服务支持的地域及对应服务地址,请参见 服务地址。​
    region​
    cn-beijing​
    采集 VCI 容器日志业务所在的地域(Region)。 详情请参见 地域和可用区。​
    secret_id​
    AK********​
    火山引擎账号或子用户的 Access Key ID。 获取方式,请参见 Access Key(密钥)管理。​
    secret_key​
    TUdZ********​
    火山引擎账号或子用户的 Secret Access Key。 获取方式,请参见 Access Key(密钥)管理。​
    label​
    http_module​
    机器的自定义标识。与 前提条件 中创建的机器组自定义标识保持一致。​
    ​
  1. 执行以下命令,创建 Sidecar 容器配置文件。​
  • ​
    kubectl apply -f logcollector-config.yaml​
    ​
  1. 创建一个包含 Sidecar 容器的 VCI Pod YAML 文件。​
  • 有如下两种 YAML 示例:​
注意​
请按照 YAML 文件中的注释说明,将参数值替换为您业务相关的实际值。​
  • 创建 VCI Pod 时挂载csi-driver并通过 Sidecar 方式采集容器的标准输出日志。示例sidecar-vci-pod-demo.yaml的代码如下:​
  • ​
    apiVersion: v1​
    kind: Pod​
    metadata:​
    name: sidecar-vci-pod-demo # VCI Pod 名称。​
    namespace: default # VCI Pod 所属命名空间。​
    annotations:​
    vke.volcengine.com/burst-to-vci: enforce # 强制调度到 VCI。​
    spec:​
    containers:​
    - name: c1 # 业务容器名称。​
    image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 容器镜像地址和 Tag,请替换为您实际业务中的镜像地址。​
    args: # 业务容器每秒打印当前时间到标准输出日志。​
    - /bin/sh​
    - -c​
    - >​
    i=0;​
    while true;​
    do​
    echo "$i: $(date)";​
    i=$((i+1));​
    sleep 1;​
    done​
    volumeMounts:​
    - name: stdlog-volume # 业务容器的标准输出日志挂载的卷名称。​
    mountPath: /var/log # 业务容器的标准输出日志采集路径。​
    - name: logcollector # Sidecar 容器的名称。​
    image: ${logcollector-image} # Sidecar 的容器镜像,即日志服务提供的 LogCollector 镜像地址,详情请见 https://www.volcengine.com/docs/6470/190394#logcollector-镜像地址 。​
    imagePullPolicy: Always​
    args:​
    - /usr/local/container/filebeat-7.12.0/filebeat​
    - -c​
    - /usr/local/container/filebeat-7.12.0/etc/filebeat.yml​
    livenessProbe:​
    initialDelaySeconds: 10​
    periodSeconds: 10​
    exec:​
    command:​
    - sh​
    - -c​
    - |​
    filebeat_num=`ps -ef 2>/dev/null | grep "filebeat" | grep -v "grep" | wc -l`​
    if [ $filebeat_num -eq 0 ]; then​
    return 1​
    fi​
    volumeMounts:​
    - name: logcollector-config​
    mountPath: /usr/local/container/filebeat-7.12.0/etc/​
    readOnly: true​
    - name: stdlog-volume # Sidecar 容器挂载业务容器的标准输出挂载的卷名称。​
    mountPath: /var/log # Sidecar 容器挂载业务容器的标准输出采集路径。​
    - name: data​
    mountPath: /usr/local/container/filebeat-7.12.0/data​
    env:​
    - name: "LOG_COLLECTOR_ENV_TAGS"​
    value: "__pod_name__|__pod_ip__|__namespace__|__node_name__|__node_ip__"​
    - name: "__pod_name__"​
    valueFrom:​
    fieldRef:​
    fieldPath: metadata.name​
    - name: "__pod_ip__"​
    valueFrom:​
    fieldRef:​
    fieldPath: status.podIP​
    - name: "__namespace__"​
    valueFrom:​
    fieldRef:​
    fieldPath: metadata.namespace​
    - name: MAX_MEM​
    valueFrom:​
    resourceFieldRef:​
    containerName: logcollector​
    resource: limits.memory​
    volumes: # 采集容器文件日志的共享卷定义。​
    - name: logcollector-config # Sidecar 容器配置文件,即步骤 1 中创建的文件名称。​
    configMap:​
    defaultMode: 420​
    name: logcollector-config​
    - name: stdlog-volume # Sidecar 容器挂载业务容器的标准输出挂载的卷名称。​
    csi:​
    driver: stdlog.csi.volcengine.com​
    - name: data​
    emptyDir: { }​
    ​
  • 创建 VCI Pod 时挂载empty-dir并通过 Sidecar 方式采集容器的文件日志。示例sidecar-vci-pod-demo.yaml的代码如下:​
  • ​
    apiVersion: v1​
    kind: Pod​
    metadata:​
    name: sidecar-vci-pod-demo # VCI Pod 名称。​
    namespace: default # VCI Pod 所属命名空间。​
    annotations:​
    vke.volcengine.com/burst-to-vci: enforce # 强制调度到 VCI。​
    spec:​
    containers:​
    - name: c1 # 业务容器的名称。​
    image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 容器镜像地址和 Tag,请替换为您实际业务中的镜像地址。​
    args:​
    - /bin/sh​
    - -c​
    - >​
    i=0;​
    while true;​
    do​
    echo "$i: $(date)" >> /var/log/foo.log;​
    i=$((i+1));​
    sleep 1;​
    done​
    volumeMounts:​
    - name: ${emptydir-name} # 业务容器的文件日志挂载卷名称。​
    mountPath: /var/log # 业务容器的文件日志挂载路径。​
    - name: logcollector # Sidecar 容器的名称。​
    image: ${logcollector-image} # Sidecar 的容器镜像,即日志服务提供的 LogCollector 镜像地址,详情请见 https://www.volcengine.com/docs/6470/190394#logcollector-镜像地址 。​
    imagePullPolicy: Always​
    args:​
    - /usr/local/container/filebeat-7.12.0/filebeat​
    - -c​
    - /usr/local/container/filebeat-7.12.0/etc/filebeat.yml​
    livenessProbe:​
    initialDelaySeconds: 10​
    periodSeconds: 10​
    exec:​
    command:​
    - sh​
    - -c​
    - |​
    filebeat_num=`ps -ef 2>/dev/null | grep "filebeat" | grep -v "grep" | wc -l`​
    if [ $filebeat_num -eq 0 ]; then​
    return 1​
    fi​
    volumeMounts:​
    - name: logcollector-config​
    mountPath: /usr/local/container/filebeat-7.12.0/etc/​
    readOnly: true​
    - name: ${emptydir-name} # Sidecar 容器挂载业务容器文件的卷名称。​
    mountPath: /var/log # Sidecar 容器挂载业务容器文件日志的采集路径。​
    - name: data​
    mountPath: /usr/local/container/filebeat-7.12.0/data​
    env:​
    - name: "LOG_COLLECTOR_ENV_TAGS"​
    value: "__pod_name__|__pod_ip__|__namespace__|__node_name__|__node_ip__"​
    - name: "__pod_name__"​
    valueFrom:​
    fieldRef:​
    fieldPath: metadata.name​
    - name: "__pod_ip__"​
    valueFrom:​
    fieldRef:​
    fieldPath: status.podIP​
    - name: "__namespace__"​
    valueFrom:​
    fieldRef:​
    fieldPath: metadata.namespace​
    - name: MAX_MEM​
    valueFrom:​
    resourceFieldRef:​
    containerName: logcollector​
    resource: limits.memory​
    volumes: # 采集容器文件日志的共享卷定义。​
    - name: logcollector-config # Sidecar 容器配置文件,即步骤 1 中创建的文件名称。​
    configMap:​
    defaultMode: 420​
    name: logcollector-config​
    - name: ${emptydir-name} # Sidecar 容器挂载业务容器文件的卷名称。​
    emptyDir: { }​
    - name: data​
    emptyDir: { }​
    ​
  1. 执行以下命令,创建 VCI Pod。​
  • ​
    kubectl apply -f sidecar-vci-pod-demo.yaml​
    ​
  1. 获取 Pod 信息,验证 Pod 是否成功创建。​
  • ​
    kubectl get pods -l app=sidecar-vci-pod-demo​
    ​
  • 预期返回结果如下:​
  • ​
    NAME READY STATUS RESTARTS AGE​
    sidecar-vci-pod-demo 1/1 Running 0 32m​
    ​
  1. 在 容器服务控制台 上找到目标 VCI 业务集群,查看 VCI 容器日志。详细操作,请参见 查看容器日志。​
​
最近更新时间:2026.08.19 11:24:57
这个页面对您有帮助吗?
有用
有用
无用
无用