2010-12-14 10 views
5

Sto lavorando su Debian e ho questo server che vogliamo monitorare.
L'applicazione è nostra e ci sono circa un centinaio di contatori in tempo reale che vogliamo esportare per scopi di monitoraggio, grafici e allarmi.Il modo migliore per aggiungere il supporto SNMP alla propria applicazione su Debian

Ho osservato il modo in cui Debian lo fa perché usiamo la confezione di Debian per installare l'app, e Debian usa il daemon snmpd, basato su net-snmp, per esportare SNMP. Finora ogni approccio che ho visto appare molto complicato, dalla ricompilazione di snmpd al caricamento di una libreria dinamica al suo interno e alla compilazione di una forma di agente secondario che replica ciò che fa snmpd.

Mentre tutte queste opzioni mi fanno pensare che dovrei optare per qualcosa di diverso dal SNMP, non voglio arrendermi così presto e mi chiedevo se qualcuno avesse trovato un'implementazione fattibile.

Idealmente dovrebbe essere codificato in C o C++ come l'app è in C++, ma sono aperto a wrapper o altri tipi di suggerimenti.

risposta

5

net-snmp supporta entrambi i protocolli di estensione agente smux e agentx, consentendo ai sub-agenti di vivere in processi diversi. Hanno anche un tutorial sulla scrittura di agenti secondari AgentX in C.

+0

Quindi, vorresti aggiungere un processo separato come subagente o rendere direttamente il tuo processo un subagente? Da una parte non mi piace l'idea che l'agente esegua il polling del mio processo 100 volte per 100 valori quando potrebbe essere eseguito in una volta sola, ma creando un altro processo per questo e le comunicazioni sembrano un po 'troppo. –

+1

Con un'elaborazione multiprocessing/asincrona corretta, non dovrebbe importare che il processo ottenga 100 richieste. Quindi proverei sicuramente a mettere il subagente nel processo di applicazione. –

0

Hai provato net-snmp?

+0

Debians snmpd si basa su net-snmp e gli approcci che ho elencato sono quelli elencati su net-snmp, a meno che non mi mancassi qualsiasi cosa –

+0

Lo snmpd a cui si riferisce proviene probabilmente da net-snmp. –

5

Una soluzione spesso trascurata è AgentX++, che per me è molto bella. Detto questo, fare un subagente non è una cattiva scelta. Si avvia lo snmpd standard senza patch. Quindi ti connetti ad esso con il tuo subagente, che aggiunge solo quegli OID che vuoi aggiungere. Il kit net-snmp per codificare AgentX (come viene chiamato il protocollo) sub-agent non è semplice da usare, ma nemmeno molto difficile. C'è anche un modulo Perl per lo sviluppo dell'agente secondario: https://metacpan.org/pod/NetSNMP::agent

+0

Anche https://pypi.python.org/pypi/agentx –

2

Il modo tradizionale per farlo in linux è usare il pacchetto net-snmp. Assicurati di scrivere prima il MIB. Tutto è basato sul MIB e le modifiche al MIB di solito danno luogo a molte modifiche nel codice. La codifica per net-snmp non è difficile e vi è molta documentazione per iniziare, ad esempio: http://www.net-snmp.org/wiki/index.php/Tutorials#Coding_Tutorials

Problemi correlati