帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 注册集群
  6. 接入云上Serverless算力
  7. ECI算力
  8. ECI算力高级配置
  9. 通过SLS CRD采集日志

通过SLS CRD采集日志

  • ECI算力高级配置
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

本文介绍在ACK One注册集群中,如何通过SLS CRD来配置日志采集,实现通过阿里云日志服务SLS自动采集ECI容器日志。

背景信息

阿里云日志服务SLS(Log Service)是针对日志数据的一站式服务,您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能。更多信息,请参见日志服务简介。

前提条件

已开通日志服务。登录日志服务控制台时,如果没有开通日志服务,将收到相关提示,您可以根据页面提示开通。

注意事项

通过SLS CRD开启日志采集仅对后续创建的ECI Pod生效。如果想要采集存量Pod的日志,需要对存量Pod进行一次滚动发布。

配置日志采集

在集群内部署logtail-ds组件后,您可以通过日志采集配置CRD(AliyunLogConfig CRD)来配置日志采集。

部署logtail-ds组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理。

  3. 单击日志与监控页签,找到logtail-ds卡片,然后单击安装。

  4. 在弹出的对话框中,单击确定。

创建Logtail采集配置

  1. 编写日志采集配置CRD的YAML配置文件。

    重要

    创建日志采集配置CRD后,您可以在日志服务控制台查看生成的日志库及logtail配置。通过CRD方式创建的配置,在控制台上对其修改不会同步到CRD中。如果后续需要更新配置,请直接修改CRD资源,不要在控制台操作,避免导致配置不一致。

    AliyunLogConfig CRD YAML模板

    apiVersion: log.alibabacloud.com/v1alpha1     
    kind: AliyunLogConfig                         
    metadata:
      name: simple-stdout-example                 
    spec:
      project: k8s-my-project                      
      logstore: k8s-stdout                         
      logstoreMode: standard                       
      shardCount: 2                               
      lifeCycle: 90                               
      logtailConfig:                            
        inputType: plugin                          
        configName: simple-stdout-example          
        inputDetail:                               
          ...
    • 基本参数

      参数

      类型

      是否必填

      说明

      project

      string

      否

      Project名称。默认为安装Logtail组件时设置的Project。

      如果要新建Project,可自定义输入名称,如果不存在该Project,系统会自动新建。

      logstore

      string

      是

      Logstore名称。如果您所指定的Logstore不存在,系统会自动创建。

      logstoreMode

      string

      否

      Logstore类型。该参数值仅在新建Logstore时生效。取值范围:

      • query:查询型Logstore。

      • standard:标准型Logstore。

      更多信息,请参见管理Logstore。

      shardCount

      int

      否

      Shard数量。默认值为2,取值范围为1~10。

      lifeCycle

      int

      否

      Logstore中数据的存储时间。默认值为90,取值范围为1~3650。其中,3650天为永久存储。该参数值仅在新建Logstore时生效。

      machineGroups

      array

      否

      机器组。安装Logtail组件时,日志服务会自动创建名为k8s-group-${your_k8s_cluster_id}的机器组。

      logtailConfig

      object

      是

      Logtail配置。包含以下参数:

      • configName:Logtail配置的名称。必须与metadata.name相同。

      • inputType:日志输入的方式。可选值如下:

        • plugin:通过Logtail插件采集MySQL Binlog等日志。

        • file:通过固定模式(正则模式、分隔符模式等)采集文本文件中的日志。

      • inputDetail:日志输入的相关配置。

      • outputType:日志输出的方式,只支持LogService,即只支持将数据上传到日志服务。

      • outputDetail:日志输出的相关配置。

      • logSample:日志样例。

      详细的参数说明请参见Logtail配置。

    • 容器过滤

      • Logtail 1.0.34以下版本,只支持通过环境变量、容器Label进行容器过滤。

        Kubernetes中的命名空间名和容器名会映射到容器Label中,分别为io.kubernetes.pod.namespace和io.kubernetes.container.name。推荐使用这两个容器Label进行容器过滤。如果这两个容器Label未满足需求,请使用环境变量的黑白名单进行容器过滤。

      • Logtail 1.0.34及以上版本,可以使用Kubernetes层级的信息(Pod名称、Namespace、容器名称、容器Label等)进行容器过滤。

        容器过滤参数请配置在logtailConfig>inputDetail>advanced>k8s字段下。支持的参数如下:

        • IncludeK8sLabel:Kubernetes Label白名单,用于指定待采集的容器。

        • ExcludeK8sLabel:Kubernetes Label黑名单,用于排除不采集的容器。

        • K8sNamespaceRegex:指定Namespace。

        • K8sPodRegex:指定Pod名称。

        • K8sContainerRegex:指定容器名称。

    更多信息,请参见通过DaemonSet方式采集Kubernetes容器文本日志和通过DaemonSet方式采集Kubernetes容器标准输出(旧版)。

    AliyunLogConfig CRD YAML示例

    文本日志CRD YAML示例

    将以下内容保存为log-file.yaml。

    apiVersion: log.alibabacloud.com/v1alpha1  # 使用默认值,无需修改。
    kind: AliyunLogConfig                      # 使用默认值,无需修改。
    metadata:
      name: test-file                  # 资源名,在当前Kubernetes集群内唯一。
    spec:
      project: k8s-log-c326bc86****    # 可选配置,Project名称,如果不存在该Project,系统会自动新建
      logstore: test-file              # 必选配置,Logstore名称,如果不存在该Logstore,系统会自动创建   
      logtailConfig:                   # Logtail配置
        inputType: file                # 采集的数据源类型,file表示文本日志,plugin表示标准输出
        configName: test-file          # Logtail配置的名称,必须与资源名(metadata.name)相同 
        inputDetail:                   # Logtail配置的详细信息
          logType: common_reg_log      # 通过极简模式采集文本日志
          logPath: /log/               # 日志文件所在路径
          filePattern: "*.log"         # 日志文件的名称,支持通配符星号(*)和半角问号(?),例如log_*.log。
          dockerFile: true             # 采集容器内的文件,dockerFile设置为true
          advanced:                    # 设置容器过滤条件
            k8s:
              K8sNamespaceRegex: ^(default)$
              K8sPodRegex: '^(eci-sls-demo.*)$'

    标准输出CRD YAML示例

    将以下内容保存为log-stdout.yaml。

    apiVersion: log.alibabacloud.com/v1alpha1   # 使用默认值,无需修改。
    kind: AliyunLogConfig                       # 使用默认值,无需修改。
    metadata:
      name: test-stdout               # 资源名,在当前Kubernetes集群内唯一。
    spec:
      project: k8s-log-c326bc86****   # 可选配置,Project名称,如果不存在该Project,系统会自动新建
      logstore: test-stdout           # 必选配置,Logstore名称,如果不存在该Logstore,系统会自动创建                  
      shardCount: 2                   # 可选配置,Shard数量,默认为2,取值范围为1~10                         
      lifeCycle: 90                   # 可选配置,Logstore中日志保留时间,单位为天,该参数值仅在新建Logstore时生效。默认为90,取值范围为1~3650。3650表示永久保留
      logtailConfig:                  # Logtail配置
        inputType: plugin             # 采集的数据源类型,file表示文本日志,plugin表示标准输出                                
        configName: test-stdout       # Logtail配置的名称,必须与资源名(metadata.name)相同 
        inputDetail:                  # Logtail配置的详细信息
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  Stdout: true
                  Stderr: true
    #              IncludeEnv:
    #                aliyun_logs_test-stdout: "stdout"
  2. 创建日志采集配置CRD。

    命令示例如下。Logtail配置生效后,Logtail开始采集各个容器上的标准输出或文本日志,并发送到日志服务中。

    kubectl apply -f log-file.yaml
    kubectl apply -f log-stdout.yaml
    重要

    采集到日志后,您需要先创建索引,才能在Logstore中查询和分析日志。具体操作,请参见创建索引。

