亚马逊Kinesis工人监控的新Relic

时间:2014-10-10 21:39:33

标签: amazon-web-services newrelic amazon-kinesis

我们正在使用Amazon Kinesis(队列服务)并使用Java编写队列读取器。它们基本上从队列中读取并将数据插入到我们的数据存储区中。 我想知道是否有人成功使用New Relic来监控后台队列工作人员?

我感兴趣的一些分析:

  1. 现在有多少队列工作正在运行? (它们根据负载按比例放大和缩小)
  2. 每个队列工作者处理多少条消息/秒?这看起来如何随着时间的推移?
  3. 整个工人车队处理多少条消息/秒?
  4. 工作人员向MySQL和Cassandra提出请求。他们花了多少时间做这件事?
  5. 我们正在使用log4j进行日志记录。如果工人产生错误/痕迹,他们是什么?随着时间的推移错误率是多少?
  6. 谢谢,

    Advait

1 个答案:

答案 0 :(得分:2)

与网络交易相比,New Relic在监控批处理作业方面没有任何问题,因此这不会成为问题。

假设您刚开始使用可获得源代码的Java应用程序,最好的方法是使用代理API:https://docs.newrelic.com/docs/agents/java-agent/custom-instrumentation/java-agent-api。这使您可以报告任何您喜欢的指标,即使我们不自动记录它们也是如此。我会逐一回答你的问题:

1)我们有几种方法来分割这个馅饼,但我能想到的最简单的方法是制作一个NewRelic.recordMetric(“Custom / Queue_worker / alive”,1)调用。我只是有一个计时器运行,以便每个工人每分钟拨打一次电话(因为那是我们的公制收获周期)。然后在自定义信息中心(https://docs.newrelic.com/docs/apm/dashboards-menu/custom-dashboards)中,您可以忽略指标值(将进行平均值 - 因此,除非您拥有一个“知道”该值并且可以根据需要经常报告的主人,否则您将赢得'通过报告1 + 1 + 1 ... = 1)获得所需的效果。您将绘制call_count字段的图形,以查看该分钟有多少工作人员。

2)在这种情况下,除了为每个工作人员创建不同的自定义指标外,您还希望使用与上述相同的模式。幸运的是,自定义仪表板可帮助解决繁重问题 - 执行类似NewRelic.recordMetric(“Custom / Queue_worker / y / number_of_messages”,x)的操作,x =处理的消息数量,y =某个唯一标识符(GUID?随机值? )每个工人...超过一分钟 - 然后你可以只绘制Custom / Queue_worker / * / number_of_messages图表,以便将它们全部放在同一个图表上。

3)让每个工作人员为该指标提交相同的自定义指标,Custom / queue_worker / message_sent和图表调用计数。再一次,您不能仅为每个工作人员报告,因为后续的指标数据将被平均在一起,但我们会为您保留一个良好的通话计数。

4)你将免费获得MySQL时间(只要你使用此处列出的mysql或JDBC连接器:https://docs.newrelic.com/docs/agents/java-agent/getting-started/new-relic-java#h2-compatibility) - 它将在你的图形和事务中显示为'数据库'时间痕迹。对于Cassandra,我们没有特定的工具,但您可以再次使用代理API(建议使用NewRelic.recordResponseTimeMetric())来至少记录它并单独绘制图形。

5)只要您的错误包含未处理的异常,您就可以免费获得错误率 - 或者您可以在处理异常(或任何要标记的错误条件)到NewRelic.noticeError时进行API调用()。此外,如果错误以未处理的异常形式出现(巧妙的技巧:在代码中处理您的异常,然后重新抛出它,以便我们的代理通过上下文查看它),您将获得堆栈跟踪以及有关您的事务的任何元数据使用NewRelic.addCustomParameter()记录。我们不进行日志文件处理,尽管您可以编写一个非常小的程序来执行该处理并使用上述方法导入指标,并且由于我们为每个正在运行的主机而不是每个代理程序许可,因此您可以在已经许可的情况下运行该程序。工人无需额外费用。

使用Insights(https://docs.newrelic.com/docs/insights/new-relic-insights)可以更轻松地完成此操作 - 例如,您可以随时访问正在运行的代理列表而无需任何其他工作,并且您可以报告不会对其进行平均的数字你可以做数学和绘图。但这是一个单独的产品,我不是要向你推销:)

注意:我为New Relic工作。