通过腾讯云日志服务收集TKE日志

  在2年前的kubernetes1.12版本中,使用了EFK的方案来收集日志,那时候不管是程序还是nginx日志都没有格式化,本次项目主要为游戏的官网项目,分为前端和后端,主要使用LNMP架构,所以本次要收集的日志就是nginx和php的日志,在kubernetes1.12实战中,nginx日志没有配置为json,导致写了大量的日志采集规则,在今天的TKE1.18中,nginx将格式化为json,这样更容易维护以及采集。

 

1.操作场景

  日志采集功能是容器服务 TKE 为用户提供的集群内日志采集工具,可以将集群内服务或集群节点特定路径文件的日志发送至腾讯云日志服务(CLS)。日志采集功能适用于需要对 Kubernetes 集群内服务日志进行存储和分析的用户。

  日志采集功能需要为每个集群手动开启并配置采集规则。日志采集功能开启后,日志采集 Agent 会在集群内以 DaemonSet 的形式运行,并根据用户通过日志采集规则配置的采集源、CLS 日志主题和日志解析方式,从采集源进行日志采集,将日志内容发送到 CLS 并存储。可根据以下操作开启日志采集功能:

 

2.前提条件

  请在开启前保证集群节点上有足够资源。开启日志采集功能会占用您集群的部分资源。

    • 占用 CPU 资源:0.11 - 1.1核,日志量过大时可根据情况自行调大。
    • 占用内存资源:24 - 560MB,日志量过大时可根据情况自行调大。
    • 日志长度限制:单条512K,如超过会截断。

  若使用日志采集功能,请确认 Kubernetes 集群内节点能够访问日志服务 CLS。且以下日志采集功能仅支持 Kubernetes 1.10 及以上版本集群。

 

3.概念

  日志采集 Agent:TKE 用于采集日志信息的 Agent,采用 Loglistener,在集群内以 DaemonSet 的方式运行。

  日志规则:用户可以使用日志规则指定日志的采集源、日志主题、日志解析方式和配置过滤器。

    • 日志采集 Agent 会监测日志采集规则的变化,变化的规则会在最多10s内生效。
    • 多条日志采集规则不会创建多个 DaemonSet,但过多的日志采集规则会使得日志采集 Agent 占用的资源增加。

  日志源:包含指定容器标准输出、容器内文件以及节点文件。

    • 在采集容器标准输出日志时,用户可选择所有容器、或指定工作负载和指定 Pod Labels 内的容器服务日志作为日志的采集源。
    • 在采集容器文件路径日志时,用户可指定工作负载或 Pod Labels 内容器的文件路径日志作为采集源。
    • 在采集节点文件路径日志时,用户可设定日志的采集源为节点文件路径日志。

  消费端:用户选择日志服务 CLS 的日志集和日志主题作为消费端。

  提取模式:日志采集 Agent 支持将采集到的日志以单行文本、JSON、分隔符、多行文本和完全正则的形式发送至用户指定的日志主题。

  过滤器:开启过滤器后可以根据用户指定的规则采集部分日志,key 支持完全匹配,过滤规则支持正则匹配,如仅采集 ErrorCode = 404 的日志。

 

4.操作步骤

4.1 开启日志采集

  1.登录容器服务控制台,选择左侧导航栏中的集群运维 > 功能管理

  2.在“功能管理”页面上方选择地域,单击需要开启日志采集的集群右侧的设置。如下图所示:

  3.在“设置功能”页面,单击日志采集编辑,开启日志采集后确认。如下图所示:

4.2 配置日志规则

  1.登录容器服务控制台,选择左侧导航栏中的集群运维 > 日志规则

  2.在“日志采集”页面上方选择地域和需要配置日志采集规则的集群,单击新建。如下图所示:

  

  3.在“新建日志采集规则”页面中,选择采集类型,并配置日志源。目前采集类型支持容器标准输出容器文件路径节点文件路径

  说明:

  对于容器的标准输出及容器内文件(非 hostPath 挂载),除了原始的日志内容, 还会带上容器或 kubernetes 相关的元数据(例如:产生日志的容器 ID)一起上报到 CLS,方便用户查看日志时追溯来源或根据容器标识、特征(例如:容器名、labels)进行检索。
  容器或 kubernetes 相关的元数据请参考下方表格

字段名 含义
container_id 日志所属的容器 ID。
container_name 日志所属的容器名称。
image_name 日志所属容器的镜像名称 IP。
namespace 日志所属 pod 的 namespace。
pod_uid 日志所属 pod 的 UID。
pod_name 日志所属 pod 的名字。
pod_lable_{label name}

日志所属 pod 的 label(例如一个 pod 带有两个 label:app=nginx,env=prod,

则在上传的日志会附带两个 metedata:pod_label_app:nginx,pod_label_env:prod)。

  4.配置日志服务 CLS 为消费端。选择日志集和相应的日志主题,可以选择新建和已有日志主题。如下图所示:

  注意:

    • 日志服务 CLS 目前只能支持同地域的容器集群进行日志采集上报。
    • 若日志主题下已存在10个日志主题,则不能新建日志主题。

  

  5.单击下一步,选择日志提取模式。如下图所示:

  注意:一个日志主题目前仅支持一个采集配置,请保证选用该日志主题的所有容器的日志都可以接受采用所选的日志解析方式。若在同一日志主题下新建了不同的采集配置,旧的采集配置会被覆盖。

  6.根据需求开启过滤器并配置规则,并单击完成,完成创建。如下图所示:

  (这里配置的是不符合日志采集格式的采集出来用什么标识)

 

参考文档:https://cloud.tencent.com/document/product/457/36771

作者:小家电维修

相见有时,后会无期。

原文地址:https://www.cnblogs.com/lizexiong/p/15576283.html