亚马逊AWS官方博客

Sumo Logic 与 Amazon EKS 集成

Amazon Elastic Kubernetes Service (Amazon EKS) 让在 AWS 上使用 Kubernetes 部署、管理和扩展容器化应用程序更加简便。

在本文中,我们将介绍 Sumo Logic 如何使用开源工具 Helm、Fluent Bit、Fluentd、Prometheus 和 Falco 与 Amazon EKS 集成,以及如何将其用于:

  • 监视集群、pod 和控制平面组件的运行状况。
  • 确定资源瓶颈、扩展需求和可用性。
  • 跨容器关联和调查错误。
  • 响应和修复从基础架构到应用程序的应用程序故障的根本原因。

Sumo Logic 是 AWS 合作伙伴网络 (APN) 高级技术合作伙伴,在安全性、数据和分析以及开发运营方面具有 AWS 能力。Sumo Logic 致力于帮助组织更好地实时了解他们的 IT 基础架构。Sumo Logic 集成了多种云服务和本地服务,使跨不同服务聚合数据变得轻松而又简单,并让用户全面了解其运营、业务和安全分析。

EKS 日志和指标收集设置以及应用程序安装

配置 Sumo Logic 日志和指标集成的基本步骤是:

  • 使用开源技术安装和配置 Sumo Logic 集合,以收集日志和指标。
  • 安装 Sumo Logic Kubernetes 应用程序以可视化日志并定义警报。

安装和配置 Sumo Logic 集合以收集日志和指标

Sumo Logic 利用 HelmFluent BitFluentdPrometheusFalco 等开源技术从 EKS 集群收集日志和指标信息。

图 1 所示为收集过程概览:

Sumo Logic 利用 Fluentbit、Fluentd、Prometheus、Falco + 和 Cloudwatch 等开源技术与 EKS 集群集成

图 1:Sumo Logic EKS 集成

  1. 设置、收集和充实:可使用单个 Helm 图表设置整个收集过程。Helm 是一种开源工具,它使用一种称为图表的打包格式。图表是描述一组相关的 Kubernetes 资源的文件集合。可使用单个图表部署简单的内容(如 memcached pod)或复杂的内容(如具有 HTTP 服务器、数据库和高速缓存的完整 Web 应用程序堆栈)。Fluent Bit、Fluentd、Prometheus 和 Falco 部署在整个集群中,以收集日志、指标、事件和安全数据。 下面是每个组件的简要描述。
    • Fluentd 是用于统一日志记录层的开放源数据收集器。 Fluentd 允许您统一数据收集和使用,以便更好地使用和理解数据。Fluentd 是用 C 语言和 Ruby 编写的,只需占用很少的系统资源。普通实例运行 30-40MB 的内存,每个核心每秒可以处理 13000 个事件。
    • 如果内存要求较为严格 (-450kb),请尝试使用 Fluentd 轻量级转发器 Fluent Bit。它包含多个 Fluentd 插件,可对指标进行解析和格式化,并使用元数据进行充实。数据经过充实和标记,包括其在集群中所处位置的详细信息;服务、部署、命名空间、节点、pod、容器及其标签。 然后,将日志和指标转发到托管收集器上的 HTTP 源。Fluent Bit 是一个开源的多平台日志处理器和转发器,允许您从不同的源收集数据/日志,然后将其统一并发送到多个目的地。它与 Docker 和 Kubernetes 环境完全兼容。Fluent Bit 部署在每个节点上。它用来收集容器日志并转发到 Fluentd 部署。
    • Fluentd 部署将事件转发到托管收集器上的 HTTP 源。
    • Prometheus 是一个开源系统监控和警报工具包。 大多数 Prometheus 组件都是用 Go 编写的,因此容易构建和部署为静态二进制文件。它会抓取 Kubernetes 的 node-exporter 附加组件公开的指标和 kube-state-metrics 组件,并将指标写入 Fluentd 部署上的端口。
    • Falco 是一种开源的行为活动监控代理,并提供对容器的原生支持。Falco 允许您定义高细粒度规则,以使用灵活的语法检查涉及文件和网络活动、进程执行、IPC 等方面的活动。如果违反这些规则,Falco 会通知您。 Falco 部署在每个节点上。它将监控集群、工作节点和运行中的容器是否存在可疑活动,并生成安全警报(由 Fluent Bit 收集)。
  1. 控制平面日志 – Amazon EKS 控制平面日志记录直接从 Amazon EKS 控制平面向您的账户中的 Amazon CloudWatch 日志提供审计和诊断日志。这些日志通过 AWS Lambda 转发到 Sumo Logic。要设置 EKS 控制平面集合,请遵循 Sumo Logic 文档中的步骤来配置 CloudWatch 日志集合

安装 Sumo Logic Kubernetes 应用程序以可视化日志并定义警报

配置集合之后,便可以安装适用于 Amazon EKS 的 Sumo Logic 应用程序并配置警报。有关更多信息,请参阅有关如何安装 Amazon EKS – 控制平面应用程序和查看控制面板的说明。

Explore 和 App 控制面板

现在我们已了解如何设置集合和安装应用程序,让我们看看如何有效浏览 Kubernetes 层次结构并通过控制面板获取洞察。

