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

前提条件

已安装alibaba-log-controller组件。更多信息,请参见安装Logtail组件

背景信息

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

步骤一:安装Sidecar

  1. 登录您的Kubernetes集群。
  2. 创建一个YAML文件。

    sidecar.yaml为文件名,请根据实际情况替换。

    vim sidecar.yaml
  3. 在YAML文件输入如下脚本,并根据实际情况设置其中的参数。
    注意 请确保配置文件中的env中的TZ(Time Zone)配置正确,否则原始日志与处理日志的时区不一致,可能会导致采集到的日志写入过去或未来的情况。例如如果是中国大陆,您可以设置时区为Asia/Shanghai。
    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. 在配置脚本中找到如下内容,完成基础配置。
      ##### 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_aliyun_user_id} 配置为您的阿里云账号ID。更多信息,请参见步骤一:获取日志服务所在的阿里云账号ID
      ${your_machine_group_user_defined_id} 配置机器组的自定义标识,请确保该标识在您的Project所在地域内唯一,例如nginx-log-sidecar。更多信息,请参见创建用户自定义标识机器组
      ${your_region_config} 请根据日志服务Project所在地域和访问的网络类型填写。其中,地域信息请参见表 1
      • 如果使用公网采集日志,格式为region-internet,例如:华东 1(杭州)cn-hangzhou-internet
      • 如果使用阿里云内网采集日志,格式为region。例如:华东 1(杭州)cn-hangzhou
    2. 在配置脚本中找到如下内容,设置挂载路径。
      说明 建议使用emptyDir挂载方式。
              volumeMounts:
              - name: nginx-log
                mountPath: /var/log/nginx
            ##### share this volume
            volumes:
            - name: nginx-log
              emptyDir: {}
      参数 说明
      name 自定义设置卷的名称。
      注意 volumeMounts节点下的name参数与volumes节点下的name参数需设置为一致,即确保Logtail容器和业务容器挂载相同的卷上。
      mountPath 设置挂载路径,即容器文本日志所在文件的路径。
    3. 在配置脚本中找到如下内容,设置延迟停止采集的时间。
      通常情况下,延迟停止采集的时间为10秒,即Logtail容器在接收到外部停止信号后会等待10秒再退出,防止有部分数据没有采集完毕。
      command:        
      - sh        
      - -c        
      - /usr/local/ilogtail/run_logtail.sh 10
  4. 执行如下命令使sidecar.yaml文件配置生效。

    sidecar.yaml为文件名,请根据实际情况替换。

    kubectl apply -f sidecar.yaml

步骤二:创建机器组

  1. 登录日志服务控制台
  2. 在Project列表中,单击您在安装Logtail组件时所使用的Project。
  3. 在左侧导航栏中,选择资源 > 机器组
  4. 机器组列表中,选择机器组图标 > 创建
  5. 创建机器组面板中,配置如下信息,然后单击确定
    参数 说明
    名称 机器组名称。
    注意 创建后,不支持修改机器组名称,请谨慎填写。
    机器组标识 选择用户自定义标识
    机器组Topic 机器组Topic用于区分不同服务器产生的日志数据。更多信息,请参见日志主题
    用户自定义标识 配置为您在安装Sidecar时配置的用户自定义标识,即需与您在安装Sidecar时设置的${your_machine_group_user_defined_id}的值一致,例如nginx-log-sidecar。

步骤三:创建Logtail采集配置

  1. 登录日志服务控制台
  2. 接入数据区域,单击正则-文本日志
    本文以采集正则-文本文件为例,其他文本文件采集请参见采集文本日志
  3. 选择目标Project和Logstore,单击下一步
    选择您在安装Logtail组件时所使用的Project,Logstore为您自定义创建的Logstore。
  4. 单击使用现有机器组
  5. 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步

    该机器组为您在步骤二:创建机器组中创建的机器组。

    注意 如果创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
  6. 创建Logtail采集配置,单击下一步
    目前支持通过极简模式、Nginx模式、分隔符模式、JSON模式、完整正则模式采集日志。具体操作,请参见采集文本日志
    注意 sidecar模式下,请勿打开是否为Docker文件开关。
    配置采集方式
  7. 预览数据及设置索引,单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动或者自动设置字段索引。更多信息,请参见配置索引
    说明 如果您要查询分析日志,那么全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引为准。