这篇文章最初于2017年11月27日发布。它是在新的遗物集群资源管理器和将Kubernetes元数据注入APM代理的步骤中的信息。

过去几年来,Kubernetes.已经成为编排和管理应用程序容器的事实标准。实际上,本地云应用程序领域的所有重要参与者——其中许多是激烈的竞争对手——都支持Kubernetes作为行业标准。

在新遗物中,Kubernetes的故事归结为几个战略点。首先,我们相信,对于所有迄今为止的成功,Kubernetes实际上是 - 令人惊讶的 - 仍然在实现其全部潜力的早期之旅。明天的Kubernetes环境将以赋予我们今天所看到的规模运行。随着Kubernetes环境继续扩大,他们还将继续获得更复杂 - 并为监测其性能和健康的努力提出更大的挑战。

其次,我们的许多客户告诉我们,他们看到了利用New Relic平台过渡到Kubernetes并运行他们的应用工作负载的巨大价值。因此,我们一直在努力扩展和升级New Relic平台,为Kubernetes环境设计新一代监控工具。这些功能将帮助我们的客户在采用Kubernetes来管理和编排他们的容器化工作负载时保持快速移动和充满信心地行动。

新的遗物和kubernetes:一个强大的配对

大多数部署Kubernetes环境的组织今天共享相同的基本目标:通过使用自动化,工作负载管理和其他启用技术,在几乎任何比例下最大化运行集装箱应用程序的好处。在实现这一目标方面,难以夸大策划的重要性,尤其是Kubernetes。如果没有这些功能,管理和优化集装箱化工作负载,微服务和相关创新的纯粹复杂性 - 特别是在尺度部署时 - 可能很容易超过他们的好处。

虽然Kubernetes擅长抽象掉与管理集装箱工作负载相关的大部分辛劳,但它也引入了自己的一些复杂性。Kubernetes环境包括一个附加层,在应用程序和底层基础架构之间发挥作用。监视和维护这些kubernetes环境的性能和健康的挑战,或者发生故障排除问题,可能是令人生畏 - 特别是在大规模规模处部署这些环境的组织。

这是新的遗物平台将图片作为当今Kubernetes环境中的强大而独特的补充。新的遗物全部位于Kubernetes上,这就是为什么我们一直在稳步扩展和升级我们对Kubernetes环境的完全可观察性的能力。这包括为您提供快速,轻松地从高级,高级,kubernetes集群的性能和健康的高级景观中移动和健康的能力,从而识别和解决性能问题所需的节点,容器和应用程序级可见性。它还包括借助应用程序和监控kubernetes基础架构的能力,以及应用程序,这对于了解依赖性和隔离潜在的性能问题至关重要。

使用新的遗物实现端到端的Kubernetes监控

考虑到这一点,我们想向您介绍New Relic平台目前引入的一些最强大的功能,用于监控Kubernetes应用程序并解决这些环境中的性能问题。特别是,我们将演示如何通过将特定于kubernetes的元数据注入APM代理来显示它,这样您就可以研究性能问题并排除应用程序事务错误。

端到端视图的重要性

通过设计,应用程序通常不了解它们是否在容器中运行或在Orchestration平台上运行。例如,Java Web应用程序没有任何特殊的代码路径,该路径仅在Kubernetes集群上的Docker容器内运行时执行。这是容器(和容器编排引擎)的一个关键权益:您的应用程序及其业务逻辑与其运行时环境的具体细节分离。如果您必须将底层基础架构转移到新的集装箱运行时或Linux版本,则不必完全重写应用程序代码。

同样的,新的遗物APM语言代理 - 应用程序代码跟踪丰富的事件,指标和跟踪的仪器 - 不关心应用程序运行的位置。它可以在遗忘机架中的古代Linux服务器中运行或最新的72-CPU亚马逊EC2.实例。然而,在监视由编排层管理的应用程序时,能够将应用程序错误跟踪(例如)与它所运行的容器、pod或主机关联起来,对于调试或故障排除非常有用。

所有这些都是kubernetes应用程序监控解决方案的能力,因为他们帮助客户回答了一个全常见的问题:性能问题真正居住在代码中,或者它实际上与底层基础设施相关联吗?

将Kubernetes元数据链接到应用程序仪器

传统上,对于使用新的遗物APM来收集的应用程序交易痕迹或分布式迹线,我们的代理可以告诉您代码正在运行的服务器的准确。然而,在许多集装箱环境中,这变得更加复杂:应用程序运行的工作节点(主机)(在容器/吊舱中)通常是短暂的 - 它们来到了。配置在kubernetes中运行的应用程序的策略来自动缩放其主机计数的策略相当常见,以响应流量波动,因此您可以调查慢速事务跟踪,但是该应用程序运行的容器或主机不再存在。了解应用程序当前运行的容器或主机不一定是它在运行5,15或30分钟前的位置的指示 - 当问题发生时。

