部署Sidecar容器,以及创建Logtail配置,实现容器日志的采集

您所在的位置:网站首页 容器sidecar 部署Sidecar容器,以及创建Logtail配置,实现容器日志的采集

部署Sidecar容器,以及创建Logtail配置,实现容器日志的采集

#部署Sidecar容器,以及创建Logtail配置,实现容器日志的采集| 来源: 网络整理| 查看: 265

前提条件

已开通日志服务。

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

背景信息

阿里云日志服务SLS支持在ECI中通过Sidecar模式采集日志,即在每个ECI Pod中,除业务容器外,运行一个Sidecar容器作为日志Agent,用于采集业务容器产生的日志。

重要

Sidecar模式基于Logtail实现,Logtail必须和业务容器共享日志目录,业务容器将日志写入到共享目录中,Logtail通过监控共享目录中日志文件的变化并采集日志。

采集的日志可以分为以下两种:

标准输出

采集标准输出依赖于ECI的stdlog卷。创建ECI Pod时可以将该卷挂载到Sidecar容器上,Sidecar可以直接以文件的方式访问ECI基础组件收集的标准输出日志。

文本文件

采集文本文件可以通过Pod内共享的Volume实现。Pod内同一个Volume可以挂载到多个容器,Sidecar可以直接收集业务容器输出到对应Volume内的文本文件。

步骤一:部署Sidecar容器

创建一个包含Sidecar容器的Deployment。

YAML内容示例如下,请根据实际情况将占位符变量替换为实际值。

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 alibabacloud.com/eci: "true" spec: containers: - name: nginx-log-demo image: registry-vpc.${RegionId}.aliyuncs.com/eci_open/nginx:1.14.2 command: - /bin/sh args: - -c - while true; do echo hello world; date; echo hello sls >> /var/log/nginx/test.log; sleep 1;done 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 - mountPath: /stdlog name: stdlog volumes: - emptyDir: {} #文本文件日志存储到emptyDir卷 name: nginx-log - name: stdlog #标准输出日志存储到stdlog卷 flexVolume: driver: alicloud/pod-stdlog

获取Pod信息。

kubectl get pods -l app=nginx-log-sidecar-demo

预期返回结果如下:

NAME READY STATUS RESTARTS AGE nginx-log-sidecar-demo-66d79c46dd-j2t4d 2/2 Running 0 17m nginx-log-sidecar-demo-66d79c46dd-x94gm 2/2 Running 0 17m

查看日志。

通过kubectl命令查看日志

执行exec命令进入容器后,通过tail命令查看stdlog卷中日志文件的内容。

ls /stdlog/ tail /stdlog/nginx-log-demo/0.log -n 5Sidecar1

通过弹性容器实例控制台查看日志

在实例详情页选择日志页签,然后选择容器查看日志内容。

Sidecar2步骤二:配置Logtail采集日志

部署Sidecar容器后,您需要在日志服务控制台创建Logtail配置来采集日志。

登录日志服务控制台。

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

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

请选择Project和Logstore。如果没有,您也可以直接单击立即创建进行创建。

创建机器组。

如果您已有可用的机器组 ,可直接单击使用现有机器组,跳过该步骤。

按界面提示确认已创建机器组,然后单击确认安装完毕

配置机器组相关参数,单击下一步

机器组标识选择用户自定义标识,将步骤一配置的环境变量ALIYUN_LOGTAIL_USER_DEFINED_ID填入用户自定义标识框中。本文示例为nginx-log-sidecar。

Sidecar3

配置机器组。

选择目标机器组,将该机器组从源机器组移动到应用机器组,然后单击下一步

设置Logtail配置。

Logtail支持通过极简模式、正则模式、分隔符模式、JSON模式等模式采集文本日志。更多信息,请参见概述。

说明

是否为Docker文件的配置项请保持关闭。

标准输出示例

采集标准输出时,日志路径为stdlog卷在容器的挂载路径,本文示例为/stdlog。

Sidecar4

文本文件示例

采集文本文件时,日志路径为共享Volume在容器的挂载路径,本文示例为/var/log/nginx。

Sidecar5

查询分析配置。

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

查看采集的ECI日志。

完成上述配置后,日志服务SLS即可开始采集ECI日志。下图为标准输出日志采集到SLS日志库的效果示例。

Sidecar6说明

Pod的stdlog卷中的标准输出日志是ECI底层组件记录的,其格式与原生K8s的日志格式一致。K8s会在每行标准输出日志前增加时间戳等前缀。配置日志格式解析时,需要配置去除该前缀。具体操作,请参见解析JSON格式的日志。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3