测试日志采集

创建日志采集配置CRD后,日志服务会自动采集后续创建的Pod的日志。您可以创建以下应用来测试日志采集效果。

  1. 创建应用。

    以Deployment为例,YAML内容示例如下,示例中容器启动后会执行相关命令,不断打印标准输出和日志文件。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: eci-sls-demo
      labels:
        app: sls
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sls
      template:
        metadata:
          name: sls-test
          labels:
            app: sls
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - args:
            - -c
            - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
            command:
            - /bin/sh
            image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30
            imagePullPolicy: Always
            name: busybox

    将以上YAML保存为test-sls-crd.yaml,执行以下命令创建应用。

    kubectl create -f test-sls-crd.yaml
  2. 确认应用状态。

    kubetcl get pod

    预期返回:

    NAME                            READY   STATUS    RESTARTS   AGE
    eci-sls-demo-7bf8849b9f-cgpbn   1/1     Running   0          2m14s
  3. 查看日志。

    1. 登录日志服务控制台。

    2. 单击目标Project名称。

    3. 找到目标日志库,单击日志库名称查看日志。

      文本日志

      日志crd1

      标准输出

      日志crd0

关闭日志采集

创建日志采集配置CRD后,系统会自动采集所有符合条件的Pod的日志。对于一些不想要采集日志的Pod,您可以配置Annotation(k8s.aliyun.com/eci-sls-enable: "false")来关闭日志采集,避免系统自动创建Logtail而造成资源浪费。

