새로운 중앙 집중식 모니터링 솔루션 (Zenoss)을 구현하고 있습니다. SNMP, JMX를 사용하면 서버, 네트워킹 및 Java 프로그램을 간단하게 통합 할 수 있습니다.
그러나 문제는 이기종 (Solaris x86, RHEL Linux, Windows) 환경에서 사용자 지정 C ++ 응용 프로그램을 모니터링하고 관리하는 모범 사례는 무엇입니까?
내가 볼 수있는 가능성은 다음과 같습니다.
- 넷 SNMP
- 장점
- 각 서버의 단일 중앙 데몬
- 잘 알려진 표준
- 모니터링 솔루션에 쉽게 통합
- 우리는 이미 서버에서 Net SNMP 데몬을 실행합니다
- 복잡한 구현 (MIB, Net SNMP 라이브러리)
- C ++ 개발자를위한 새로운 기술
- 장점
- 각 서버의 단일 중앙 데몬
- 잘 알려진 표준
- 모니터링 솔루션에 알 수없는 통합 (텍스트를 기반으로 경고를 할 수는 있지만 메모리 사용량, 대기열 깊이, 스레드 용량 등과 같은 원격 측정을 보내는 데 얼마나 효과적입니까?)
- 간단한 구현
- 가능한 통합 문제
- C ++ 개발자를위한 다소 새로운 기술
- 모니터링 공급 업체를 전환하면 발생할 수있는 이식 문제
- 아마도 애드혹 통신 프로토콜 (또는 RFC5424 구조화 된 데이터 사용)이 필요할 것입니다. Zenoss가 사용자 정의 Zenpack 코딩없이이를 지원하는지 여부는 알 수 없습니다.
- 장점
- Java 및 C ++ 모두에 대한 일관된 관리 인터페이스
- 잘 알려진 표준
- 모니터링 솔루션에 쉽게 통합
- 다소 간단한 구현 (우리는 이미 다른 목적 으로이 작업을 수행함)
- 복잡성 (JNI, 기본 C ++과 Java 사이의 썽킹 계층, 기본적으로 관리 코드를 두 번 작성)
- 가능한 안정성 문제
- 상당히 많은 메모리를 사용하여 각 프로세스마다 JVM이 필요합니다.
- JMX는 C ++ 개발자를위한 새로운 기술입니다
- 각 프로세스에는 자체 JMX 포트가 있습니다 (각 시스템에서 많은 프로세스를 실행 함)
- 장점
- 각 서버의 단일 중앙 데몬
- Java 및 C ++ 모두에 대한 일관된 관리 인터페이스
- 잘 알려진 표준
- 모니터링 솔루션에 쉽게 통합
- 복잡성 (기본적으로 관리 코드를 두 번 작성)
- 그런 데몬을 찾거나 쓸 필요가있다
- JMX 데몬과 C ++ 프로세스 사이에 프로토콜이 필요합니다.
- JMX는 C ++ 개발자를위한 새로운 기술입니다
- 장점
- Java 및 C ++ 모두에 대한 일관된 관리 인터페이스
- 잘 알려진 표준
- 모니터링 솔루션에 쉽게 통합
- 공유 JVM 모드에서 실행될 때 각 서버의 단일 중앙 데몬
- 다소 간단한 구현 (코드 생성 필요)
- 복잡성 (코드 생성, 프록시 코드 생성을 위해 GUI 및 여러 번의 조정이 필요함)
- 가능한 JNI 안정성 문제
- 상당히 많은 메모리를 사용하는 각 프로세스마다 JVM이 필요합니다 (임베디드 모드).
- Solaris x86 (거래 차단기)을 지원하지 않습니다
- Solaris x86을 지원하더라도 컴파일러 호환성 문제가있을 수 있습니다 (Solaris에서 STLPort와 Forte의 홀수 조합 사용)
- 임베디드 프로세스에서 실행될 때 각 프로세스마다 고유 한 JMX 포트가 있습니다 (각 시스템에서 많은 프로세스를 실행합니다)
- 비 C ++ 프로세스의 공유 JMX 서버를 배제 할 수 있음 (?)
내가 누락 된 합리적으로 표준화 된 간단한 솔루션이 있습니까?
다른 합리적인 솔루션이 없다면,이 솔루션들 중 어떤 것이 커스텀 C ++ 프로그램에 일반적으로 사용됩니까?
내 생각에 Net SNMP는 사람들이 그렇게하는 방식이지만 결정을 내리기 전에 다른 사람들의 의견과 경험을 원합니다.