我们只需4/30即可调整Futureestack注册。条款和条件适用。 现在注册

解锁新遗物红宝石代理的秘密权力

12分钟阅读

经过迈克尔兰

在我们的旅程中为主流带来可观察性我们开设了我们的代理商在开源标准上对齐并删除遥测数据收集的障碍。那包括这一点新的Ruby Agent。来自Ruby社区的大多数用户都将我们的Ruby代理部署到仪器上的Ruby在Rails应用程序上,但代理商是如此超过APM工具。

在这篇博文中,我将向您展示如何解锁Ruby代理的秘密超能力,这样您就可以使用它获得更丰富的遥测数据报告经验。我将演示分布式跟踪、增强的错误报告、线程分析和上下文中的日志如何一起工作,从而提供强大的可观察性体验,补充Ruby代理的APM特性。

代理安装简单

New Relic One为我们的代理商提供快速和高效的入职体验。要开始,请登录新的遗物一体,然后点击添加更多数据

出现提示时,选择Ruby代理:

按照提示,新遗物将生成自定义newrelic.yml配置文件将丢弃到Ruby应用程序的配置文件夹中。此文件为您提供了开始向新遗物发送数据所需的一切。

配置应用程序并在本地运行它后,onboard页面将自动更新。点击探索您的数据看到您的遥测数据实时填充。

Ruby应用程序的默认APM页面
Ruby应用程序的默认APM页面。

开箱即用,代理的默认配置仪器您的应用程序,并显示数据的基于事务的视图,控制器处理页面视图,API消费率,数据库查询等。

从以交易为中心的视图枢转到分布式跟踪

我们的原始APM是一个以交易为中心的UI,用于帮助Rails开发人员将Rails Stack与UI相关联。然后,它只是轨道,大多数Rails应用程序都是单片的,因此这是一个非常自然的观点来展示用户。如今,微服务架构 - 以及这些服务的分布式性质 - 意味着以交易为中心的方法使得较少的意义。这是哪里分布式追踪发挥作用。

要开始使用分布式跟踪,您需要在代理的配置文件中启用它。为此,请在最合适的环境部分中添加以下内容:

distributed_tracing:启用:true

通过分布式跟踪,您将获得直观的界面来探索通过实时数据进行组,排序和过滤的所有跨度的跨度:

分布式跟踪UI在Ruby应用程序中捕获发生的迹线
分布式跟踪UI捕获Ruby应用程序中发生的迹线。

单击跨度行以显示一个详细的迹线,您可以在其中深入钻取,看看在跟踪中发生的情况,并排除任何跨度排除的速度。


调查分布式迹线中的跨度。

具有分布式跟踪的红宝石应用中的错误

在新的遗物分布式跟踪中,跟踪详细信息页面显示发生错误的位置以及跨度级别的错误。例如,具有未处理错误的传统跟踪可能如下所示:

在上面的跟踪中有一个错误,但是您在跟踪细节的上下文中看不到它。要获得关于此错误的更多详细信息,请单击错误(来自活动菜单在左侧栏中)并提出以下内容:

查看Ruby应用程序中提出的错误的详细信息。
查看Ruby应用程序中提出的错误的详细信息。

要查看错误的完整堆栈跟踪,请选择显示框架代码复选框:

堆栈跟踪错误是新的遗物和强大的诊断工具中的标准,但让我们在跨度级别开启并跟踪错误。首先将以下内容添加到CONFIG文件:

分布式_tracing:启用:true span_events:已启用:true属性:已启用:true

启用Span_Events.属性因为斯普斯可以让您更丰富有关迹线中的每个跨度的详细信息。无需在跨度级别看到错误,但它确实可以进一步丰富每个跨度捕获的详细信息。

重新启动应用程序并将其用于分布式跟踪UI。从概述痕迹,您可以将所有带有错误的所有迹线隔离,这些迹线由红色点表示,如下例所示:

