2010-12-14 3 views
5

나는 데비안에서 작업 중이며 우리가 모니터링하고자하는이 서버를 가지고 있습니다.
응용 프로그램은 우리의 것이며 우리는 모니터링 목적으로 그래프, 알람을 보내기 위해 약 100 개의 실시간 카운터가 있습니다.데비안에서 자신의 응용 프로그램에 SNMP 지원을 추가하는 가장 좋은 방법

데비안 패키지를 사용하여 응용 프로그램을 설치하고 데비안은 net-snmp 기반의 snmpd 데몬을 사용하여 SNMP를 내보내기 때문에 데비안 방식으로이 작업을 수행했습니다. 지금까지 내가 본 모든 접근법은 snmpd를 다시 컴파일하여 동적 라이브러리를로드하고 snmpd가 수행하는 서브 에이전트의 양식을 컴파일하는 것과 같이 매우 복잡해 보입니다.

모든 옵션을 통해 나는 SNMP가 아닌 다른 것을해야한다고 생각합니다. 초기에는 포기하고 싶지 않습니다. 누군가가 실현 가능한 구현을 찾았는지 궁금합니다.

앱이 C++로 작성되었으므로 이상적으로 C 또는 C++로 코딩해야하지만 래퍼 또는 다른 종류의 제안이 가능합니다.

답변

5

net-snmp는 smuxagentx 에이전트 확장 프로토콜을 모두 지원하므로 하위 에이전트가 다른 프로세스에서 작동 할 수 있습니다. 또한 C에서 AgentX 하위 에이전트를 작성할 때 tutorial이 있습니다.

+0

그래서 별도의 프로세스를 서브 에이전트로 추가하거나 직접 자신의 프로세스를 서브 에이전트로 만들겠습니까? 한 쪽에서는 한 번에 할 수있을 때 에이전트가 100 개의 값에 대해 100 번 내 프로세스를 폴링한다는 아이디어가 마음에 들지 않지만이 프로세스와 통신을 위해 다른 프로세스를 만드는 것은 조금 지나치게 보입니다. –

+1

적절한 다중 처리/비동기 처리를 사용하면 프로세스가 100 개의 요청을 받는다는 것은 중요하지 않습니다. 따라서 서브 에이전트를 응용 프로그램 프로세스에 넣으려고합니다. –

0

net-snmp을 사용해 보셨습니까?

+0

데비안 snmpd는 net-snmp를 기반으로하고 있으며 나열된 방법은 net-snmp에 나열된 방법입니다. anything –

+0

그가 언급 한 snmpd는 net-snmp에서 유래 한 것 같습니다. –

5

종종 간과되는 해결책은 내게는 꽤 멋져 보이는 AgentX++입니다. 즉, 하위 에이전트를 수행하는 것은 그렇게 나쁜 선택이 아닙니다. 표준 패치되지 않은 snmpd를 시작합니다. 그런 다음 하위 에이전트와 연결하여 추가 할 OID 만 추가합니다. AgentX를 코딩하기위한 net-snmp 키트 (프로토콜이 호출됨에 따라) 하위 에이전트는 사용하기 쉽지 만 그리 어렵지 않습니다. 서브 에이전트 개발을위한 Perl 모듈도 있습니다 : https://metacpan.org/pod/NetSNMP::agent

+0

또한 https://pypi.python.org/pypi/agentx –

2

리눅스에서 이것을하는 전통적인 방법은 net-snmp 패키지를 사용하는 것입니다. 먼저 MIB를 작성하십시오. 모든 것은 MIB를 기반으로하며 MIB를 변경하면 대개 코드가 변경됩니다. net-snmp에 대한 코딩은 어렵지 않습니다. 예 : http://www.net-snmp.org/wiki/index.php/Tutorials#Coding_Tutorials