监控C ++应用程序
我们正在实施新的集中监控解决方案(Zenoss)。使用SNMP和JMX可以很容易地将服务器,网络和Java程序整合在一起。 但是,问题是,在大型异构(Solaris x86,RHEL Linux,Windows)环境中监视和管理自定义C ++应用程序的最佳实践是什么? 我看到的可能性是: 网络SNMP 优点 每个服务器上的单个中央守护程序 知名标准 轻松集成到监控解决方案中 我们已经在服务器上运行了Net SNMP守护程序 缺点: 复杂的实现(MIB,Net SNMP库) 为C ++开发人员介绍的新技术 系统日志 优点 每个服务器上的单个中央守护程序 知名标准 未知集成到监视解决方案中(我知道它们可以基于文本发出警报,但是在发送遥测信息(如内存使用率,队列深度,线程容量等)时效果如何? 简单的实现 缺点: 可能的整合问题 C ++开发人员的一些新技术 如果我们切换监视供应商,可能会出现移植问题 可能涉及提出临时通信协议(或使用RFC5424结构化数据;我不知道Zenoss是否在没有自定义Zenpack编码的情况下支持该协议) 嵌入式JMX(嵌入JVM并使用JNI) 优点 Java和C ++的一致管理接口 知名标准 轻松集成到监控解决方案中 有点简单的实现(我们今天已经出于其他目的执行了此操作) 缺点: 复杂性(JNI,本机C ++和Java之间的转换层,基本上编写两次管理代码) 可能的稳定性问题 在每个进程中都需要一个JVM,使用更多的内存 JMX是C ++开发人员的新技术 每个进程都有自己的JMX端口(我们在每台计算机上运行很多进程) 本地JMX守护程序,进程连接到它 优点 每个服务器上的单个中央守护程序 Java和C ++的一致管理接口 …