单击任何一个追踪才能调出跟踪树,可以在其中钻取,并恰好查看错误发生的位置以及捕获的新遗物错误/异常。如果您导航到“跟踪详细信息”页面,然后选择相应的跨度,则可以看到为该跨度记录的错误/异常。您将看到图中的红色亮点以及跨度行。如果单击错误跨度,则可以在右侧栏中获取错误详细信息:

检查跟踪详细信息UI中的跨度的错误/异常详细信息。
检查跟踪详细信息UI中的跨度的错误/异常详细信息。

使用线程分析来研究性能低下

假设您发现您的应用程序毫无理由地消耗了100%的CPU线程分析器工具是一个开始故障排除的好地方。打开它,等待几分钟的分析器来热身,然后开始过滤结果,找到推出这些计算周期的异常值。

让我们通过这些步骤,这样你就可以看到捕获个人资料的容易。

在新遗物中导航到Ruby应用程序,然后在左侧栏中点击线程分析器。选择您想要配置文件的已部署应用程序的实例,然后单击开始分析器

完成后,您将看到列出的新档案最近收集了个人资料列表:

从“配置文件”列表中选择条目以获取该配置文件的详细视图;从那里,您可以钻取并探索应用程序中发生的事情:

检查Ruby应用程序的线程配置文件。
检查Ruby应用程序的线程配置文件。

查看使用Thread Profiler的提示对于这个主题的一个很好的例子。

在上下文中调查Ruby应用程序中的错误

与度量标准和迹线一样,日志是可操作性的基本数据类型。和登录上下文,您可以将Ruby应用程序的日志数据与相关的APM数据链接。让我们来看看它是如何工作的。

在Rails应用程序上使用Ruby启用上下文中的最简单方法是使用丢包以JSON形式输出日志。您还必须使用日志转发器;Fluentd.是一个伟大的选择新遗物提供插件可以转发日志 - 你只需要你的New Relic许可证密钥

首先,将以下内容添加到您的Gemfile并运行捆绑安装激活它们:

#新遗物rpm宝石'newrelic_rpm'gem'fluent-plugin-newrelic'gem'rograge'

接下来,将以下内容添加到您的config / application.rb.要设置将以键属性和输出JSON格式化的数据到日志文件的日志条目的记录器:

模块演示类应用#...删除配置(不变)...config.legrate.enabled = true config.lograge.formatter = lobgrage :: grainatters :: json.new config.log_formatter = :: newrelic ::代理:: logging :: decoratingformatter.new结束

在您的环境中有多种设置和配置Fluentd的方法,因此请确保遵循我们的方法文件。安装fluentd后,设置您的fluent.conf.如下。

笔记:一定要设置小路到正确的日志文件并替换your_license_key_here.,新的遗物许可证密钥。

#tail rails开发文本/日志文件 @type尾部格式无路径./log/development.log标签博客  @type newrelic  flush_interval 10s  licence_key your_license_key_here 

启动FluentD守护程序和您的Rails应用程序,然后导航到新的遗物中的日志(来自顶部的主菜单栏),以查看进入的日志数据。


在New Relic One中捕获Ruby on Rails应用程序日志数据。

如果您正在调查错误的错误错误page(上面演示过),并且您已经在上下文中启用了日志,您可以直接从错误详细信息获取日志。

点击查看此错误的日志查看与该错误事件相关联的日志条目:

要了解更多关于上下文的日志,请查看此内容博客帖子

包起来

希望您现在更好地了解Ruby代理如何在以交易为中心的APM而丰富您的遥测数据。将数据从Ruby环境发送到新的遗物,您将获得更好的性能监控,错误报告与完整的痕迹,线程分析以及上下文中的日志。一个熟悉的可观察性平台,如新遗物降低了调试中的麻烦因子,因此您可以在不再需要直接登录服务器时诊断和隔离问题。

欲了解更多入门技巧,或了解如何扩展我们的平台以更好地满足您的需求,请查看新的遗物开发人员或继续谈话探险家的枢纽。我喜欢在我们的社区中回答问题!