本文介绍如何安装Sidecar及使用控制台方式创建Logtail配置,完成容器日志的采集。

技术原理

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

步骤一:安装Sidecar

Sidecar模式的配置模板如下所示。
apiVersion: batch/v1
kind: Job
metadata:
  name: nginx-log-sidecar-demo
  namespace: default
spec:
  template:
    metadata:
      name: nginx-log-sidecar-demo
    spec:
      restartPolicy: Never
      containers:
      - name: nginx-log-demo
        image: registry.cn-hangzhou.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=1000000000", "--logs-per-sec=100"]
        volumeMounts:
        - name: nginx-log
          mountPath: /var/log/nginx
      ##### logtail sidecar container
      - name: logtail
        # more info: https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/detail
        # this images is released for every region
        image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest
        # when recevie sigterm, logtail will delay 10 seconds and then stop
        command:
        - sh
        - -c
        - /usr/local/ilogtail/run_logtail.sh 10
        livenessProbe:
          exec:
            command:
            - /etc/init.d/ilogtaild
            - status
          initialDelaySeconds: 30
          periodSeconds: 30
        resources:
          limits:
            memory: 512Mi
          requests:
            cpu: 10m
            memory: 30Mi
        env:
          ##### base config
          # user id
          - name: "ALIYUN_LOGTAIL_USER_ID"
            value: "${your_aliyun_user_id}"
          # user defined id
          - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
            value: "${your_machine_group_user_defined_id}"
          # config file path in logtail's container
          - name: "ALIYUN_LOGTAIL_CONFIG"
            value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
          ##### env tags config
          - name: "ALIYUN_LOG_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: "_node_name_"
            valueFrom:
              fieldRef:
                fieldPath: spec.nodeName
          - name: "_node_ip_"
            valueFrom:
              fieldRef:
                fieldPath: status.hostIP
        volumeMounts:
        - name: nginx-log
          mountPath: /var/log/nginx
      ##### share this volume
      volumes:
      - name: nginx-log
        emptyDir: {}
  1. 登录您的Kubernetes集群,详情请参见SSH密钥对访问Kubernetes集群
  2. 配置基础运行参数。
    ##### base config
              # user id
              - name: "ALIYUN_LOGTAIL_USER_ID"
                value: "${your_aliyun_user_id}"
              # user defined id
              - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
                value: "${your_machine_group_user_defined_id}"
              # config file path in logtail's container
              - name: "ALIYUN_LOGTAIL_CONFIG"
                value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
    参数 说明
    ${your_region_config} 请根据日志服务Project所在地及网络类型填写,其中,地域信息请参见表 1
    • 如果为公网,格式为:region-internet,例如:华东 1(杭州)cn-hangzhou-Internet
    • 如果为阿里云内网,格式为region。例如:华东 1(杭州)cn-hangzhou
    ${your_aliyun_user_id} 您的阿里云主账号ID,详情请参见配置用户标识
    ${your_machine_group_user_defined_id} 您机器组的自定义标识,请确保该标识在您的Project所在地域内唯一,详情请参见创建用户自定义标识机器组
  3. 配置挂载路径。
    volumeMounts:
    - name: nginx-log
    mountPath: /var/log/nginx
    • 请确保Logtail容器和业务容器挂载相同的目录。
    • 建议使用emptyDir的挂载方式。
  4. 延迟停止采集的时间。
    通常情况下,延迟停止采集的时间为10秒,即Logtail容器在接收到外部停止信号后会等待10秒再退出,防止有部分数据没有采集完毕。
    command:        
    - sh        
    - -c        
    - /usr/local/ilogtail/run_logtail.sh 10

步骤二:创建采集配置

  1. 登录日志服务控制台
  2. 接入数据区域,单击正则-文本日志
    本文以采集正则-文本文件为例,其他文本文件采集请参见概述
  3. 选择日志空间页签中,选择目标Project和Logstore,单击下一步
    您也可以单击立即创建,重新创建Project和Logstore。
  4. 创建机器组。
    如果您已有可用的机器组 ,可直接单击使用现有机器组
    1. 确认已创建机器组,单击确认安装完毕
    2. 创建机器组页签中,配置相关参数,单击下一步

      机器组标识选择用户自定义标识,将步骤一:安装Sidecar时配置的ALIYUN_LOGTAIL_USER_DEFINED_ID填入用户自定义标识框中。

      配置机器组
  5. 机器组配置页签中,应用机器组。
    选择一个机器组,将该机器组从源机器组移动到应用机器组
  6. 设置Logtail配置。
    目前支持极简模式、Nginx访问日志、分隔符日志、JSON日志、正则日志等格式,具体可参见概述
    说明 是否为Docker文件选项需保持关闭。
    配置采集方式
  7. 配置查询分析,单击下一步
    默认已经创建索引,您也可以手动修改。