MỤC ĐÍCH VÀ Ý NGHĨA CỦA ĐỀ TÀI
Xây dựng ứng dụng thu thập thông tin từ các thiết bị mạng, kết nối, ứng dụng và dịch vụ trong hệ thống mạng nhằm phân tích và cung cấp cái nhìn tổng quan cho quản trị viên mạng Hiểu rõ cơ chế hoạt động của giao thức SNMP và biết cách cài đặt cũng như sử dụng SNMP hiệu quả.
Hệ thống giám sát mạng cung cấp thông tin quan trọng cho người quản trị, giúp họ nhanh chóng nhận diện và xử lý sự cố, từ đó giảm thiểu rủi ro và nâng cao hiệu suất mạng Dựa vào dữ liệu thu thập được, người quản trị có thể đưa ra các quyết định nâng cấp thiết bị và dịch vụ, đảm bảo hệ thống mạng hoạt động một cách liên tục và hiệu quả.
3 Bố cục của đồ án Đồ án bao gồm các nội dung sau:
• Chương 1: trình bày cơ sở lý thuyết của đồ án
• Chương 2: trình bày phân tích và thiết kế hệ thống
• Chương 3: trình bày triển khai chương trình
• Kết luận và hướng phát triển.
CƠ SỞ LÝ THUYẾT
GIAO THỨC SNMP
SNMP (Giao thức quản lý mạng đơn giản) là một giao thức cho phép người quản trị hệ thống giám sát và điều chỉnh trạng thái của các thiết bị hỗ trợ SNMP.
Một thiết bị được gọi là "có hỗ trợ SNMP" hoặc "tương thích SNMP" khi nó hiểu và hoạt động theo giao thức SNMP Giao thức SNMP được sử dụng để quản lý, cho phép theo dõi, thu thập thông tin, nhận thông báo và tác động để hệ thống hoạt động theo mong muốn.
SNMP được phát triển để hoạt động trên nền tảng TCP/IP, nhằm quản lý các thiết bị kết nối mạng như switch, router, firewall, ADSL gateway và một số phần mềm hỗ trợ quản trị qua SNMP.
1.1.2 Các thành phần của SNMP a SNMP Agent
Chương trình SNMP hoạt động trên phần cứng hoặc dịch vụ đang được giám sát, thu thập dữ liệu về các chỉ số như băng thông và dung lượng ổ đĩa Khi được truy vấn bởi người quản lý SNMP, agent sẽ gửi thông tin này về trình quản lý Ngoài ra, agent cũng có khả năng thông báo cho NMS khi xảy ra sự cố Hầu hết các thiết bị đều được cài đặt sẵn SNMP Agent, chỉ cần bật lên và cấu hình là đủ Các thiết bị và tài nguyên được SNMP quản lý là các node mà agent hoạt động trên đó, trong khi trình quản lý SNMP (NMS) là hệ thống giám sát chính.
Nền tảng phần mềm này hoạt động như một bảng điều khiển tập trung, nơi các agent cung cấp thông tin và chủ động yêu cầu gửi cập nhật qua SNMP định kỳ Khả năng của người quản lý mạng trong việc sử dụng thông tin này phụ thuộc vào tính năng của NMS Mặc dù có nhiều trình quản lý SNMP miễn phí, nhưng chúng thường bị giới hạn về khả năng hoặc số lượng node hỗ trợ Các nền tảng cấp doanh nghiệp cung cấp tính năng nâng cao cho mạng phức tạp, với một số sản phẩm hỗ trợ hàng chục nghìn node Cơ sở thông tin quản lý (MIB) là một phần quan trọng trong hệ thống này.
Cơ sở dữ liệu MIB là một file văn bản (.mib) chứa thông tin phân loại và mô tả các đối tượng của một thiết bị cụ thể có thể được truy vấn hoặc kiểm soát qua SNMP Để xác định và theo dõi trạng thái của các thuộc tính này, cơ sở dữ liệu phải được tải vào Hệ thống Quản lý Mạng (NMS) Mỗi mục trong MIB đều được gán một định danh đối tượng (OID) riêng biệt.
MIB được thể hiện thành 1 file (MIB file), và có thể biểu diễn thành 1 cây (MIB tree) MIB có thể được chuẩn hóa hoặc tự tạo
Một node trong cây là một object, có thể được gọi bằng tên hoặc id
The node iso.org.dod.internet.mgmt.mib-2.system, identified by the OID 1.3.6.1.2.1.1, encompasses all objects related to system information, including the device name, which can be found at iso.org.dod.internet.mgmt.mib2.system.sysName or OID 1.3.6.1.2.1.1.5.
Các OID của các hãng tự thiết kế nằm dưới iso.org.dod.internet.private.enterprise, ví dụ như Cisco (1.3.6.1.4.1.9) và Microsoft (1.3.6.1.4.1.311) Số 9 và 311 được IANA cấp riêng cho các công ty này Khi Cisco hay Microsoft phát triển thiết bị, thiết bị đó có thể hỗ trợ các MIB chuẩn (như mib-2) hoặc MIB riêng MIB do các công ty thiết kế phải nằm dưới OID của họ Các objectID trong MIB được sắp xếp nhưng không liên tục, vì vậy việc biết một OID không đảm bảo xác định được OID tiếp theo Ví dụ, trong chuẩn mib-2, object ifSpecific và object atIfIndex có OID lần lượt là 1.3.6.1.2.1.2.2.1.22 và 1.3.6.1.2.1.3.1.1.1 Để hiểu một OID, cần có file MIB mô tả OID đó.
Một thiết bị hỗ trợ SNMP có thể cung cấp nhiều thông tin khác nhau, mỗi thông tin đó gọi là một object
Máy tính cung cấp nhiều thông tin quan trọng như tổng số ổ cứng, số lượng port kết nối mạng, tổng số byte đã truyền và nhận, tên máy tính, cũng như danh sách các process đang chạy.
Router cung cấp thông tin quan trọng như tổng số card, tổng số port, tổng số byte đã truyền và nhận, tên router, cùng với tình trạng các port Mỗi đối tượng trong router được xác định bằng một tên gọi và mã số, được gọi là Object ID (OID) Ví dụ, địa chỉ Mac Address của một port được gọi là ifPhysAddress với OID là 1.3.6.1.2.1.2.2.1.6.
1.1.3 Các phương thức của SNMP
Giao thức SNMPv1 có 5 phương thức hoạt động, tương ứng với 5 loại bản tin như sau :
Hình 2: Các phương thức của SMNP
Mỗi bản tin SNMP đều chứa OID để xác định đối tượng liên quan Trong GetRequest, OID chỉ ra thông tin của đối tượng cần lấy OID trong GetResponse cho biết giá trị của đối tượng đã được lấy OID trong SetRequest xác định đối tượng mà người dùng muốn thiết lập giá trị Cuối cùng, OID trong Trap thông báo sự kiện xảy ra liên quan đến đối tượng cụ thể.
Bản tin GetRequest được gửi từ manager đến agent nhằm lấy thông tin cụ thể, trong đó chứa OID của đối tượng cần truy xuất Ví dụ, để lấy tên của Device 1, manager sẽ gửi GetRequest với OID=1.3.6.1.2.1.1.5 đến Device 1, và tiến trình SNMP agent trên Device 1 sẽ nhận và phản hồi lại Đặc biệt, một bản tin GetRequest có thể chứa nhiều OID, cho phép thu thập nhiều thông tin cùng lúc.
Bản tin GetNextRequest cũng dùng để lấy thông tin và cũng có chứa
OID được sử dụng để lấy thông tin của đối tượng nằm kế tiếp trong bản tin Phương thức GetNextRequest là cần thiết vì MIB bao gồm nhiều OID được sắp xếp không liên tục; nếu chỉ biết một OID, ta không thể xác định OID kế tiếp Bằng cách thực hiện GetNextRequest liên tục, chúng ta có thể thu thập toàn bộ thông tin của agent.
Bản tin SetRequest được manager gửi cho agent để thiết lập giá trị cho một object nào đó
Bạn có thể thay đổi tên của máy tính hoặc router thông qua phần mềm SNMP manager bằng cách gửi một bản tin SetRequest với OID 1.3.6.1.2.1.1.5.0 (sysName.0) và giá trị là tên mới mà bạn muốn đặt.
You can shut down a port on a switch using SNMP manager software by sending a message with the OID 1.3.6.1.2.1.2.2.1.7 (ifAdminStatus) and setting its value to 2 Only objects with READ_WRITE permissions can modify this value.
Mỗi khi SNMP agent nhận được các bản tin GetRequest,
HỆ THỐNG GIÁM SÁT ZABBIX SERVER
Zabbix là công cụ mã nguồn mở hiệu quả cho việc giám sát mạng, giúp theo dõi các tham số của server, router, switch và tình trạng của hệ thống Với cơ chế thông báo linh hoạt, Zabbix cho phép người dùng cấu hình email cảnh báo cho các sự kiện quan trọng, từ đó nhanh chóng giải quyết các vấn đề hạ tầng mạng Bên cạnh đó, Zabbix cung cấp báo cáo và dữ liệu chính xác dựa trên cơ sở dữ liệu, làm cho nó trở thành lựa chọn lý tưởng cho các tổ chức cần giám sát hiệu suất mạng.
Tất cả báo cáo và thống kê của Zabbix có thể được truy cập qua giao diện web, giúp theo dõi tình trạng mạng và máy chủ Zabbix đóng vai trò quan trọng trong việc giám sát hạ tầng công nghệ thông tin, phù hợp cho cả tổ chức nhỏ với một máy chủ và các công ty lớn sở hữu nhiều máy chủ.
- Giám sát Server, router, switch và thiết bị mạng khác
- Dễ dàng thao tác và cấu hình
- Mã nguồn mở và chi phí thấp
- Cài đặt đơn giản, dễ dàng
Kiến trúc của Zabbix bao gồm bốn thành phần chính: Zabbix server, Zabbix proxy, Zabbix agent và Zabbix Web frontend Zabbix server là thành phần trung tâm, có khả năng kiểm tra các dịch vụ mạng từ xa như web server và mail server Zabbix agent sẽ gửi toàn bộ thông tin và số liệu thống kê về cho server, trong khi server lưu trữ tất cả cấu hình và dữ liệu thống kê cần thiết Zabbix proxy đóng vai trò hỗ trợ trong việc thu thập và chuyển tiếp dữ liệu đến server.
Proxy trong Zabbix là một tùy chọn quan trọng, giúp thu thập và lưu trữ dữ liệu trong bộ nhớ đệm trước khi chuyển đến Zabbix server Giải pháp này lý tưởng cho việc giám sát tập trung tại các địa điểm từ xa, chi nhánh, hoặc mạng lưới không có quản trị viên địa phương Ngoài ra, Zabbix Proxy còn hỗ trợ phân phối tải cho một Zabbix Server duy nhất, nâng cao hiệu quả quản lý và giám sát hệ thống.
Zabbix proxy sẽ giúp giảm tải cho Zabbix Server nhờ vào việc thu thập dữ liệu và chuyển về cho zabbix server
Zabbix Proxy có thể được sử dụng để giám sát các host từ xa, đặc biệt là trong các khu vực có kết nối không ổn định Nó giúp giảm tải cho Zabbix server khi cần giám sát nhiều thiết bị cùng lúc, đồng thời đơn giản hóa quy trình bảo trì và giám sát thông qua Zabbix agent.
Agent là thành phần cài đặt trên máy chủ và các thiết bị mạng cần giám sát, có nhiệm vụ thu thập thông tin hoạt động như ổ cứng, bộ nhớ và bộ xử lý Dữ liệu này sẽ được gửi đến Zabbix server để xử lý Khi phát hiện lỗi như ổ cứng đầy hoặc một tiến trình ngừng hoạt động, Zabbix server sẽ gửi cảnh báo cho người quản trị về các sự cố này.
Giao diện web được phát triển bằng ngôn ngữ lập trình PHP cho phép người quản trị hệ thống thực hiện việc cấu hình và giám sát, đồng thời xem tất cả các dữ liệu thu thập được trên một nền tảng duy nhất.
Zabbix giám sát thiết bị thông qua Zabbix agent hoặc giao thức SNMP Các agent, bao gồm thiết bị mạng và máy chủ cài đặt SNMP hoặc Zabbix agent, gửi các sự kiện liên quan đến thiết bị tới Zabbix server Zabbix server phân tích dữ liệu thu thập được và dựa vào các trigger do quản trị viên thiết lập để đưa ra cảnh báo với các mức độ khác nhau như Critical, Warning hoặc Information.
Zabbix là một công cụ giám sát linh hoạt, cho phép người dùng cấu hình theo dõi các thiết bị mạng và máy chủ theo nhu cầu riêng Nó sở hữu cơ chế tự động phản ứng với sự cố và hệ thống cảnh báo mạnh mẽ, tất cả được xây dựng trên nền tảng định nghĩa rõ ràng các đối tượng.
Zabbix cung cấp khả năng giám sát mạnh mẽ với cấu hình tập trung, cho phép lưu trữ tất cả thông tin giám sát vào một cơ sở dữ liệu duy nhất Hệ thống này hỗ trợ sử dụng proxy không giới hạn, giúp quản lý hàng ngàn nút một cách hiệu quả.
Zabbix cung cấp hỗ trợ giám sát thời gian thực, cho phép gửi cảnh báo ngay lập tức đến người quản trị viên qua email hoặc SMS khi phát hiện sự cố trong hệ thống Ngoài ra, Zabbix còn lưu trữ hồ sơ chi tiết về các thông tin giám sát, giúp quản lý và theo dõi hiệu quả hơn.
- Khả năng hiển thị kết quả bằng đồ thị, biểu đồ giúp người dùng có thể dễ dàng giám sát
- Khả năng nhập và xuất cơ sở dữ liệu thông qua XML
Zabbix có khả năng tự động phát hiện địa chỉ IP, dịch vụ và thiết bị SNMP, cho phép người dùng tạo ra các quy tắc giám sát hiệu quả.
- Tính linh hoạt: Zabbix hỗ trợ cả IPv4 và IPv6, các Zabbix agent có khả năng cài đặt trên nhiều nền tảng khác nhau
- Khả năng giám sát các thiết bị không hỗ trợ cài đặt Zabbix agent: Zabbix có khả năng giám sát các thiết bị hỗ trợ IPMI, SNMP v1,2,3,4
- Khả năng bảo mật: Zabbix hỗ trợ người dùng một các linh hoạt, nó cung cấp khả năng chứng thực của địa chỉ IP
- Quản trị các chức năng: Ta có thể chạy lệnh ping, traceroute trên một chuỗi các máy chủ, các thiết bị được quản trị
1.2.4 Các phần tử cơ bản trong Zabbix
Để bắt đầu cấu hình giám sát Zabbix, việc tạo một host là bước quan trọng đầu tiên Các thiết bị cần được giám sát có thể bao gồm server, máy trạm, thiết bị mạng, thiết bị Firewall và UPS.
Item là các đối tượng và dữ liệu cần thu thập trong một host, với nhiều kiểu item khác nhau tùy thuộc vào các đối tượng giám sát cụ thể.
Triggers là điều kiện được lập trình sẵn, khi thỏa mãn sẽ kích hoạt một hành động nhất định Ví dụ, trong việc giám sát RAM, nếu mức sử dụng RAM vượt quá 90%, Trigger sẽ gửi thông báo đến người quản trị hoặc tự động gửi email cảnh báo.
PHÂN TÍCH ĐỀ TÀI
Tên đề tài: Tìm hiểu hệ điều hành Windows và xây dựng ứng dụng giám sát các thiết bị mạng dựa trên SNMP
Công ty sở hữu nhiều thiết bị mạng từ các nhà sản xuất khác nhau, mỗi nhà sản xuất cung cấp chương trình giám sát riêng biệt cho thiết bị của họ Để giải quyết vấn đề này, công ty quyết định phát triển một ứng dụng giám sát tập trung, sử dụng giao thức SNMP để theo dõi tất cả các thiết bị mạng một cách hiệu quả.
- Tìm hiểu hệ điều hành Windows và nắm vững cơ chế vận hành của SNMP (v1/v2/v3)
Ứng dụng này sở hữu giao diện thân thiện và dễ sử dụng, cho phép người dùng dễ dàng nhập thông tin về tình trạng các thiết bị mạng trong công ty Kết quả đầu ra sẽ hiển thị hiện trạng chi tiết của các thiết bị mạng, bao gồm các cổng và tài nguyên sử dụng, giúp quản lý hệ thống mạng hiệu quả hơn.
KẾT CHƯƠNG
Chương này trình bày tổng quan về các lý thuyết cần sử dụng để thực hiện đồ án bao gồm : SMNP và Zabbix server.
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
PHÂN TÍCH HỆ THỐNG
Với nội dung đề tài là xây dựng ứng dụng giám sát các thiết bị mạng dựa trên giao thức SNMP, nhóm em đã tiến hành các công việc :
- Xây dựng mô hình mạng ảo với GNS3 kết hợp với VMWARE
- Cài đặt Zabbix server và tiến hành khai báo các host vào Zabbix server
Xây dựng giao diện chương trình và tích hợp API từ mã nguồn mở của Zabbix để thu thập các thông số giám sát thiết bị mạng từ máy chủ Zabbix.
MÔ HÌNH MẠNG VỚI GNS3
Hình 6: Mô hình mạng GNS3
Mô hình mạng bao gồm:
- Máy chủ Ubuntu chứa Zabbix Server, IP: 192.168.96.143/24
- Các VPC kết nối trực tiếp với Router R1
Các thiết bị trong mô hình mạng được kết nối thông qua card mạng VMNet8 của VMWare
Hình 7: Thiết lập địa chỉ IP máy chủ Ubuntu
Hình 8:Thiết lập địa chỉ IP máy thật Window (mạng VMNet8)
Hình 9: Thiết lập IP cho Router R1
GIÁM SÁT HỆ THỐNG MẠNG VỚI ZABBIX SERVER
Để giám sát hệ thống mạng với Zabbix Server, ta thực hiện các bước sau:
- Cài đặt Zabbix Server trên máy chủ Ubuntu
- Cài đặt SNMP Agent trên các host: Router R1 và máy chủ Window
- Khai báo các host lên trên Zabbix Server
- Các host thông mạng được với nhau và có chung Community String thì việc tiến hành giám sát trên Zabbix Server thành công
Hình 10: Khai báo host với Zabbix server
Hình 11: Thiết lập Community-String (SNMP) cho máy thật Window
Hình 12: Thiết lập Community-String cho host trên Zabbix
Hình 13: Cấu hình SNMP cho Router R1
CÁCH GỌI API
Để gọi API trên Zabbix ta sử dụng các phương thức sau:
- user.login : lấy token đăng nhập vào Zabbix Server
- host.get : lấy thông tin các host
- item.get : lấy giá trị các item
- history.get: lấy lịch sử các giá trị của item
- event.get : lấy thông tin các sự kiện xảy ra
- problem.get : truy xuất thông tin về các vấn đề trong mạng
KẾT CHƯƠNG
Chương này trình bày các bước thiết kế và các mô hình cần thiết cho ứng dụng.
TRIỂN KHAI CHƯƠNG TRÌNH
MÔI TRƯỜNG CÀI ĐẶT
Đề tài được phát triển bằng ngôn ngữ C# trên nền tảng Winform, sử dụng API của phần mềm mã nguồn mở Zabbix để thu thập các thông tin cần thiết.
KẾT QUẢ TRIỂN KHAI
Hình 20: Giao diện đăng nhập
Hình 24: Giao diện xem thông tin
Chương này trình bày môi trường cài đặt và kết quả chương trình
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong thời gian tìm hiểu, nghiên cứu cơ sở lý thuyết và triển khai ứng dụng công nghệ, đồ án đã đạt được những kết quả sau:
- Về mặt lý thuyết, đồ án đã hiểu cơ bản về giao thức SNMP và cách sử dụng Zabbix server
- Về mặt thực tiễn ứng dụng, đồ án đã giám sát được cơ bản các thông tin của thiết bị mạng
Tuy nhiên, đồ án còn tồn tại các vấn đề như sau:
- Các chức năng chưa được đầy đủ, còn khá sơ xài, thiếu chức năng gửi cảnh báo nếu có sự cố
- Giao diện chưa thực sự tối ưu, cần tìm cách cải thiện để người dùng dễ dàng sử dụng và hiểu
Trong phạm vi đề tài, sản phẩm hiện tại có giao diện và chức năng tương đối đơn giản, chưa nghiên cứu đến các tính năng mở rộng và phức tạp Tuy nhiên, có nhiều hướng phát triển tiềm năng cho đề tài trong tương lai.
✓ Cần tìm hiểu kĩ thêm các chức năng khác của ứng dụng, bổ sung một vài chức năng mới
✓ Cải tiến logic của phần mềm, xây dựng một phần mềm dễ sử dụng
[1] Thanh Nguyên Diệp (2010), SNMP toàn tập
[4] Github Zabbix.NET by Vidlec
KẾT QUẢ ĐẠT ĐƯỢC
Trong thời gian tìm hiểu, nghiên cứu cơ sở lý thuyết và triển khai ứng dụng công nghệ, đồ án đã đạt được những kết quả sau:
- Về mặt lý thuyết, đồ án đã hiểu cơ bản về giao thức SNMP và cách sử dụng Zabbix server
- Về mặt thực tiễn ứng dụng, đồ án đã giám sát được cơ bản các thông tin của thiết bị mạng
Tuy nhiên, đồ án còn tồn tại các vấn đề như sau:
- Các chức năng chưa được đầy đủ, còn khá sơ xài, thiếu chức năng gửi cảnh báo nếu có sự cố
- Giao diện chưa thực sự tối ưu, cần tìm cách cải thiện để người dùng dễ dàng sử dụng và hiểu.
HƯỚNG PHÁT TRIỂN
Sản phẩm trong đề tài hiện tại có giao diện đơn giản và chưa phát triển đầy đủ các chức năng mở rộng phức tạp Trong tương lai, sẽ có nhiều hướng phát triển cho đề tài này.
✓ Cần tìm hiểu kĩ thêm các chức năng khác của ứng dụng, bổ sung một vài chức năng mới
✓ Cải tiến logic của phần mềm, xây dựng một phần mềm dễ sử dụng
[1] Thanh Nguyên Diệp (2010), SNMP toàn tập
[4] Github Zabbix.NET by Vidlec