使用 OCI Logging Analytics 监视 Kubernetes 日志数据

Kubernetes 提供了一个高度强大且高度可定制的平台来管理自动部署和扩展容器化工作负载。为整个环境构建监控和故障排除系统是一项非常具有挑战性的任务,可能会耗费开发和 IT 团队宝贵的时间。许多基于 Kubernetes 的计划无法起飞,因为缺乏互补的监视解决方案,该解决方案强大、可定制、可扩展且可自动部署。Oracle Cloud Infrastructure Logging Analytics 为底层基础设施、Kubernetes 平台和云原生应用提供一键式端到端 Kubernetes 监视解决方案,弥合了这一监视差距。将日志数据从本地 Kubernetes 集群和 Oracle Cloud Infrastructure Kubernetes Engine (也称为 Kubernetes Engine 或 OKE )发送到 Oracle Cloud Infrastructure Logging Analytics 以进行深入检查和分析。

基于 Kubernetes 的环境可以分为三层,每个层由众多不断发展的组件组成,这些组件由业务需求驱动。

  • 基础设施层:包含许多组件,包括网络资源、计算实例和 Kubernetes 节点主机。
  • Kubernetes 平台层:包含各种 Kubernetes 服务,例如网络、kubelet 服务和 DNS,为 kubernetes 平台提供支持。
  • 应用层:包含不同的技术、数据库和应用。

体系结构

此架构展示了如何使用 Oracle Cloud Infrastructure Logging Analytics 监视 Kubernetes 平台和云原生应用。

下图是单个 Oracle Cloud Infrastructure (OCI) 区域中 Kubernetes 集群的拓扑示例。它显示了基础设施层,第二个图突出显示了 kubernetes 和应用层。

下面是 kubernetes-master-worker-nodes.png 的说明
插图 kubernetes-master-worker-nodes.png 的说明

kubernetes-master-worker-nodes-oracle.zip

下图说明了使用 OCI Logging Analytics 对本地 Kubernetes 集群和 Oracle Cloud Infrastructure Kubernetes Engine (也称为 Kubernetes Engine 或 OKE )进行 Kubernetes 监视。此解决方案将 Kubernetes 集群的各种日志集合集成到 OCI 日志分析中,并在收集的日志的基础上提供丰富的分析功能。您可以通过修改现成的配置来定制日志收集。

下面是 k8s-oke-monitoring.png 的说明
插图 k8s-oke-monitoring.png 的说明

k8s-oke-monitoring-oracle.zip

