gpt4 book ai didi

java - 跟踪恶意 AMQ 消息的来源

转载 作者:行者123 更新时间:2023-12-02 10:42:00 24 4
gpt4 key购买 nike

这里是 AMQ 5.7。我继承了一组非常古老的 Java 应用程序,它们使用 ActiveMQ (AMQ) 代理在彼此之间以及与此生态系统之外的客户端进行通信。因此,AMQ 代理上有数百个(!!!)队列,并且实际上有数百个 JMS 客户端驻留在数十个不同的服务器(每个服务器)上,向这些队列发布消息并使用来自这些队列的消息。这是一个老鼠巢。

我有一个队列,我们​​称之为shouldBeDead,它不应该再接收任何消息。它在某个时间点已被弃用,并且不应再向该队列发送消息。然而,它会定期受到来自某处/某处的数百条消息的轰炸。它没有消费者(这是正确的;我的 Java 应用程序套件不再在代码中的任何地方使用它,因此没有任何东西在监听该队列来消费其中的消息)。

更复杂的是,这是一个旧的 AMQ 版本,患有 this known UI bug其中 TLDR; 是:我需要将 AMQ 实例升级到 > 5.12.x。但是,由于本问题上下文之外的原因,我目前无法升级 AMQ。因此,虽然我希望浏览 shouldBeDead 上的排队消息并深入了解它们以获取有关它们的信息,但我什至无法在 AMQ Web UI 或应用程序日志中查看它们。

我只是想弄清楚这些消息来自哪里!

进行网络分析可能会取得成果,但超出了我的技能范围,而且这些消息看似随机地涌入队列,没有任何可辨别的模式。

我希望我可以使用一些 AMQ 命令行来检查队列元数据,也许可以查看 KahaDB 或我可以执行的任何其他类型的魔法来查看这些消息和/或获取跟踪/客户端信息其中。

最坏的情况我知道我可以部署一些代码更改来添加 shouldBeDead 监听器/消费者并记录消息,但是我真的很想这样做这无需进行任何代码更改。有什么想法/想法吗?提前致谢!

最佳答案

我将通过 JMX 控制台解决问题。

Here是通过 JMX 提供的诊断信息列表,并且 here是一种通过命令行访问此数据的方法。通过了解问题的确切细节,例如:

  • 这些爆发的可预测性
  • 大约有多少条消息
  • 发送了您拥有的连接数

您需要捕获相关信息才能捕获您的制作人。

当然,在不知道细节的情况下,一个可能可行的想法:
定期运行bash脚本来检查队列的大小(例如Destination/EnqueueCount)+定期保存所有 Activity 连接。当您检测到已弃用队列上的消息出现峰值时,请回顾当时刚刚出现的连接 (Connection/RemoteAddress)。

关于java - 跟踪恶意 AMQ 消息的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52861627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com