详细介绍:Kubernetes日志采集Sidecar模式介绍

优采云 发布时间: 2022-10-07 19:08

  详细介绍:Kubernetes日志采集Sidecar模式介绍

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

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

  记录 采集 方式

  日志作为任何系统都不可缺少的一部分,在K8S的官方文档中也以多种日志采集的形式进行了介绍。总结起来主要有以下三种:native方法、DaemonSet方法和Sidecar方法。

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

  采集方法对比

  每种采集方法都有一定的优缺点,这里我们做一个简单的比较:

  从上表可以看出:

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

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

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

  守护进程优采云采集器方法

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

  详细介绍文章可以参考:

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

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

  边车采集方式

  Sidecar模式的配置和使用与虚拟机/物理机采集上的数据差别不大。从Logtail容器的角度来看:Logtail工作在一个“虚拟机”上,需要采集这台机器上的某台机器。个人/一些日志文件。

  但在容器场景下,需要解决两个问题:

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

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

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

  第一步:部署Logtail容器

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

  提示:

  建议为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"

# 自定义标识机器组配置

<p>

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

  步骤 2:配置机器组

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

  激活日志服务并创建项目和日志存储。详细步骤请参见准备过程。在日志服务控制台的“机器组列表”页面,单击“创建机器组”。选择User-defined ID,在User-defined ID内容框中填写您在上一步中配置的ALIYUN_LOGTAIL_USER_DEFINED_ID。

  步骤 3:配置 采集 方法

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

  第四步:查询日志

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

  高级日志

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

  日志上下文查询:/document_detail/48148.html快速查询:/document_detail/88985.html实时分析:/document_detail/53608.html快速分析:/document_detail/66275.html根据日志设置告警:/document_detail/48162.html配置仪表盘: /document_detail/69313.html

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

  全面分析:网站日志监测和分析

  在为网站做SEO的时候,一定要对网站进行监控和分析。首先要了解的是每个蜘蛛是如何爬取目录的(蜘蛛从网站主页先爬到目录。爬,爬再爬),爬页情况(从主页爬到目录然后爬入内容页面),蜘蛛返回的状态码。

  网站日志分析和监控能给SEO带来什么好处?

  

  分析和监控天数 网站 可以提供以下好处:

  日志分析后可以反映网站在不同搜索引擎上的SEO效果。

  日志分析后可以反映网站关键目录的权重。

  

  日志分析后可以反映网站关键页面的权重。

  经过日志分析,可以反映搜索引擎蜘蛛爬取页面的压力。

  通过在日志中分析蜘蛛返回的状态码,可以及时发现网站中是否有错误或者蜘蛛无法爬取的页面。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线