Ми впроваджуємо нове рішення централізованого моніторингу (Zenoss). Включення серверів, мереж та програм Java зрозуміло для SNMP та JMX.
Питання, однак, які найкращі практики для моніторингу та управління користувацькими додатками C ++ у великих, неоднорідних (Solaris x86, RHEL Linux, Windows) середовищах?
Я бачу такі можливості:
- Чистий SNMP
- Переваги
- єдиний центральний демон на кожному сервері
- добре відомий стандарт
- проста інтеграція в рішення для моніторингу
- ми вже запускаємо чисті демони SNMP на своїх серверах
- комплексна реалізація (MIB, Net SNMP library)
- нова технологія для впровадження розробників C ++
- Переваги
- єдиний центральний демон на кожному сервері
- добре відомий стандарт
- невідома інтеграція в моніторингові рішення (я знаю, що вони можуть робити попередження на основі тексту, але наскільки добре це буде працювати для надсилання телеметрії, як використання пам'яті, глибина черги, ємність потоку тощо)
- проста реалізація
- можливі питання інтеграції
- дещо нова технологія для розробників C ++
- можливі проблеми переносу, якщо ми переключимо постачальників моніторингу
- ймовірно, передбачає створення спеціального протоколу зв'язку (або використання структурованих даних RFC5424; я не знаю, чи підтримує Zenoss це без спеціального кодування Zenpack)
- Переваги
- послідовний інтерфейс управління як для Java, так і для C ++
- добре відомий стандарт
- проста інтеграція в рішення для моніторингу
- дещо проста реалізація (ми це робимо вже сьогодні для інших цілей)
- складність (JNI, громозахисний шар між рідною C ++ та Java, в основному запис коду управління двічі)
- можливі проблеми зі стабільністю
- вимагає JVM у кожному процесі, використовуючи значно більше пам'яті
- JMX - це нова технологія для розробників C ++
- у кожного процесу є власний порт JMX (ми запускаємо безліч процесів на кожній машині)
- Переваги
- єдиний центральний демон на кожному сервері
- послідовний інтерфейс управління як для Java, так і для C ++
- добре відомий стандарт
- проста інтеграція в рішення для моніторингу
- складність (в основному написання коду управління двічі)
- потрібно знайти або написати такий демон
- потрібен протокол між демоном JMX і процесом C ++
- JMX - це нова технологія для розробників C ++
- Переваги
- послідовний інтерфейс управління як для Java, так і для C ++
- добре відомий стандарт
- проста інтеграція в рішення для моніторингу
- єдиний центральний демон на кожному сервері при запуску в спільному режимі JVM
- дещо проста реалізація (вимагає генерації коду)
- складність (створення коду, для створення проксі-коду потрібен графічний інтерфейс і кілька раундів налаштування)
- можливі проблеми стабільності JNI
- вимагає JVM у кожному процесі, використовуючи значно більше пам'яті (у вбудованому режимі)
- Не підтримує Solaris x86 (вимикач угод)
- Навіть якщо він підтримував Solaris x86, можливі проблеми сумісності компілятора (ми використовуємо дивну комбінацію STLPort і Forte на Solaris
- кожен процес має свій власний порт JMX, коли він працює у вбудованому режимі (ми запускаємо багато процесів на кожній машині)
- можливо, виключає спільний сервер JMX для процесів, що не містять C ++ (?)
Чи є якесь розумно стандартизоване, просте рішення, яке мені не вистачає?
З огляду на відсутність інших розумних рішень, яке з цих рішень зазвичай використовується для спеціальних програм C ++?
Я відчуваю, що Net SNMP - це те, як це роблять люди, але я хотів би внести та досвід інших людей, перш ніж приймати рішення.