2010-12-14 16 views
5

我正在使用Debian,並且我有這臺服務器要監視。
該應用程序是我們的應用程序,我們想要導出用於監視目的,圖形和警報的大約100個實時計數器。在Debian上爲您自己的應用程序添加SNMP支持的最佳方法

我一直在尋找Debian的方法,因爲我們使用Debian打包來安裝應用程序,並且Debian使用基於net-snmp的snmpd守護程序來導出SNMP。 到目前爲止,我看到的每種方法看起來都非常複雜,從重新編譯snmpd到將動態庫加載到其中,並編譯複製snmpd的子代理形式。

雖然所有這些選項讓我覺得我應該去做別的事情而不是SNMP我不想放棄那麼早,我想知道是否有人找到了可行的實現。

理想情況下,它應該用C或C++編碼,因爲應用程序是用C++編寫的,但我對包裝或其他類型的建議持開放態度。

回答

5

net-snmp同時支持smuxagentx代理擴展協議,允許子代理位於不同的進程中。他們在編寫C代理子代理時也有tutorial

+0

那麼,你會添加一個單獨的進程作爲一個子代理或直接讓你自己的進程成爲一個子代理?一方面,我不喜歡代理程序對100個值進行100次輪詢的過程,因爲它可以一次完成,但爲此創建了另一個過程,並且通信看起來有點過分。 – 2010-12-15 08:14:01

+1

通過適當的多處理/異步處理,應用程序獲得100個請求無關緊要。所以我一定會嘗試將子代理放入應用程序中。 – 2010-12-15 08:21:38

0

您是否試過net-snmp

+0

Debian snmpd基於net-snmp,我列出的方法是net-snmp上列出的方法,除非我錯過了什麼 – 2010-12-14 22:07:36

+0

他提到的snmpd可能來自net-snmp。 – 2010-12-14 22:08:03

5

一個經常被忽視的解決方案是AgentX++,這對我來說看起來相當不錯。這就是說,做一個子代理並不是一個不錯的選擇。你啓動標準的未修補的snmpd。然後你用你的子代理連接到它,它只添加你想要添加的那些OID。用於對AgentX進行編碼的net-snmp工具包(作爲協議被調用)的子代理不是簡單易用,而且也不是很難。還有一個用於子代理開發的Perl模塊:https://metacpan.org/pod/NetSNMP::agent

+0

另請https://pypi.python.org/pypi/agentx – 2013-09-05 08:10:44

2

在linux中執行此操作的傳統方法是使用net-snmp軟件包。確保你先寫入MIB。一切都基於MIB並且對​​MIB的更改通常會導致代碼中的很多更改。 net-snmp編碼並不困難,有很多文檔可以幫助你入門,例如:http://www.net-snmp.org/wiki/index.php/Tutorials#Coding_Tutorials

相關問題