2012-01-27 39 views
6

Tôi đã phát triển một ứng dụng đặc biệt cho một công ty thuộc .net trong C# và được sử dụng trong nhiều năm. Bây giờ nó được phát triển trên, một trong những tính năng chính mới mà tôi phải thực hiện là tích hợp nó với một phần mềm khác bằng cách gửi bẫy SNMP đến nó trong một số tình huống cảnh báo.Xác định MIB và gửi bẫy SNMP theo .net

Tôi là một nhà phát triển có kinh nghiệm nhưng chưa bao giờ sử dụng SNMP. Tôi googled cả ngày nhưng nhận được nhiều hơn và nhiều hơn nữa nhầm lẫn về chủ đề này. Tôi không có 'điểm khởi đầu' rõ ràng. Tôi hiểu những điều cơ bản về SNMP nhưng tôi không biết bắt đầu triển khai ở đâu và như thế nào.

Tôi có dữ liệu tôi nên gửi qua bẫy SNMP, nó có khoảng 10 thuộc tính, một số ngày, số và chuỗi. Tôi nên tạo (các) định nghĩa MIB trên các thuộc tính này. Sau đó tôi nên thực hiện một tính năng trong ứng dụng của tôi gửi bẫy SNMP dựa trên các MIB này.

Dự án được phát triển theo .net 4 in C#. Tôi thấy thư viện này có vẻ đầy hứa hẹn: http://sharpsnmplib.codeplex.com/ Nó có một số mẫu về gửi bẫy SNMP.

Vấn đề của tôi là: bắt đầu từ đâu? Làm thế nào tôi có thể xác định các tập tin MIB? Tôi biết họ là một số tập tin văn bản phải được biên soạn, nhưng không tìm thấy bất kỳ biên tập viên MIB và giúp đỡ về chủ đề này.

Mọi trợ giúp đều được đánh giá cao!

Cảm ơn!

Trả lời

3

Tôi không phải là chuyên gia, nhưng có kinh nghiệm ở cùng một vị trí như bạn và cuối cùng đã tìm được thứ gì đó đủ cho dự án của tôi.

Tôi đã sử dụng thư viện mã vạch này mà bạn đã giới thiệu trước đó và thấy khá tốt. Dưới đây là một số gợi ý cho bạn để đi qua các http://sharpsnmplib.codeplex.com/.

  • Theo như hiểu biết của tôi đi một file MIB được yêu cầu khi bạn cần làm một snmpget và snmpset
    • Đây là loại bạn thông báo cho máy chủ và máy chủ trở lại với khách hàng của bạn yêu cầu chi tiết hơn thông tin, và có thể được yêu cầu nếu bạn cần thêm thông tin rộng rãi để được chia sẻ về ứng dụng của bạn
  • Nếu tất cả các bạn cần chỉ là cái bẫy, bạn có thể làm điều này
    • Chạy snmpd.exe mà sẽ đóng vai trò như snmp server receivin g bẫy được gửi từ ứng dụng của bạn.
    • Viết chương trình tương tự snmptrapd.exe và gửi bẫy của bạn.

Liên kết http://www.net-snmp.org/wiki/index.php/TUT:snmptrap là một tốt nhất để có được một sự hiểu biết cơ bản và nhận được thông tin thư viện nhiều hơn nữa.

Chỉnh sửa: Chỉ cần bỏ lỡ một điểm. Bạn sẽ cần tệp MIB nếu bạn sử dụng get và set cho snmp. Nếu tất cả những gì bạn có là bẫy, bạn có thể không cần đến nó.

+1

Nếu có, thì làm cách nào để xác định định dạng ('trường dữ liệu') của bẫy SNMP? – Tom

0

Bạn cũng có thể thử với snmpsharpnet rất hữu ích khi chơi với SNMP trên đầu .NET.

Là trình soạn thảo MIB tôi sử dụng MG-SOFT MIB Browser, phiên bản chuyên nghiệp được bán với Visual MIB Builder cho Windows.

1

Kể từ khi rõ ràng bạn đang sử dụng hệ điều hành Windows để làm việc với SNMP thì bạn cần phải tạo ra tùy chỉnh SNMP đại lý mở rộng để thêm tùy chỉnh SNMP OIDs và bẫy tương ứng để bạn hệ thống. Mỗi OID theo nghĩa đen sẽ hiển thị một biến nơi bạn có thể lưu trữ thông tin của mình. Here is an example of such DLL. Theo tôi biết, các tệp MIB chỉ được sử dụng trong Windows làm tham chiếu cho các đại lý SNMP và không thể được sử dụng để thêm các OID mới mà không tạo đại lý SNMP tùy chỉnh.