幸运的是,您现在可以将kubernetes元数据曲面,并将其链接到您的APM代理作为事务跟踪,以便探索性能问题和故障排除应用程序事务错误。

有一些兼容性和要求在入门前,您将要查看。例如,您的群集需要启用MutateAdmissionWebhook控制器,该控制器(如本写作)需要Kubernetes 1.9或更高版本,默认情况下可能无法启用。并务必审查哪些APM代理可以链接到Kubernetes元数据

将Kubernetes元数据注入您的代理:

  1. 下载以下yaml文件:
    curl - o http://download.newrelic.com/infrastructure_agent/integrations/kubernetes/k8s-metadata-injection-latest.yaml
  2. 编辑此文件,替换使用集群的名称。
  3. 将yaml文件应用于Kubernetes集群:
    kubectl应用-f k8s-metadata-jecivent-lest.yaml

获取注入文件后,您可以选择将元数据注入到群集中的特定名称空间,或者配置元数据注入以使用自定义证书,如果您使用它们。有关更多信息,包括验证和故障排除元数据注入的步骤,请参阅我们的文件

笔记:我们的Kubernetes元数据注射项目是开源的。这是这一点链接APM和基础架构的代码自动管理证书的代码

用New Relic探索Kubernetes中的应用性能

在将元数据注入文件部署到我们的Kubernetes集群之后,Kubernetes的自定义参数开始出现在新的遗物UI中。

在以下屏幕截图中,我们看到一些错误细节;事务属性显示我们,其中包括错误发生的Kubernetes主机名和IP地址:

Kubernetes pod元数据公开为事务属性

我们还看到了在分布式跟踪属性下显示出相同的元数据。

接下来,我们使用新的遗物见解查看相同的插装以查看基于pod名称的应用程序事务的性能。为了在Insights中做到这一点,我们只编写了以下自定义新的遗物查询语言(NRQL)询问:

从事务中选择百分位数(持续时间,95),其中appname ='newrelic-k8s-node-needis'和name ='webTransaction / ExpressJS / GET //'Facet K8S_POD_NAME TimeSeries Auto

结果如下:

洞察中的自定义事务查询

Kubernetes提供了大量有用的元数据,您可以使用这些元数据获取有关性能异常值的有用信息,并跟踪单个错误。

例如,在此示例中,APM错误配置文件自动通知,近57%的错误来自相同的POD和POD IP地址:

POD错误以APM错误配置文件显示

APM错误概要自动合并自定义参数,并使用不同的统计度量来确定异常数量的错误是否来自容器集群中的某个pod、IP或主机。从那里,您可以锁定基础设施或特定于集群的错误根源(或者您可能只会发现一些坏代码)。

APM和Kubernetes Cluster Explorer

上面的讨论展示了如何在APM中利用Kubernetes元数据来帮助解决问题。相反,如果您从基础设施方面开始研究问题,您也可以在新宣布的New Relic中可视化应用程序性能指标Kubernetes集群资源管理器。If you identify issues within a node or a pod but don’t see any issues with the infrastructure itself, you can quickly check application metrics (throughput, response time, error rate and violations) for the application instance running on that specific node/pod.

Kubernetes集群管理器UI

Kubernetes集群浏览器可以让团队在一个丰富的、精心设计的UI中同时深入了解应用程序和基础设施指标,从而简化复杂的环境。

有效地监控在Kubernetes中运行的应用程序不仅需要对应用程序的代码级可见性,还需要能够将应用程序与它们所运行的容器、吊舱或主机关联起来。通过为应用程序的工作负载识别特定于pod的性能问题,您可以更快地排除性能问题,并确信您的应用程序始终可用、快速运行并执行它应该执行的操作。

使用Kubernetes集群资源管理器,您可以了解应用程序的执行情况。此外,单击应用程序(在本例中为“Order-Packaging”)会将您发送到APM概述页面,在那里您可以对该特定应用程序进行故障排除和分析。

您的客户可能不关心Kubernetes ...但您必须

您的客户可能不在乎您是否使用传统的虚拟机;一个流血边缘,多云联邦Kubernetes集群;或家庭成长的手术编制层。他们只是希望您提供的应用程序和服务可供使用,可靠,快速。

然而,随着Kubernetes的崛起,以及商政角度的新技术概念,团队需要新的背景,以了解和探索其应用程序和代码中的性能。我们认为,为了有效构建和运行现代软件,您需要在应用层中的可见性 - 尤其是当这些应用程序在Kubernetes集群内运行时。我们期待继续与客户和更广泛的Kubernetes社区一起工作,并创建和提供所需的解决方案。亚博直播平台

Anil是一位新的遗物APM团队的高级产品经理。在加入新的遗物之前,除了以前的角色作为用于消费电子设备的工程师的工程师,ANIL在不同的企业软件和硬件公司作为产品经理工作多年。查看帖子

对新遗物博客的写作有兴趣吗?亚搏体育登入网送我们一个球场!!