Java 部署新API版本时避免重置Dropwizard度量值

Java 部署新API版本时避免重置Dropwizard度量值,java,amazon-ec2,counter,dropwizard,metrics,Java,Amazon Ec2,Counter,Dropwizard,Metrics,我正在研究Dropwizard指标,并希望在由负载平衡器协调的不同EC2实例中运行的API中使用它 在部署新的API版本时,计数器会重置,这在每个API(EC2)实例中都会发生。我想找到一个解决方案,可以避免丢失这些计数器的当前值,也可以避免同一计数器的值在不同情况下出现进一步的问题,因为它们可能会不同步 我正在考虑一种只保存计数器值的不同API,因此在部署新API版本时不会重置计数器值 您是否曾经遇到过在运行相同API的不同EC2实例中使用相同计数器的情况 谢谢 嗨。因此,听起来您希望在关机时

我正在研究Dropwizard指标,并希望在由负载平衡器协调的不同EC2实例中运行的API中使用它

在部署新的API版本时,计数器会重置,这在每个API(EC2)实例中都会发生。我想找到一个解决方案,可以避免丢失这些计数器的当前值,也可以避免同一计数器的值在不同情况下出现进一步的问题,因为它们可能会不同步

我正在考虑一种只保存计数器值的不同API,因此在部署新API版本时不会重置计数器值

您是否曾经遇到过在运行相同API的不同EC2实例中使用相同计数器的情况


谢谢

嗨。因此,听起来您希望在关机时保留值,并在启动时初始化计数器。您可以使用普通DAO等来使用它。然而,就指标而言,这似乎是错误的。我不完全理解您的用例,但通常您会将度量提交到持久性存储(graphite等),该存储可以处理重置、聚合度量以及执行其他分析功能这一事实。在应用程序中处理这一点似乎有些过分?@pandaadb谢谢,我正在使用Elasticsearch作为持久性存储,但不确定是否很容易从Kibana/Grafana查询中聚合重置指标。我应该尝试聚合查询并避免在Java代码中处理它吗?如果您只有有限数量的计数器,那么初始化它们可能没有什么害处。然而,您通常使用度量来获得某个事物随时间的行为(例如,石墨来可视化速率变化等)。本质上,对于您的应用程序来说,计数器是否重置并不重要。度量应该非常快速地使用,并且不会干扰应用程序的行为。如果您必须添加代码来初始化和关闭,并且通常使用您的度量,那么您可能正在接近它wrong@pandaadb好的,谢谢。现在讨论运行相同API版本且前面有LB的EC2实例。如果其中一个重新启动,而另一个继续运行,我的ES实例不会收到同一计数器的不同值吗?即使没有重新启动其中一个,值也可能不同。我想知道是否应该由其他组件来组织,可能是卡夫卡。@FedericoQuintas我们也向elasticsearch报告了指标,使用kibana作为仪表盘,在选择较大的时间窗口时,我们确实遇到了一些可视化重置问题。我们案例中的另一个问题是,kibana也与聚合一起工作,因此如果您在reporter和kibana上都没有选择正确的窗口,那么您最终会得到聚合的聚合。最后,我们决定删除elasticsearch reporter,将基于指标的数据直接发送给它,然后让kibana处理所有事情。嗨。因此,听起来您希望在关机时保留值,并在启动时初始化计数器。您可以使用普通DAO等来使用它。然而,就指标而言,这似乎是错误的。我不完全理解您的用例,但通常您会将度量提交到持久性存储(graphite等),该存储可以处理重置、聚合度量以及执行其他分析功能这一事实。在应用程序中处理这一点似乎有些过分?@pandaadb谢谢,我正在使用Elasticsearch作为持久性存储,但不确定是否很容易从Kibana/Grafana查询中聚合重置指标。我应该尝试聚合查询并避免在Java代码中处理它吗?如果您只有有限数量的计数器,那么初始化它们可能没有什么害处。然而,您通常使用度量来获得某个事物随时间的行为(例如,石墨来可视化速率变化等)。本质上,对于您的应用程序来说,计数器是否重置并不重要。度量应该非常快速地使用,并且不会干扰应用程序的行为。如果您必须添加代码来初始化和关闭,并且通常使用您的度量,那么您可能正在接近它wrong@pandaadb好的,谢谢。现在讨论运行相同API版本且前面有LB的EC2实例。如果其中一个重新启动,而另一个继续运行,我的ES实例不会收到同一计数器的不同值吗?即使没有重新启动其中一个,值也可能不同。我想知道是否应该由其他组件来组织,可能是卡夫卡。@FedericoQuintas我们也向elasticsearch报告了指标,使用kibana作为仪表盘,在选择较大的时间窗口时,我们确实遇到了一些可视化重置问题。我们案例中的另一个问题是,kibana也与聚合一起工作,因此如果您在reporter和kibana上都没有选择正确的窗口,那么您最终会得到聚合的聚合。最后,我们决定删除elasticsearch reporter,将基于度量的数据直接发送给它,然后让kibana处理所有事情。