2010-12-14 12 views
5

Pracuję nad Debianem i mam ten serwer, który chcemy monitorować.
Aplikacja jest nasza i istnieje około stu liczników czasu rzeczywistego, które chcemy eksportować w celu monitorowania, wykresów i alarmów.Najlepszy sposób dodawania obsługi SNMP do własnej aplikacji na Debian

Spoglądam na sposób Debiana, ponieważ używamy pakietu Debian do zainstalowania aplikacji, a Debian używa demona snmpd, opartego na net-snmp, aby wyeksportować SNMP. Do tej pory każde podejście, które widziałem, wygląda bardzo skomplikowanie, od rekompilacji snmpd po załadowanie do niej biblioteki dynamicznej i kompilacji postaci podagenta, który powiela to, co robi snmpd.

Podczas gdy wszystkie te opcje sprawiają, że myślę, że powinienem pójść na coś innego niż SNMP, nie chcę tak szybko się poddawać i zastanawiałem się, czy ktokolwiek znalazł wykonalną implementację.

Idealnie powinien być kodowany w C lub C++, ponieważ aplikacja jest w C++, ale jestem otwarty na opakowania lub inne sugestie.

Odpowiedz

5

net-snmp obsługuje oba protokoły rozszerzeń agentów smux i agentx, pozwalając subagentom na życie w różnych procesach. Mają także tutorial na pisanie podagentów AgentX w C.

+0

Czy chcesz dodać oddzielny proces jako podagent lub bezpośrednio uczynić swój proces podagentem? Z jednej strony nie podoba mi się pomysł, że agent odpytuje mój proces 100 razy za 100 wartości, kiedy można to zrobić za jednym razem, ale tworząc kolejny proces dla tego i comms wygląda za dużo. –

+1

Przy prawidłowym przetwarzaniu wieloprocesowym/asynchronicznym, nie powinno mieć znaczenia, że ​​proces otrzyma 100 żądań. Tak więc zdecydowanie postaram się umieścić podagenta w procesie aplikacyjnym. –

0

Czy próbowałeś już net-snmp?

+0

Debmy snmpd jest oparte na net-snmp, a podejścia, które wymieniłem, są wymienione w net-snmp, chyba że przeoczyłem coś –

+0

Snmpd, do którego odnosi się, prawdopodobnie pochodzi z net-snmp. –

5

Często pomijanym rozwiązaniem jest AgentX++, które dla mnie wygląda całkiem nieźle. Powiedział, że robienie podagenta nie jest tak złym wyborem. Zaczynasz standardowy niezapakowany snmpd. Następnie łączysz się z nim z subagentem, który dodaje tylko te OID, które chcesz dodać. Zestaw net-snmp do kodowania agentów AgentX (tak jak nazywa się to protokołem) sub-agentów, nie jest prosty w użyciu, ale też nie jest zbyt trudny. Istnieje również moduł Perla do rozwoju pod-agentów: https://metacpan.org/pod/NetSNMP::agent

+0

Również https://pypi.python.org/pypi/agentx –

2

Tradycyjny sposób na to w Linuksie polega na użyciu pakietu net-snmp. Upewnij się, że najpierw napiszesz MIB. Wszystko opiera się na MIB, a zmiany w MIB zwykle powodują wiele zmian w kodzie. Kodowanie dla net-snmp nie jest trudne i istnieje wiele dokumentacji do rozpoczęcia, np .: http://www.net-snmp.org/wiki/index.php/Tutorials#Coding_Tutorials

Powiązane problemy