我每次都必须写一些东西来ping超过3000个IP地址(不间断),我应该检查IP是否连续x
次没有响应ping,并将其报告给操作员。我不知道我需要处理什么样的主题:例如资源检查、线程或处理、使用芹菜或 RabbitMQ(因为我没有任何使用它们的经验)或其他任何东西?我真的不知道从哪里开始?
我提前感谢任何想法。
你必须重新发明这个吗?已经有很多优秀的监控应用程序(包括免费的开源应用程序),例如Nagios,Splunk,Ganglia等等。
你自己做的时候会遇到很多问题,一些想法会立即浮现在脑海中:
- 监控
- 盒本身的资源不足(即缺乏 CPU/网络来执行所有这些监控)。对于这些数字来说,这应该不是问题,但在更大的规模上,这将是问题。
- 在 Python 应用中处理多线程。这总是很难的,尤其是当事情出错时。
- 处理这些服务的抖动(可能不是仅针对 ping 的问题)。
- "谁监视监视器?"
- 防火墙/路由器放弃对健康盒子上的 ping 的响应。
- 检测该机器的更高级别问题(即 ping 仍在响应,但该机器上其他所有有用的东西都死了、磁盘不足等)。
如果您仍然想自己做,我会从使用循环方法的基本执行队列开始。
您可以尝试使用生成器调度这些任务(但可能很难理解/调试),或者直接进入多线程。正如你所说,使用像 RabbitMQ 这样的 AMQP 实现会很好,允许持久性(这样你就可以重新启动你的 python 程序等),但听起来有点矫枉过正。