Khi bạn có DLL đại lý SNMP tùy chỉnh của mình, bạn cần trỏ nó vào sổ đăng ký. Có thể được thực hiện như vậy (ví dụ):

[HKEY_LOCAL_MACHINE\SOFTWARE\Symbol\MyAgent\CurrentVersion] 
"Pathname"="C:\\MyCustomAgent\\MyAgent.dll" 

;Add number of agent to the list (max num registered + 1) 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents] 
"10"="SOFTWARE\\Symbol\\MyAgent\\CurrentVersion" 

Sau đó, bạn cần khởi động lại dịch vụ SNMP của mình. Nếu mọi thứ đều đúng, bạn sẽ có thể sử dụng OID tùy chỉnh mới của mình để đặt \ nhận một số dữ liệu.

Để đọc \ ghi vào biến SNMP, bạn cần sử dụng trình quản lý SNMP. Tôi thường sử dụng Sharpsnmplib để làm như vậy. Ngoài ra còn có các trình quản lý GUI sẽ hữu ích trong quá trình gỡ lỗi, ví dụ: iReasoning MIB Browser.

Đây là mẫu mã để sử dụng mà lib:

using System.Collections.Generic; 
using System.Net; 
using System.Net.Sockets; 
// SNMP Lib references 
using Lextm.SharpSnmpLib; 
using Mono.Options; 
using Lextm.SharpSnmpLib.Messaging; 
using Lextm.SharpSnmpLib.Security; 
... 
List vList = new List(); 
ISnmpData data; 
data = new OctetString("test"); // variable to add in to string OID 
Variable test = new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.6.0"), data); // OID 
vList.Add(test); 
VersionCode versionH = VersionCode.V2; // SNMP protocol version to use 
IPAddress ipH; 
IPAddress.TryParse("127.0.0.1", out ipH); 
IPEndPoint receiverH = new IPEndPoint(ipH, 161); 
foreach (Variable variable in 
     Messenger.Set(versionH, receiverH, new OctetString("private"), vList, 10))// set variable 
     // Arguments: (ver of SNMP, IP, group, iList containing OID and variable, timeoout) 
     { 
      // output variable 
     } 
... 

Ngoài ra bạn có thể đọc bài viết về làm việc với SNMP trong hệ điều hành Windows trên TechNet: link. Điều này không phải là mới nhưng có thể giúp bạn hiểu làm thế nào để wok với SNMP trong Windows.

+0

"bạn cần tạo đại lý mở rộng SNMP tùy chỉnh". Điều này đúng 15 năm trước (khi tôi làm bất kỳ chương trình SNMP nào) nhưng bây giờ bạn có thể gửi một cái bẫy bằng SnmpSendMsg từ API WinSNMP mới hơn (mặc dù đã hơn một thập kỷ cũ). Ví dụ ở đây: http://stackoverflow.com/questions/4498618/problem-sending-snmp-trap-and-manager-recognizing-it – arx

1

Nếu bạn chỉ cần gửi bẫy, bạn không phải xác định MIB. MIBs dành cho các bên khác hiểu ý nghĩa của các biến trong đó. Bạn có thể tạo tài liệu bằng cách sử dụng định dạng khác chẳng hạn như tệp văn bản.

Để gửi bẫy, bạn có thể sử dụng thư viện C# SNMP hoặc chỉ gọi trực tiếp chương trình snmptrap. Net-snmp cung cấp các công cụ dòng lệnh miễn phí để gửi bẫy. (http://net-snmp.sf.net). Cách sử dụng của nó khá đơn giản.

Để xác minh xem các bẫy đã được gửi thành công chưa, bạn có thể sử dụng trình duyệt MIB ireasoning miễn phí (http://ireasoning.com/mibbrowser.shtml) để nhận chúng. Nếu nó có thể được nhận, nó thường có nghĩa là bẫy của bạn là tốt.

1

Vì vậy, từ http://www.net-snmp.org/tutorial/tutorial-5/commands/snmptrap.html

Thông báo SNMPv2

Định dạng của thông báo SNMPv2 có phần khác nhau. Định nghĩa trong tệp MIB có dạng như sau

NOTIFICATION-TEST-MIB DEFINITIONS ::= BEGIN 
     IMPORTS ucdavis FROM UCD-SNMP-MIB; 

demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 } 

demo-notif NOTIFICATION-TYPE 
    STATUS current 
     OBJECTS { sysLocation } 
    DESCRIPTION "Just a test notification" 
     ::= { demonotifs 17 } 

END 
Các vấn đề liên quan