该体系结构具有以下组件:

  • Tenancy

    租户是 Oracle 在您注册 Oracle Cloud Infrastructure 时在 Oracle Cloud 中设置的安全隔离分区。您可以在您的租户内的 Oracle Cloud 中创建、组织和管理资源。租户是公司或组织的同义词。通常,公司将具有单个租户并反映其在该租户中的组织结构。单个租户通常与单个订阅关联,单个订阅通常只有一个租户。

  • 区域

    Oracle Cloud Infrastructure 区域是包含一个或多个数据中心(称为可用性域)的本地化地理区域。地区独立于其他地区,远距离可以把它们分开(跨越国家甚至大陆)。

  • 区间

    区间是 Oracle Cloud Infrastructure 租户中的跨区域逻辑分区。使用区间来组织、控制访问并设置 Oracle Cloud 资源的使用限额。在给定的区间中,您可以定义用于控制资源访问和设置权限的策略。

  • 虚拟云网络 (VCN) 和子网

    VCN 是一个可定制的软件定义网络,您可以在 Oracle Cloud Infrastructure 区域中设置。与传统的数据中心网络一样,VCN 允许您控制您的网络环境。VCN 可以具有多个不重叠的 CIDR 块,您可以在创建 VCN 后更改这些块。您可以将 VCN 划分为子网,子网可以限定为区域或可用性域。每个子网都包含一系列不与 VCN 中的其他子网重叠的连续地址。可以在创建后更改子网的大小。子网可以是公共子网,也可以是专用子网。

  • 负载平衡器

    Oracle Cloud Infrastructure Load Balancing 服务提供从单个入口点到后端多个服务器的自动流量分配。

  • 服务网关

    通过服务网关,您可以从 VCN 访问其他服务,例如 Oracle Cloud Infrastructure Object Storage 。从 VCN 到 Oracle 服务的流量通过 Oracle 网络结构传输,不会通过互联网传输。

  • 日志分析

    Oracle Cloud Infrastructure (OCI) 日志分析是一项完全托管的 SaaS 区域服务,在超过 27 个区域提供收集、索引、扩充、查询、可视化和预警功能,可帮助企业在本地、OCI 或第三方云上运行的任何 IT 组件获取日志。

  • 日志记录分析源

    日志分析源是一种配置资源,它提供了用于解析、提取、标记、数据屏蔽和其他扩充的规范,可确保正确摄取日志并对日志进行索引以进行分析和监视。此架构为 Kubernetes 服务、应用和对象使用 30 多个预定义源。这些来源不断增强,以提供更深入的分析功能。

  • Kubernetes 系统云池

    Kubernetes 系统云池是可部署的小型计算单元,您可以在 Kubernetes 中创建和管理。Pod 是一个或多个容器,具有共享存储和网络资源以及运行容器的规则。

  • 用户云池

    在 Kubernetes 集群上启动的应用程序。来自编写 STDOUT/STDERR 的应用程序云池的所有日志通常位于 /var/log/containers/ 下。具有定制日志处理程序的应用程序可能会以不同的方式路由其日志,但通常在节点上(通过卷)可用。

  • 控制层服务和云池

    Kubernetes 平台 Control Plane Services 和 pod。控制层管理 Kubernetes 集群中的 worker 节点和 Pod。worker 节点运行容器化应用程序。每个集群至少有一个 Worker 节点。Worker 节点托管作为应用程序工作负载组件的 Pod。

  • 节点操作系统服务

    在安装了 Kubernetes 的实例上运行的 Linux 服务。在 OS 服务上收集日志。

  • 日志和对象收集器云池

    日志和对象收集器云池由副本集、FluentD 和守护进程集组成。

    • FluentD 收集器

      FluentD 是一个开源数据收集器,在数据源和后端系统之间提供统一的日志记录层。它允许对建筑数据处理管道进行统一的数据收集和使用。此体系结构使用容器化的 FluentD 容器,该容器作为守护进程集和 kubernetes 集群上的复制集运行。它使用日志分析流畅输出插件将日志上载到 OCI 日志分析。

    • 日志分析 FluentD 插件

      FluentD 输出插件,连接到租户中的 OCI 日志分析服务以上载或摄取 FluentD 收集器收集的日志。

    • Kubernetes 对象

      Kubernetes 对象是 Kubernetes 系统中的持久性实体。Kubernetes 使用这些实体来表示集群的状态。在此体系结构中,以下 kubernetes 对象状态作为日志进行收集,以便进行历史分析和故障排除:

    • Kubernetes 守护进程集

      Kubernetes DaemonSet 是一种在 Kubernetes 上运行的工作负载,可确保所有(或某些)节点运行 Pod 的副本。将节点添加到集群时,会将云池添加到这些节点。当节点从集群中删除时,会收集这些云池的垃圾。

    • Kubernetes 副本集

      Kubernetes ReplicaSet 是一种在 Kubernetes 上运行的工作负载。它在任何给定时间保持一组稳定的副本云池运行。因此,它通常用于保证特定数量的相同 Pod 的可用性

  • Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine ( OCI Kubernetes Engine 或 OKE )是一项完全托管、可扩展的高可用性服务,可用于将容器化应用部署到云中。您可以指定应用所需的计算资源,Kubernetes Engine 在现有租户的 Oracle Cloud Infrastructure 上预配这些资源。OKE 使用 Kubernetes 跨主机集群自动部署、扩展和管理容器化应用。

  • 服务连接器

    Service Connector Hub 是一个云消息总线平台。您可以使用它来在 Oracle Cloud Infrastructure 中的服务之间移动数据。使用服务连接器移动数据。服务连接器指定源服务,该服务包含要移动的数据、要对数据执行的任务以及在完成指定任务时必须将数据交付到的目标服务。此架构中预配了一个服务连接器来收集网络和负载平衡器日志。

  • OCI 服务

    Oracle Cloud Infrastructure (OCI) 服务是一个云服务平台,支持您在高可用性、始终如一的高性能环境中构建和运行各种应用。

  • 服务和审计日志

    在 OCI Logging 服务中捕获服务和审计日志。OCI 日志记录是一项高度可扩展且完全托管的服务,用于通过服务连接器访问 VCN 和负载平衡器服务日志。