Explore 提供了 Kubernetes 环境层次结构的可视化图形,您可以通过它直观地进行导航。您可以过滤显示内容,关注部署、节点、服务或命名空间。

Explore 控制面板。

图 2:Explore 控制面板

如下图所示,选择左侧的节点、部署、服务或命名空间后,您将能够在右侧可视化显示与该实体相关的运行状况和性能。  例如,如果选择左侧的 Kubernetes Namespace View 并选择 EKS 集群,则可以选择右侧的 Kubernetes – Cluster Overview 控制面板,以获取集群运行状况和性能的高级视图,如下所示:

集群运行状况和性能的高级视图。

图 3:EKS Cluster Overview

在集群级别,有多个控制面板可用来监控 EKS 控制平面组件并进行故障排除。EKS API Server Audit Overview 控制面板(图 4)可用于在 Kubernetes 审计服务器上获取洞察,如请求失败的原因、失败最多的 URL 等。

EKS API Server Audit Overview 控制面板可用于在 Kubernetes 审计服务器上获取洞察,如请求失败的原因、失败最多的 URL 等。

图 4:EKS API Server Audit Overview

EKS Controller Manager 控制面板(图 5)也可用于集群级别,提供了对 Kubernetes 核心控制循环的可见性。通过此控制面板,您可以轻松查看资源修改、扩展操作、严重性趋势等。

EKS Controller Manager。

图 5:EKS Controller Manager

Explore 和 App 控制面板故障排除

第 1 步:分析集群

Cluster Overview 控制面板上显示了集群上运行的所有组件的运行状况和资源利用率。可轻松识别资源使用峰值、错误、违反安全规则或失败组件,以确定需要解决的配置问题或整体管理问题。

使用 Cluster Overview 控制面板分析 EKS 集群。

图 6:使用 Cluster Overview 控制面板分析 EKS 集群

如图 6 所示,pod falco-2r9d7 的行为异常,已被终止。

第 2 步:浏览命名空间

要找到 EKS 集群问题的根本原因,请在导航面板中选择 kube-system 并切换到 Namespace Overview 控制面板以调查命名空间。该控制面板提供了有关部署中运行的 pod、失败的 pod、错误、CPU 和内存使用情况、文件系统使用情况、已终止和等待的 pod 和容器的信息。图 7 突出显示了一个 pod 总是失败和重启的问题:

命名空间概览。

图 7:命名空间概览

第 3 步:向下钻取 pod 和容器

一旦确定存在问题的 pod,您就可以向下钻取 pod 控制面板以获取更详细的数据。您可以在图 8 中看到 falco-2r9d7 pod 位于 CrashLoopBackOff 中:

EKS 集群上运行的 Pod。

图 8:EKS 集群上运行的 Pod

您可以进一步向下钻取到容器级别以找到具体错误。在这种情况下,如下所示,容器无法下载映像:

容器日志。

图 9:容器日志

第 4 步:向下钻取日志和指标搜索

一旦确定 pod 和容器出现问题,就可以使用日志覆盖功能将指标性能与负责此行为的日志相关联。单击垂直条可以缩小与指标关联的特定时间间隔,并查看相关的日志消息:

日志和指标覆盖。

图 10:日志和指标覆盖

上面的屏幕截图显示了包含完整错误详细信息的日志覆盖,即“Download failed, the requested URL returned error.404 Not Found.” 通过此信息,您便可以采取纠正措施。

清理

为了避免您的 AWS 账户在未来产生费用,为此项目删除在您的 AWS 账户中创建的资源。您只需转到 Sumo Logic 网页中的 Administration > Account(管理 > 账户)删除 EKS 集群并删除您创建的Sumo Logic 免费试用版。在页面底部的 Delete this Organization from Sumo Logic?(从 Sumo Logic 删除此组织?)部分下,单击 Delete Org(删除组织)。在对话框 Delete This Organization from Sumo Logic? 中,输入 DELETE 以确认。单击 Delete Org(删除组织)

小结

在本文中,我们介绍了 Sumo Logic 如何与 Amazon EKS 集成,以便您:

  • 使用 Fluentd、Fluent Bit、Helm、Prometheus 和 Falco 等开源工具从 Amazon EKS 收集日志和指标。
  • 使用 Explorer 功能查看 EKS 集群并对其进行故障排除。
  • 使用 Sumo Logic 控制面板和搜索功能来调查根本原因并修复问题。

后续步骤

要开始使用,请查看 Sumo Logic Kubernetes 帮助文档。如果您还没有 Sumo Logic 账户,可以注册免费试用版

有关安全性和 DevSecOps 方面的更多内容,请查看 Sumo Logic 博客

Arun Patyal

Arun Patyal

Arun Patyal 是 Sumo Logic 的高级集成工程师,在开发和集成应用程序方面拥有超过 12 年的经验。在此之前,Arun 是 Saba Software Inc. 的专业服务顾问。Arun 毕业于印度 I2IT- Pune,拥有高级软件技术硕士学位。他工作之余的兴趣包括徒步旅行、旅游和帮助流浪狗

本博文中的内容和意见属于第三方作者,AWS 不对本博文的内容或准确性负责。