采集自动组合(阿里云日志服务日志采集方式对比方式)

优采云 发布时间: 2021-12-13 03:27

  采集自动组合(阿里云日志服务日志采集方式对比方式)

  总结: DaemonSet 和 Sidecar 模式各有优缺点。目前还没有一种方法可以适用于所有场景。因此,我们的阿里云日志服务同时支持DaemonSet和Sidecar两种方式,并对每种方式做了一些额外的改进,更适合K8S下的动态场景。

  Kubernetes(K8S)作为CNCF(云原生计算基金会)的核心项目,得到了Google和Redhat强大社区的支持。近两年发展迅速。在成为容器编排领域的佼佼者的同时,也在向PAAS基地迈进。标准配置的开发。

  记录 采集 方法

  日志是任何系统不可或缺的一部分。K8S官方文档还介绍了多种日志采集形式。综上所述,主要有以下三种:native模式、DaemonSet模式和Sidecar模式。

  Native方法:使用kubectl logs直接查看本地保留的日志,或者通过docker引擎日志驱动将日志重定向到files、syslog、fluentd等系统。DaemonSet方法:在K8S的每个节点上部署日志代理,从代理采集的所有容器的日志到服务器。Sidecar方式:在POD中运行一个sidecar日志代理容器,用于采集POD主容器生成的日志。

  

  采集方法比较

  每个 采集 方法都有一定的优点和缺点。下面我们做一个简单的对比:

  

  从上表可以看出:

  native方法比较弱,一般不建议在生产系统中使用。否则很难完成问题排查和数据统计。DaemonSet 方法在每个节点上只允许一个日志代理,在资源消耗方面要小得多,但具有可扩展性。,租户隔离受限,更适合功能单一或业务不多的集群;Sidecar方式是为每个POD单独部署日志代理,占用资源较多,但灵活性和多租户隔离性强。推荐大型的。K8S集群或服务多个业务方的集群作为PAAS平台使用这种方式。日志服务K8S采集方法

  DaemonSet 和 Sidecar 模式各有优缺点,目前没有一种方法可以适用于所有场景。因此,我们的阿里云日志服务同时支持DaemonSet和Sidecar两种方式,并对每种方式做了一些额外的改进,更适合K8S下的动态场景。

  这两种模式都是基于Logtail实现的。日志服务客户端Logtail已部署百万级。它每天有采集数万个应用程序和数PB的数据,并经历了多次双11、双12测试。. 相关技术分享请参考文章:多租户隔离技术+双十一实战效果,Polling+Inotify组合下的日志保存方案采集。

  DaemonS优采云采集器 方法

  Logtail 在 DaemonSet 模式下做了很多适配工作,包括:

  

  详细介绍文章,请参考:

  再次升级!阿里云Kubernetes日志解决方案

  LC3视角:Kubernetes下的日志采集,存储处理技术实践

  Sidecar采集 方法

  sidecar模式的配置和使用在虚拟机/物理机上比较少。从Logtail容器的角度来看:Logtail工作在一个“虚拟机”上,需要采集在这台机器上。一个/一些日志文件。

  

  但是容器场景有两个问题需要解决:

  配置:使用编排配置代理容器动态:需要适应POD的IP地址和主机名的变化

  目前Logtail的容器支持通过环境变量配置相关参数,支持自定义标识的机器组工作,可以完美解决以上两个问题。Sidecar 配置示例

  sidecar模式下日志组件的安装和配置方法如下:

  第一步:部署Logtail容器。部署POD时,将日志路径挂载到本地,并将对应的卷挂载到Logtail容器中。Logtail容器需要配置ALIYUN_LOGTAIL_USER_ID、ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_DEFINED_ID。参数含义及取值参见:标准Docker日志采集。

  尖端:

  建议为Logtail容器配置健康检查,以便在运行环境或内核异常时自动恢复。示例中使用的Logtail镜像访问阿里云杭州公网镜像仓库。可以根据需要更换成本区域的镜像,使用内网方式。

  apiVersion: batch/v1

kind: Job

metadata:

name: nginx-log-sidecar-demo

namespace: kube-system

spec:

template:

metadata:

name: nginx-log-sidecar-demo

spec:

# volumes配置

volumes:

- name: nginx-log

emptyDir: {}

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/ngin

# Logtail的Sidecar容器配置

- name: logtail

image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest

env:

# aliuid

- name: "ALIYUN_LOGTAIL_USER_ID"

value: "165421******3050"

# 自定义标识机器组配置

- name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"

value: "nginx-log-sidecar"

# 启动配置(用于选择Logtail所在Region)

- name: "ALIYUN_LOGTAIL_CONFIG"

value: "/etc/ilogtail/conf/cn-hangzhou/ilogtail_config.json"

# 和主容器共享volume

volumeMounts:

- name: nginx-log

mountPath: /var/log/nginx

# 健康检查

livenessProbe:

exec:

command:

- /etc/init.d/ilogtaild

- status

initialDelaySeconds: 30

periodSeconds: 30

  第二步:配置机器组

  如下图,在日志服务控制台中创建了一个Logtail机器组,机器组选择自定义ID动态适应POD ip地址的变化。具体步骤如下:

  打开日志服务,创建Project和Logstore。详细步骤请参考准备过程。在日志服务控制台的机器组列表页面,单击创建机器组。选择自定义标识,在自定义标识内容框中填写上一步配置的ALIYUN_LOGTAIL_USER_DEFINED_ID。

  

  第三步:配置采集方法

  机器组创建完成后,可以配置相应文件的采集配置。目前支持minimal、Nginx访问日志、分隔符日志、JSON日志、常规日志等多种格式。具体请参考:文本日志配置方法。本例中的配置如下:

  

  第四步:查询日志

  采集配置完成并应用到机器组后,1分钟内可以上传采集日志,进入采集的日志进入查询页面可以找到采集对应的日志库。

  

  进阶日志

  阿里云日志服务提供了完整的日志解决方案。登录 采集 只是第一步。以下相关功能是高级日志的必备品:

  日志上下文查询: 快速查询: 实时分析: 快速分析: 根据日志设置警报: 配置行情:

  更多高级日志内容请参考:日志服务学习路径。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线