默认情况下,会收集 Kubernetes 系统服务日志和 Kubernetes 对象数据。

Oracle Cloud Infrastructure Kubernetes Engine 具有内置服务,每个服务都有不同的责任,并且作为部署或 DaemonSets 在集群中的一个或多个节点上运行。

Kubernetes 系统服务 Linux 系统服务 Kubernetes 控制平台 Kubernetes 对象(默认值:每 15 分钟) 定制应用程序日志
  • Kube Proxy
  • Kube Flannel
  • Kubelet
  • CoreDNS
  • CSI Node Driver
  • DNS Autoscaler
  • Cluster Autoscaler
  • Proxymux Client
  • Syslog
  • 安全日志
  • Cron 日志
  • 邮件日志
  • 审计日志
  • Ksplice Uptrack 日志
  • Yum 日志
  • Kube API Server
  • Kube Scheduler
  • Kube Controller Manager
  • Cloud Controller Manager
  • etcd
  • Nodes
  • Namespaces
  • Pods
  • DaemonSets
  • Deployments
  • ReplicaSets
  • Events
  • 将收集运行集群的所有定制应用程序日志。有关定制此行为的建议。

注意:

Kubernetes 控制层日志不包含在开箱即用的集合中,因为 OCI Kubernetes 引擎(也称为 OKE)不会公开这些日志。您可以从非 OKE Kubernetes 集群启用控制层日志。

推荐

使用以下建议作为起点。您的要求可能与此处描述的体系结构不同。

  • 日志组

    定义多个日志组以向不同团队提供写入访问权限,并避免共享敏感数据。日志组可以基于 Oracle E-Business Suite、数据库、OCI 基础设施、主机日志。

  • 成本管理

    Oracle Cloud Infrastructure (OCI) Logging Analytics 服务按活动存储和归档存储中的数据量计费。为了对日常问题进行故障排除并获得异常检测、模式检测和其他 ML 功能的优势,我们建议使用 90 天的活动存储期并将超过 90 天的日志移动到归档存储。可以根据需要快速撤回来自存储的归档的日志。

  • FluentD 多员工

    在多工作进程模式下为时间敏感日志配置 FluentD。

  • 定制应用程序日志

    此解决方案可自动捕获 Kubernetes 集群中运行的应用程序生成的所有日志。默认情况下,这些日志映射到 Kubernetes Generic Container Logs 日志源。应在 Oracle Cloud Infrastructure Logging Analytics 中创建特定于应用日志的语法分析器、源和扩充,以提取必填字段并将问题标签附加到日志。

  • 验证

    此体系结构支持基于实例主用户和 Oracle Cloud Infrastructure config 文件的验证。建议对 Oracle Cloud Infrastructure Kubernetes Engine (OKE) 进行基于实例主体的验证。

注意事项

部署此引用体系结构时,请考虑以下几点。

  • 性能

    查询性能基于时间范围和操作数,例如筛选器、分组依据等。为了提高查询性能,建议在摄取时使用特定标签和字段扩充日志。这是持续改进 IT 运营的一部分。

  • 安全性和基于角色的访问控制 (RBAC)

    自定义日志源定义以筛选任何 PII 数据并启用地理位置扩充。

  • 可用性

    Oracle Cloud Infrastructure Logging Analytics 是一个完全托管的高可用性 SaaS 服务。

部署

GitHub 中提供了用于部署 Oracle Cloud Infrastructure Logging Analytics DaemonSets 和 ReplicaSets 的 Kubernetes 清单和帮助图表。

  1. 转至 GitHub 。
  2. 将资料档案库克隆或下载到本地计算机。
  3. 按照 README 文档中的说明进行操作。

致谢

作者: Kumar Varun

贡献者: Zubair Ansari、Kiran Palukuri、Santhosh Vuda