OpenNMS có khả năng nhận biết các sự kiện, bất thường trong mạng và đưa ra cảnh báo tức thì cho quản trị viên dựa vào các thông điệp được gửi từ agent đến trung tâm quản lý (SNMP Trap) nhận được từ các thiết bị trong mạng. Đơn vị quản lý cơ bản nhất trong OpenNMS là Interface, mỗi Interface đại diện cho một phần (element) trong mạng, các Interface được phân biệt bằng địa chỉ IP nên chúng sẽ là duy nhất. Trong trường hợp có nhiều Interface được phát hiện trên cùng một thiết bị, các Interface này sẽ được gom thành nhóm và gọi là các nút (node).
Việc thu thập các sự kiện trong OpenNMS gồm 2 quá trình thăm dò là tìm và thu thập IP của thiết bị, sau đó là nhận biết các dịch vụ được hỗ trợ bởi thiết bị đó. OpenNMS sử dụng giao thức SNMP để thăm dò và thu thập thông tin của các thiết bị trong hệ thống mạng. Một trong các đặc tính quan trọng của giải pháp là nó có thể hoạt động theo cách phân cấp và có thể giám sát nhiều dịch vụ như ICPM, SNMP, FTP, HTTP, SMTP, DNS, MySQL, IMAP, POP3, DHCP… Trong thực tế, giải pháp thường được triển khai phân tán như hình dưới đây:
Hình 4. OpenNMS dưới dạng kiến trúc của SNMP [6]
OpenNMS là giải pháp nền tảng phân tán với khả năng mở rộng cao. Người quản trị dễ dàng cấu hình thông qua giao diện web và API REST. Giao diện người dùng có thể tuỳ chỉnh bao gồm trang tổng quan, trạng thái các nút trong mạng, các biểu đồ thống kê, bản đồ cấu trúc mạng, phân tích xu hướng…
Kiến trúc của OpenNMS
OpenNMS chứa một tập các tiến trình chạy nền cho các trường hợp sử dụng cụ thể trong quản lý mạng. Kiến trúc OpenNMS được mô tả chi tiết bao gồm:
- Pollerd (Đảm bảo dịch vụ): Là một tiến trình Java chạy nền giúp thực thi các trình giám sát để kiểm tra tính khả dụng của dịch vụ và cung cấp các chức năng quản lý lỗi. Mỗi trình giám sát được thực thi trong một nhóm luồng (thread pool). Người sử dụng có thể tuỳ chỉnh mở rộng Pollerd. Pollerd là nơi tập trung các dịch vụ cung cấp cho chương trình bao gồm ICMP, DNS, FTP, HTTP, HTTPS, SSH, MySQL…
- Collectd (Thu thập số liệu hiệu suất): Là một trình nền Java có chức năng thu thập và lưu trữ dữ liệu từ nhiều nguồn khác nhau như SNMP, JMX, HTTP, NSClinet. Đối với các số liệu hiệu suất, các chỉ số thu thập được sử dụng để đo lường việc sử dụng hoặc độ trễ của các thiết bị và dịch vụ, cung cấp khả năng quản lý hiệu suất.
Hình 5. Kiến trúc của OpenNMS [7]
- Provisiond (Cung cấp các nút trong quản lý mạng): Cung cấp một tiến trình nền để đồng bộ hoá các nguồn dữ liệu bên ngoài chứa thông tin nút mạng với cơ sở dữ liệu quản lý nội bộ của OpenNMS.
- External Event (Sự kiện bên ngoài): Các sự kiện được thu thập từ file nhật ký của hệ thống (Syslog), các dịch vụ hoạt động đã vượt ngưỡng cho phép, các bộ thu thập thông tin hiệu năng, SNMP Trap (Trapd)... Sau khi được xử lý, nó sẽ được chia thành các thông tin:
- User Notification (Thông báo người dùng): Dùng để thông báo đến quản trị.
- Event Translator (Trình dịch sự kiện): Dùng chuyển đổi các thuộc tính của các sự kiện trong cơ sở dữ liệu của OpenNMS (PostgreSQL) thành các dạng phù hợp để có thể truy vấn.
- XML-RPC: Cho phép các sự kiện được chuyển từ OpenNMS đến một máy chủ khác thông qua một giao thức gọi phương thức từ xa dùng XML để mã hoá và truyền tải sử dụng HTTP.
- Eventd (Xử lý sự kiện chương trình chạy nền): OpenNMS có thể thu thập, lắng nghe hơn 500 sự kiện và các bất thường xảy ra trên hệ thống mạng, phân loại chúng theo các cấp độ và đưa ra thông tin cảnh báo cho tiết cho quản trị viên. Mỗi sự kiện đều có cảnh báo sự kiện chung (Universal Event Indicator - UEI) là một chuỗi URI sử dụng để nhận diện sự kiện đó. Người dùng có thể cấu hình việc thiết lập cấp độ của sự kiện, thay đổi ghi chú của sự kiện cho phù hợp với từng hệ thống. Các sự kiện được phân loại theo các cấp độ như Bảng 1.
BẢNG 1: PHÂN LOẠI CẤP ĐỘ CÁC SỰ KIỆN
- Rtcd (Khởi tạo dữ liệu): Khởi tạo dữ liệu của sự kiện từ cơ sở dữ liệu khi sự kiện xuất hiện, sau đó đăng ký sự kiện vào hệ thống con để cập nhập. Mục đích của Rtcd là tạo ra một hệ thống mà dữ liệu quản trị sẽ luôn được cập nhật theo thời gian thực.
- PostgreSQL: Là hệ quản trị cơ sở dữ liệu được hệ thống sử dụng để quản lý. Cơ sở dữ liệu là nơi lưu trữ dữ liệu mạng thu thập được. Cấu trúc IPLIKE được sử dụng để chứa danh sách các octec được đọc từ văn bản đối sánh.
- XLM API: Thành phần chứa các file cấu hình cho các tiến trình nền, cấu hình các sự kiện, ứng dụng web.
- User Interface (Giao diện người dùng): Đây là thành phần cung cấp giao diện cho người dùng. Người dùng có thể thực hiện giám sát, kiểm soát các nút, theo dõi thông tin báo cáo sự kiện, báo cáo dữ liệu và nhiều tác vụ khác.
OpenNMS đáp ứng yêu cầu về giám sát an ninh mạng
Giải pháp OpenNMS đáp ứng các yêu cầu cần thiết của một giải pháp giám sát an ninh mạng với các tính năng sau đây:
- Hỗ trợ nhiều giao thức: CDP, LLDP, IS-IS, Bridge, OSPF, SNMP, XML, JDBC, WMI, JMX, NRPE, NSClient++.
- Thu thập dữ liệu thông qua các giao thức: SNMP, WS-Man, HTTP, XML, JMX, JDBC, NSClient, TCA, WMI. Việc thu thập dữ liệu có khả năng mở rộng cao với một phiên bản của OpenNMS đang thu thập được 1,2 triệu điểm dữ liệu thông qua giao thức SNMP mỗi 5 phút [4].
- Có khả năng truyền dữ liệu từ xa: NX-OS, JTI.
- Tương tích trên cả nền tảng IPv4 và IPv6.
- Hoạt động cả trong mô hình mạng layer 2 và layer 3.
- Có khả năng tích hợp Elasticsearch, R.
- Hỗ trợ luồng cho Netflow v5, Netflow v9, IPFIX, sFlow, Jflow.
- Xác thực LDAP/AD.
- API REST cho thông tin, dữ liệu hiệu suất, cảnh báo và tính khả dụng của sự kiện.
- Hỗ trợ khả năng tự phát hiện các thiết bị và dịch vụ đang hoạt động trong mạng. OpenNMS chứa một hệ thống cung cấp tính năng nâng cao để thêm các thiết bị vào hệ thống quản lý. Quá trình này có thể diễn ra tự động bằng cách gửi danh sách hoặc dải địa chỉ IP cho hệ thống. Các thiết bị cũng có thể được thêm vào hệ thống một cách rõ ràng. Giải pháp có khả năng cung cấp mô hình kết nối mạng của hơn 50.000 thiết bị rời rạc và mạng của các thiết bị đơn lẻ với hơn 200.000 giao diện ảo mỗi mạng.
- Tạo các thông báo cho quản trị thông qua e-mail, SMS, XMPP và các phương thức thông báo tùy chỉnh khác. OpenNMS đã được chứng minh là có thể xử lý liên tục 125.000 tin nhắn nhật ký hệ thống mỗi phút.
- Tích hợp với JasperReports tạo ra các báo cáo cho người dùng từ cơ sở dữ liệu và dữ liệu hiệu suất được thu thập.
- Nhiều plugin hỗ trợ khác.
Kết luận
Với các kiến thức cơ bản về thành phần cấu trúc của OpenNMS, để áp dụng giải pháp mã nguồn mở vào triển khai trong hệ thống mạng của các tổ chức, doanh nghiệp, công việc nghiên cứu cần được tiếp tục đối với ảnh hưởng, tương tác giữa các thành phần với thành phần (compoent-to-compoent) và đối tượng với đối tượng (object-to-object) trên một môi trường phân tán. Từ đó, có thể xây dựng mô hình kiến trúc OpenNMS phù hợp với mỗi tổ chức, doanh nghiệp.