阿里云首页 弹性容器实例 相关技术圈

ECI日志采集对接Kafka

本文介绍如何将ECI日志采集到Kafka中。

前提条件

  • ECI实例和Kafka之间网络互通。

    如果您在阿里云上部署Kafka,建议将Kafka和ECI实例部署在同一VPC下。

  • 已完成ECI日志采集的相关配置。

方式一:通过日志服务控制台配置

Logtail日志采集支持文件和标准输出两种方式,您可以在日志服务控制台配置flushers插件,将日志导入Kafka。配置文本如下:

"flushers": [
    {
      "detail": {
        "Brokers": [
          "Kafka Broker地址"
        ],
        "Topic": "log"
      },
      "type": "flusher_kafka"
    }
  ]
  • 对于标准输出,您可以直接修改Logtail配置,在插件配置中新增flushers插件。如下图所示。

    日志采集1
  • 对于文件采集,您需要在高级选项中启用插件处理开关,然后在插件配置中新增flushers插件。如下图所示。

    日志采集2

方式二:通过SLS CRD配置(K8s)

如果您使用的K8s集群已经安装了日志服务的CRD,您可以通过CRD的方式配置flushers插件,将日志导入Kafka。请参考以下配置示例修改SLS CRD(资源类型为AliyunLogConfig)的YAML,然后执行kubectl apply命令更新配置。

  • 标准输出YAML配置示例

    apiVersion: log.alibabacloud.com/v1alpha1     
    kind: AliyunLogConfig                        
    metadata:
      name: test-stdout                     #资源名,在集群内唯一
    spec:
      project: k8s-log-xxx                  #(可选)Project名称,默认为安装时设置的Project,若指定Project请确保该Project未被使用
      logstore: test-stdout                 #Logstore名称,不存在时自动创建
      shardCount: 2                         #(可选)Shard数量,默认为2,支持1-10
      lifeCycle: 90                         #(可选)Logstore中数据的存储时间,默认为90,支持1-7300,7300天为永久存储
      logtailConfig:                        
        inputType: plugin                   #采集的数据源类型,file(文本文件)或plugin(标准输出)
        configName: test-stdout             #采集配置的名称,与资源名(metadata.name)保持一致
        inputDetail:
          plugin:
            inputs:
              - type: service_docker_stdout
                detail:
                  Stdout: true
                  Stderr: true
                  IncludeEnv:
                    aliyun_logs_test-stdout: "stdout"
            flushers:
              - type: flusher_kafka         #flusher类型为Kafka
                detail:
                  Brokers:
                  - 192.XX.XX.XX:9092       #配置Kafka Broker地址
                  - 192.XX.XX.XX:9092
                  - 192.XX.XX.XX:9092
                  Topic: log
  • 文件采集YAML配置示例

    apiVersion: log.alibabacloud.com/v1alpha1    
    kind: AliyunLogConfig                         
    metadata:
      name: test-file                          
    spec:
      project: k8s-log-xxx                  #(可选)Project名称,默认为安装时设置的Project,若指定Project请确保该Project未被使用
      logstore: test-file                   #Logstore名称,不存在时自动创建
      shardCount: 2                         #(可选)Shard数量,默认为2,支持1-10
      lifeCycle: 90                         #(可选)Logstore中数据的存储时间,默认为90,支持1-7300,7300天为永久存储
      logtailConfig:                    
        inputType: file                     #采集的数据源类型,file(文本文件)或plugin(标准输出)
        configName: test-file               #采集配置的名称,与资源名(metadata.name)保持一致
        inputDetail:
            logType: common_reg_log        #对于分隔符类型的日志,logType可以设置为json_log
            logPath: /log/                 #日志文件夹
            filePattern: "*.log"           #文件名, 支持通配符,例如log_*.log
            dockerFile: true               #采集容器内的文件
            plugin:        
              flushers:
                - type: flusher_kafka        #flusher类型为Kafka
                  detail:
                    Brokers:
                     - 192.XX.XX.XX:9092           ## 配置Kafka Broker地址
                     - 192.XX.XX.XX:9092
                     - 192.XX.XX.XX:9092
                    Topic: log

结果验证

配置完成后,您可以看到ECI日志已经被采集到Kafka。例如:如果使用的是阿里云消息队列Kafka版,可以在消息查询页面查询到ECI的日志,如下图所示。

kafka
首页 弹性容器实例 日志 ECI日志采集对接Kafka