重要
  • Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。

  • 仅支持在创建ECI Pod时添加ECI相关Annotation来生效ECI功能,更新ECI Pod时添加或者修改ECI相关Annotation均不会生效。

配置示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo2
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-sls-enable: "false"    #关闭日志采集
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
          done
        command:
        - /bin/sh
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox
相关文章

拉取自建镜像仓库的镜像 2025-04-18 18:14

拉取自建镜像仓库中的镜像时,可能会碰到因协议不同或者证书认证失败而导致镜像拉取失败的问题。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书的情况下,如何拉取自建镜像仓库中的镜像来创建ECI Pod或者ImageCache。 功能说明 拉取自建镜像仓库中的镜像时,可能会碰到“ErrImageP

通过免密组件拉取容器镜像 2025-04-18 18:13

通过aliyun-acr-credential-helper组件可以在自建Kubernetes集群中免密拉取ACR个人版或企业版私有镜像。本文列举两个场景介绍如何使用免密组件拉取私有镜像。 前提条件 已创建注册集群,并将自建K

使用ImageCache加速创建ECI Pod 2025-04-18 18:13

阿里云以ImageCache CRD的方式将ECI的镜像缓存(即ImageCache)功能提供给Kubernetes用户,以便在Kubernetes集群中也可以使用该功能来加速创建ECI Pod。本文介绍ImageCache的功能,以及如何创建和使用ImageCache。 ImageCache介绍

自定义设置ECI Pod的hosts 2025-04-18 18:13

某些场景下,您可能需要自定义设置ECI Pod的hosts,例如拉取自建镜像仓库的镜像时,需要通过hosts明确镜像仓库的实际IP地址。本文介绍如何自定义设置ECI Pod级别的hosts(即/etc/hosts)。 配置说明 您可以通过

为ECI Pod配置自定义DNS 2025-04-18 18:13

混合云场景下,如果需要使用内网的镜像仓库来拉取镜像,或者容器需要访问内网中的域名,则需要配置ECI Pod使用的DNS为用户内网DNS,以便解析内网域名。本文介绍如何为ECI Pod配置自定义DNS。 背景信息 混合云场景下,例如Kubernetes集群包含本地节点,镜像仓库在本地的情况下,如果使用

在ECI上使用网络策略 2025-04-18 18:13

注册集群网络策略(Network Policy)提供基于策略的网络控制。如果您希望在IP地址或者端口层面控制网络流量,可以为集群中特定应用使用网络策略。本文介绍如何使用ACK One注册集群的网络策略及常见的使用场景。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1