全部产品

通过Sidecar采集日志

更新时间:2020-07-29 10:26:03

前提条件

介绍

日志服务支持在ECI中通过Sidecar模式采集日志,为每个需要日志采集的业务容器创建一个Sidecar容器用于日志采集,实现多租户隔离和较高的采集性能。本文介绍如何安装Sidecar及使用控制台方式创建Logtail配置,完成容器日志的采集。

技术原理

通过Sidecar模式采集日志,依赖于Logtail和业务容器共享的日志目录,业务容器将日志写入到共享目录中,Logtail通过监控共享目录中日志文件的变化并采集日志。详细信息请参见官方文档Sidecar日志采集介绍Sidecar模式示例

限制条件

  • Logtail 必须和业务容器共享日志目录。

  • Sidecar 模式不支持采集容器标准输出。

操作步骤

创建容器组

新建并部署以下YAML模板,创建一个以下样式的ECI(占位符变量需替换为实际值),用于演示采集日志到日志服务。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx-log-sidecar-demo
  name: nginx-log-sidecar-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-log-sidecar-demo
  template:
    metadata:
      labels:
        app: nginx-log-sidecar-demo
    spec:
      containers:
        - name: nginx-log-demo
          image: 'registry-vpc.${RegionId}.aliyuncs.com/log-service/docker-log-test:latest'
          command:
            - /bin/mock_log
          args:
            - '--log-type=nginx'
            - '--stdout=false'
            - '--stderr=true'
            - '--path=/var/log/nginx/access.log'
            - '--total-count=100000000'
            - '--logs-per-sec=100'
          imagePullPolicy: Always
          volumeMounts:
            - mountPath: /var/log/nginx
              name: nginx-log
        - name: logtail
          image: 'registry-vpc.${RegionId}.aliyuncs.com/log-service/logtail:latest'
          env:
            - name: ALIYUN_LOGTAIL_USER_ID
              value: '${Aliuid}'
            - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
              value: nginx-log-sidecar
            - name: ALIYUN_LOGTAIL_CONFIG
              value: /etc/ilogtail/conf/${RegionId}/ilogtail_config.json
            - name: aliyun_logs_machinegroup
              value: k8s-group-app-alpine
          imagePullPolicy: Always
          volumeMounts:
            - mountPath: /var/log/nginx
              name: nginx-log
      volumes:
        - emptyDir: {}
          name: nginx-log

日志采集配置

1. 访问 ECI控制台,根据返回的ContainerGroupId,确认业务容器和logtail容器的日志正常输出。

log-1log-2log-32. 登录日志服务控制台

3. 在 接入数据 区域,单击 正则-文本日志

本文以采集正则-文本文件为例,其他文本文件采集请参见文本日志采集流程

4. 选择日志空间,单击下一步

请选择Project和Logstore,您也可以直接单击立即创建准备流程。

如果您是通过日志库下的 数据接入 后的加号进入采集配置流程,系统会直接跳过该步骤。

5. 创建机器组。如果您已有可用的机器组 ,可直接单击 使用现有机器组

  • 确认已创建机器组,单击 确认安装完毕

  • 创建机器组 页签中,配置相关参数,单击 下一步 。机器组标识选择 用户自定义标识,将CreateContainerGroup时配置的环境变量 ALIYUN_LOGTAIL_USER_DEFINED_ID填入 用户自定义标识框 中。

6. 配置机器组。

选择一个机器组,将该机器组从源机器组移动到应用机器组。

7. 设置Logtail配置。

Nginx访问日志、分隔符日志、JSON日志、正则日志等格式,具体可参见文本日志采集流程。

sls-1

8. 查询分析配置。

默认已设置索引,您也可以根据业务需求,重新设置索引,具体请参见开启并配置索引

sls-29. 完成以上步骤后,日志服务开始采集日志 。

访问日志服务控制台,查看已经配置的收集日志。可以看到日志记录中的ip、hostname与控制台保持一致。

log-5