Bắt đầu
Chờ sự kiện từ scheduler thread
Phân tích tham số tập luật
Gửi đến máy trạm thông qua hàm send() của websocket handler
Kết thúc
Nhận các tham số về máy trạm và tập luật
Đóng gói theo protobuf Mã hóa dữ liệu theo AES Tìm client session tương ứng
Bắt đầu
Chờ dữ liệu từ websocket connection
Tách dữ liệu từ protobuf
Giải mã AES theo ID máy trạm + - Có dữ liệu gửi đến + - + - So sánh giá trị thu được với giá trị ngưỡng
Kết thúc
Trong khoảng lỗi
Trong khoảng cảnh báo Cập nhật trạng thái thiết bị, cảnh báo quản trị + - Máy trạm thoát khỏi hệ thống?
2.1.10. Module quản lý thông tin trên các thiết bị mạng.
2.1.10.1. Quản lý thông tin thiết bị mạng
Thông tin về các thiết bị mạng được lưu cùng bảng với các máy trạm trong CSDL, chỉ khác là ngoài các thông số như địa chỉ IP, MAC quản trị phải tự khai thay vì tự động cập nhật từ máy trạm, các thiết bị còn có các tham số đặc trưng bắt buộc khác mà quản trị phải khai báo để có thể thu thập dữ liệu từ các thiết bị này.
2.1.10.2. Hệ thống tập luật liên quan đến thông tin thiết bị mạng
Cụ thể, với tập luật sử dụng SNMP, tham số của tập luật phải tuân theo định dạng sau:
MIBname;InstanceObject;Position
Trong đó
MIBname là tên mib mà luật quan tâm (ví dụ IF-MIB)
InstanceObject: là tên đối tượng cần theo dõi (ví dụ IfOperStatus)
Position: Vị trí dữ liệu cần lấy. Vì giá trị trả về theo dạng bảng giá trị (ví dụ với switch, sẽ có giá trị tương ứng với các cổng trên switch đó) nên cần phải chỉ rõ giá trị cần lấy là thuộc cổng nào,
Đối với những tập luật cần lấy thông tin đặc biệt dành riêng cho các thiết bị cụ thể (ví dụ CISCO), thông số tập luật sẽ sử dụng OID cụ thể. Ví dụ: 1.3.6.1.4.1.9.9.109.1.1.1.1.6;0 sẽ lấy % sử dụng CPU trung bình trong 5 giây trên swith cisco. Các OID này sẽ được tra cứu tại trang chủ của các hãng tương ứng.
Riêng trường hợp lấy thông tin về băng thông của thiết bị, do có liên quan đến một số công thức nên tham số tập luật sẽ cố định như sau:
BANDWIDTH;direction;port
Trong đó
BANDWIDTH là từ khóa để hệ thống nhận biết tập luật yêu cầu thông tin về băng thông
Direction: hướng luồng dữ liệu cần tính băng thông (0:in, 1:out) Port: Cổng cần theo dõi lượng băng thông.
Cơ cấu thực hiện việc lấy thông tin từ các thiết bị mạng
Scheduler thread sẽ kiểm tra tuần tự định kỳ tất cả các tập luật liên quan đến SNMP xem có tập luật nào đã đến thời điểm truy vấn chưa? Sau khi có tập luật được phát
hiện, thread này sẽ gọi thủ tục xử lý tập luật này cùng với địa chỉ của đối tượng tương ứng. Quy trình thực hiện thủ tục này như sau:
- + - + - + - Bắt đầu
Chờ sự kiện từ scheduler thread
Phân tích tham số tập luật
Có kết quả trả về?
So sánh giá trị thu được với giá trị ngưỡng
Kết thúc Nhận các tham số về thiết bị và tập luật
Đợi kết quả trả về
Trong khoảng lỗi Gửi tham số tương ứng đến thiết bị tương ứng qua SNMP Trong khoảng cảnh báo Cập nhật trạng thái thiết bị, cảnh báo quản trị Timeout?
Chuyển trạng thái qua báo lỗi
2.1.11. Module quản lý máy trạm theo nhóm
2.1.11.1. Quản lý nhóm máy trạm (thiết bị):
Các máy trạm hoặc thiết bị được phân chia về các nhóm khác nhau. Việc phân chia nhóm này sẽ giúp quản trị dễ dàng phân vùng quản lý máy trạm cũng như thiết bị hơn.
Hình 2.17 Sơ đồ thuật toán controller xử lý thao tác quản lý nhóm
Chi tiết Nhóm + Bắt đầu Tiếp nhận request Phân tích URL
Yêu cầu quản lý nhóm?
GET ? POST
Trả về trang hiển thị giao diện quản lý nhóm
Kết thúc Kết nối đến CSDL
Query danh sách nhóm
Chuyển đổi resultset sang json structure
Phân tích lệnh (add, update, delete) Kết nối đến CSDL
Thực hiện câu truy vấn tương ứng
Trả đáp ứng Thành công hoặc thất bại cho giao diện người dùng
Kiểm tra bảo mật biến đầu vào
Kiểm tra bảo mật biến đầu vào
Liệt kê danh sách hay chi tiết
nhóm?
Query chi tiết nhóm
Query danh sách nhóm cha
-
Khi có yêu cầu truy vấn danh sách nhóm (truy vấn GET), controller sẽ làm 2 nhiệm vụ Trả về danh sách nhóm thiết bị/máy trạm
Trả về cấu trúc phân lớp nhóm cha..
2.1.11.2. Quản lý máy trạm Chi tiết Nhóm + Bắt đầu Tiếp nhận request Phân tích URL
Yêu cầu quản lý máy trạm?
GET hay POST
Trả về trang hiển thị giao diện quản lý nhóm
Kết thúc Kết nối đến CSDL
Query danh sách các máy trạm
Chuyển đổi resultset sang json structure
Phân tích lệnh (add, update, delete)
Kết nối đến CSDL
Thực hiện câu truy vấn tương ứng
Trả đáp ứng Thành công hoặc thất bại cho giao diện người dùng
Kiểm tra bảo mật biến đầu vào
Kiểm tra bảo mật biến đầu vào
Liệt kê danh sách hay chi tiết máy
trạm?
Query thông tin máy trạm Query danh sách nhóm cha - GET POST Query danh sách các thiết bị mạng
2.1.12. Module cấu hình máy trạm từ xa
2.1.12.1. Cấu hình máy trạm thông qua websocket
Sau khi máy trạm kết nối với máy chủ bằng websocket, quản trị có thể thực hiện việc điểu khiển cũng như cấu hình máy trạm đó từ ngay trên hệ thống.
Cấu trúc gói tin máy chủ gửi cho máy trạm
message CommandRequest {
required string sessionid=1; required string param=2; optional string extra=3; }
Cấu trúc gói tin nhận từ máy trạm trả lời
message CommandResponse { required string sessionid=1; required string result=2; optional string extra=3; }
Tham số sessionid để xác định xem thông tin máy chủ gửi cho máy trạm và thông tin máy trạm gửi lại cho máy chủ có cùng một lệnh không. Hình 2.19 là sơ đồ thực hiện trên máy chủ giữa lớp View và lớp Controller
Hình 2.19 Sơ đồ thực hiện việc gửi và nhận thông tin cấu hình máy trạm từ xa
2.1.12.2.Cấu hình thiết bị thông qua telnetlib
Tương tự như phần cấu hình cho máy trạm, module cấu hình cho thiết bị cũng bao gồm 2 lớp View và Controller. Điều khác biệt duy nhất là tại lớp Controller khi mà nó sử dụng thư viện python telnetlib. Thư viện này hỗ trợ việc sử dụng telnet để kết nối đến thiết bị mạng.
+
+ Bắt đầu
Khởi tạo kết nối websocket tới máy chủ
Kết thúc
Đợi phản hồi từ máy chủ
Gửi cho máy chủ Hiển thị cho quản trị
Bắt đầu
Chờ dữ liệu từ websocket connection
Tạo phiên kết nối với lớp View - Có yêu cầu từ lớp View - - + + Đợi lệnh gửi từ lớp View
Kết thúc Có lệnh? Có kết quả trả về? Chờ phản hồi + - Máy trạm thoát khỏi hệ thống? Có dữ liệu phản hồi? Quản trị nhập lệnh? Quản trị thoát?
Phân tích, đóng gói và gửi đến máy trạm Hết thời gian chờ Gửi ra lớp view - + - + - + -
Hình 2.20 Sơ đồ thực hiện việc gửi và nhận thông tin cấu hình thiết bị từ xa
- +
+ Bắt đầu
Khởi tạo kết nối websocket tới máy chủ
Kết thúc
Đợi phản hồi từ máy chủ
Gửi cho máy chủ Hiển thị cho quản trị
Bắt đầu
Chờ dữ liệu từ websocket connection
Tạo phiên kết nối với lớp View - Có yêu cầu từ lớp View - - + + Đợi lệnh gửi từ lớp View
Kết thúc Có lệnh? Có kết quả trả về? Chờ phản hồi + - Máy trạm thoát khỏi hệ thống? Có dữ liệu phản hồi? Quản trị nhập lệnh? Quản trị thoát?
Sử dụng telnetlib gửi lệnh đến thiết bị
Hết thời gian chờ Gửi thông tin ra lớp
view
Khởi tạo kết nối telnet đến thiết bị
Kết nối đến thiết bị - + + + + - - -
2.1.13. Module cấu hình máy chủ, thiết lập sơ đồ mạng để giám sát
2.1.13.1. Module cấu hình máy chủ
Hình 2.21 Sơ đồ lưu và hiển thị thông tin cấu hình hệ thống
2.1.13.2. Module thiết lập sơ đồ mạng
* Lớp view networkmap
Do hệ thống sử dụng jquery là javascript framework nên chúng tôi lựa chọn ra thư viện javascript InfoVis Toolkit, một thư viện hỗ trợ đồ thị mã nguồn mở dựa trên jquery và đặc biệt nó có thể tùy biến tốt trong việc chuyển đổi từ dạng đồ thị qua dạng sơ đồ các nốt mạng.
Lớp view sẽ tạo 1 websocket connection đến websocket server. Và nhiệm vụ chính của nó chỉ là đợi dữ liệu truyền đến từ websocket server này.
+
-
GET POST
Bắt đầu
Tiếp nhận request
Yêu cầu cấu hình hệ thống?
GET hay POST
Trả về trang hiển thị giao diện cấu hình hệ thống
Kết thúc Kết nối đến CSDL
Query danh sách các tham số
Kết nối đến CSDL
Thực hiện câu truy vấn
Trả đáp ứng Thành công hoặc thất bại cho quản trị
Kiểm tra bảo mật biến đầu vào Kiểm tra bảo mật biến đầu vào
Hình 2.22 Sơ đồ thực hiện tiếp nhận và xử lý trên sơ đồ mạng + + + - - Bắt đầu
Khởi tạo sơ đồ mạng
Tiếp nhận yêu cầu
khởi tạo sơ đồ mạng?
Yêu cầu add?
Kết thúc Phân tích dữ liệu
nhận được Phân tích dữ liệu
nhận được
Xóa node được yêu cầu
Phân tích dữ liệu nhận được
Phân tích danh sách các node mạng
Nạp danh sách vào sơ đồ
Tạo node mới liên kết với node cha Cập nhật thông tin
node, thay đổi trạng thái node
+
- +
Kết nối đến websocket server
Yêu cầu update? +
Yêu cầu delete? -
Thoát? Đóng kết nối
* Lớp controller networkmap
Hình 2.23 Sơ đồ thực hiện controller networkmap
2.1.14. Module cảnh báo ngƣời quản trị.
Hệ thống giám sát mạng có 4 khối để hiển thị cảnh báo đến quản trị viên: Khối Lịch sử cảnh báo,
khối Tình trạng hệ thống khối Sơ đồ mạng vật lý khối Thông báo
- + - + + + - Bắt đầu
Chờ sự kiện từ browser và controller khác
Tạo danh sách thiết bị/máy trạm theo dạng node mạng
Có sự kiện cần gửi cho browser? Có yêu cầu ngắt kết nối? Chuyển về dạng json Kết thúc Có kết nối websocket?
Đăng ký kết nối vào danh sách các kết nối
Xóa kết nối khỏi danh sách các kết nối
Máy chủ tắt? Gửi cho browser
Các khối này đều được kết nối đến các controller tương ứng thông qua 4 kết nối websocket. Khi có một sự kiện diễn ra mà máy chủ thu nhận được, nó sẽ được máy chủ đẩy xuống browser mà quản trị viên đang theo dõi hệ thống.
Quy trình làm việc của các khối này sẽ như sau
Hình 2.24 Quy trình tiếp nhận và hiển thị trên trình duyệt
2.1.15. Module kiểm tra hệ thống phần mềm
Với số lượng lớn các module hoạt động gần như độc lập với nhau, để tổ chức ra được một module kiểm tra hệ thống chung xem hệ thống có hoạt động ổn định không là vấn đề không đơn giản. Chúng tôi thiết kế một module mà module này sẽ được gọi ra mỗi khi một module nào đó gặp trục trặc.Nó sẽ lưu thông tin về lỗi đó vào CSDL và cảnh báo quản trị biết.Việc xác định lỗi dựa vào cơ chế bắt lỗi của python.
+ + - - Bắt đầu Quản trị đăng nhập
Khối hiển thị được nạp
Chờ sự kiện từ máy chủ gửi về Kết nối đến máy chủ websocket? Có sự kiện của máy chủ gửi về?
Hiển thị sự kiện ra giao diện web
Try
//Các câu lệnh thực hiện except Exception,e:
checksystem(e)
Trong đó hàm checksystem sẽ lấy thông báo, lưu vào CSDL và hiển thị ra cho quản trị được biết lỗi nào đã xảy ra đối với các module trong hệ thống.
Hình 2.25 Sơ đồ lưu và hiển thị thông tin cấu hình hệ thống
2.1.16. Module quản lý các hành động cảnh báo
Module quản lý các hành động cảnh báo sẽ được hệ thống đăng ký như là một websocket server. Ở đó nó sẽ tiếp nhận các thông tin gửi đến từ trình duyệt (các module cảnh báo quản trị) thông qua kết nối websocket. Khi có kết nối đến, nó sẽ đưa kết nối đấy vào một danh sách các kết nối đã có. Điều đó có nghĩa là hai hay nhiều quản trị cùng đăng nhập vào hệ thống đều có thể nhận được các thông báo mà controller này gửi xuống trình duyệt (browser). Khi một sự kiện trên máy chủ xảy ra (có một thiết bị báo lỗi chẳng hạn), hệ thống sẽ gọi controller này ra và yêu cầu gửi dữ liệu xuống trình duyệt của các quản trị. Đây là một vòng lặp vô hạn và nó chỉ dừng khi hệ thống tắt hoặc khởi động lại. Khi đó các kết nối sẽ lại phải đăng ký lại để có thể nhận thông tin. Module này được chia thành 2 khối chức năng:
Khối cung cấp thông tin cho khối tình trạng hệ thống và khối lịch sử cảnh báo (mục 2.1.14 – Module cảnh báo người quản trị).
Khối cung cấp thông tin cho khối sơ đồ mạng vật lý
Điểm khác biệt giữa các khối chức năng đó chính là việc mỗi một khối sẽ cung cấp
Bắt đầu
Tiếp nhận tham số lỗi
Kết thúc Phân tích tham số lỗi
Hiển thị cho quản trị Ghi vào CSDL
2.1.17. Module quản lý báo cáo thống kê
Việc báo cáo thống kê này được thực hiện theo 3 tiêu chí chính: Thống kê theo thiết bị
Thống kê theo loại hình cảnh báo Thống kê theo tập luật
Thống kê theo thiết bị, sẽ gồm 4 loại biểu đồ:
Thống kê số lượng lỗi gây ra bởi các tập luật khác nhau theo khoảng thời gian thống kê
Thống kê số lượng cảnh báo gây ra bởi các tập luật khác nhau theo khoảng thời gian thống kê
Thống kê tổng số lỗi và cảnh báo gây ra bởi các tập luật khác nhau lên thiết bị đó trong khoảng thời gian thống kê
Thông kê chi tiết tổng số lỗi và cảnh báo theo tập luật chi tiết theo từng giờ thống kê.
Với loại thống kê theo tập luật:
Thống kê tỉ lệ giữa các thiết bị có thông báo lỗi liên quan đến tập luật đó Thống kê tỉ lệ giữa các thiết bị có cảnh báo liên quan đến tập luật đó Thống kê tỉ lệ giữa các thiết bị có liên quan đến tập luật đó
Tổng số thiết bị bị ảnh hưởng theo thời gian chi tiết đến từng giờ Với loại thống kê theo loại hình cảnh báo:
Thống kê tỉ lệ giữa các thiết bị Thống kê tỉ lệ giữa các tập luật
2.1.18. Module sao lƣu cơ sở dữ liệu hệ thống.
Module sao lưu cơ sở dữ liệu hệ thống được xây dựng nhằm liên tục lưu trữ toàn bộ cấu hình, cũng như cảnh báo trên hệ thống, phục vụ công tác khôi phục dữ liệu khi có sự cố xảy ra. Quá trình xây dựng module này được tiến hành thông qua việc ứng dụng chương trình:
mysqldump: chương trình cho phép tạo các file sao lưu cơ sở dữ liệu dưới dạng SQL.
Như vậy, bản chất của quá trình xây module tự động sao lưu dữ liệu hệ thống là quá trình kết hợp hai chương trình trên một cách nhịp nhàng thông qua ngôn ngữ lập trình shell script. Nội dung thực thi trong shell script bao gồm 2 công đoạn.
Sao lưu cơ sở dữ liệu hệ thống.
Xóa dữ liệu đã lỗi thời (một tháng sau khi được tạo).
2.2. Xây dựng phần mềm máy trạm
2.2.1. Module thu thập log trên nền hệ điều hành Windows.
2.2.1.1. Sử dụng WMI trong thu thập thông tin
Thực tế cho thấy, công nghệ WMI được tích hợp sẵn trên hệ điều hành Windows (từ phiên bản 2000 trở đi) đáp ứng đầy đủ các yêu cầu được đề ra. Để thu thập các thông tin mong muốn trên hệ điều hành Windows, cũng như rút ngắn thời gian trong việc ứng dụng công nghệ WMI, module chương trình được xây dựng dưới dạng truy vấn trung gian qua phần mềm Wmic.
Với sự hỗ trợ của công nghệ WMI mà trực tiếp là thông qua chương trình wmic, module thu thập thông tin hệ thống trên máy trạm được xây dựng dựa trên hình 2.26:
Hình 2.26 Sơ đồ hoạt động của module thu thập thông tin trên máy trạm.