wecenter采集接口(Rancher平台内如何做容器日志收集现状纵览(一) )

优采云 发布时间: 2021-11-15 22:23

  wecenter采集接口(Rancher平台内如何做容器日志收集现状纵览(一)

)

  介绍

  文档参考。

  对于一个完整的容器平台,容器日志采集也是一个重要的环节。尤其是在微服务架构盛行的情况下,很多程序的访问监控和健康检查都依赖于日志信息的采集。由于Docker的存在,容器平台中的日志采集方式不同于传统的方式。日志的输出和采集不同于传统的方法。它曾经非常不同。本文讨论如何在 Rancher 平台中采集容器日志。现状

  看目前容器日志采集的各种解决方案,无非两种方式:一、直接采集Docker标准输出,可以通过Docker日志驱动发送到对应的采集程序;二、非标准输出,延续传统的日志写入方式。容器中的服务直接将日志写入Log文件,通过Docker卷映射形式将日志文件映射到Host。Log采集 程序直接采集映射的Log文件。三、通过Journald采集二进制日志数据。

  PS:

  标准输出:通过docker logs查看的日志信息。在Ubuntu OS下,该信息默认保存在以容器ID为前缀的-json.log文件中的/var/lib/docker/containers路径下以容器ID命名的文件夹中。

  非标准输出:根据Docker容器的特点,容器启动后必须有一个服务保持前台运行。如果一个容器需要运行多个服务,那么按照启动顺序,前面的服务必须在后台运行。因此,默认情况下,这些后台运行的服务生成的日志无法作为标准输出获取,生成的日志默认保存在/var/log目录下。

  第一种方法很简单,可以直接配置相关的日志驱动(Log driver),但是这种方法有一些缺点:

  当宿主机的容器密度比较高时,对Docker Engine的压力比较大。毕竟,容器的标准输出必须由 Docker Engine 处理。虽然原则上我们希望遵循每个容器部署一个服务的原则,但有时在特殊情况下,容器中存在多个业务服务是不可避免的。这时候很难实现所有服务的标准输出日志,这就需要使用传统的方式来采集日志。虽然我们可以选择多种 Log Drivers,但有些 Log Drivers 会破坏 Docker 原生体验。例如,日志输出到其他日志服务器后,docker logs 将看不到容器日志。

  基于以上考虑,一个完整的日志采集程序必须同时满足标准输出采集和日志卷(非标准输出)采集或通过journald采集二进制日志数据。当然,在一个完整的日志系统中,不仅仅是采集,还有日志存储和UI展示。日志存储的开源实现有很多,一般用户都会有自己喜欢的选择。UI展示对各个公司的要求就更高了,很难形成更好的标准,一般都是通过定制的方式来解决的。因此,本文提出的主要解决方案是日志采集解决方案。当然,存储和 UI 显示与开源实现对接。没有特殊要求,也可以有完整的体验。

  

  Rancher解决方案(json-文件驱动)解决方案介绍

  如上图所示,ElasticSearch & Kibana 可以直接用于日志存储和UI展示。日志采集如前所述,需要连接两种采集模式(标准输出日志和非标准输出)。本方案中日志采集部分采用了Fluentd & Logging Helper组合。Fluentd 是一个非常通用的日志程序,具有出色的性能。与Logstash相比,在同样的压力下,它的内存消耗要少得多。

  为了保证Dokcer和Rancher体验的完整性,Docker Log Driver选择Json-file或者Journald的原因是:一、json-file和journald比较常用;二、这两个驱动,docker日志依然可以输出内容,保证了体验的完整性。实施过程

  方案实现过程:Fluentd连接Json-file或Journald驱动,获取标准输出日志数据或二进制日志数据;Logging Helper可以理解为Fluentd的助手,可以识别映射到容器日志卷的路径(非标准输出),并通知Fluentd进行采集。Fluentd 采集数据后,将数据传输并存储到 ES,最后 Kibana 直接将数据显示在 ES 中。

  下面开始讲解整个程序的部署过程。先用一张图来描述整体部署结构,如下:

  

  解决方案部署 ElasticSearch & Kibana 部署

  网页登录Rancher,进入应用商店,搜索ElasticSearch,推荐安装2.x版本。

  

  点击查看详情。进入后,修改最后一个Public端口。默认为 80 端口。更改为其他端口以避免端口冲突。

  然后进入应用商店,搜索 Kibana。

  

  在配置选项中,需要选择Elasticsearch-clients

  

  最后根据实际情况修改Public端口,避免冲突。

  

  服务正常启动后,即可通过该端口访问 Kibana 网页。

  

  Rancher日志服务部署目前Rancher日志不在官方仓库,需要使用Rancher日志,需要添加自定义存储地址。点击小图管理系统设置进入,点击添加应用商店,

  名称:rancher -logging

  地址:

  分支:大师

  最后点击保存并返回应用商店。在应用商店输入log进行搜索:

  

  点击查看详情进入并进入配置页面: 本例中,除了Elasticsearch源的配置如图所示,保持默认:

  

  以上部署完成后,部署一些应用,生成一些访问日志,在Kibana界面可以看到:

  

  如果要使用日志卷方式,需要在Service启动时配置Volume,Volume名称需要匹配之前设置的Volume Pattern:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线