Chức năng tìm kiếm được phân chia cụ thể vào các module trên máy chủ. Điều đó có nghĩa là với mỗi một module quản lý đều có chức năng tìm kiếm đi kèm. Do các module quản lý này đều sử dụng jqgrid làm lớp view, chức năng tìm kiếm cũng được chúng tôi sử dụng dựa trên tình năng tìm kiếm và lọc thông tin của jqgrid.
Quy trình thực hiện sẽ được mô tả ở hình 2.6:
Hình 2.6 Quy trình thực hiện tìm kiếm dữ liệu
2.1.5. Module quản lý ngƣời dùng theo nhóm.
Để đảm bảo tốt cho việc quản trị hệ thống, hệ thống hỗ trợ việc phân quyền cho quản trị. Có 3 cấp quyền:
Super administrator: Đây là cấp cao nhất. Với quyền hạn này, người dùng sẽ có được toàn quyền đến hệ thống
Administrator: Quyền hạn này sẽ đảm bảo thực hiện gần như toàn bộ các quyền như Super administrator, Tuy nhiên một số chức năng như cấp quyền user cũng như cấu hình hệ thống sẽ không được thực hiện bởi cấp quyền hạn này. Ngoài ra, chức năng remote đến thiết bị cũng sẽ bị hạn chế.
Manager: Chức năng quản lý đơn thuần. Một manager chỉ có nhiệm vụ theo dõi hệ thống, xem các log hệ thống mà thôi.
Bắt đầu Tiếp nhận request
Phân tích URL
Kết thúc Kết nối đến CSDL
Query danh sách tìm kiếm tương ứng các tham số Chuyển đổi resultset sang json structure
Kiểm tra bảo mật biến đầu vào
Hình 2.7 Sơ đồ thuật toán Controller xử lý thao tác quản lý người dùng + - GET POST Bắt đầu Tiếp nhận request Phân tích URL
Yêu cầu quản lý user
GET hay POST
Trả về trang hiển thị giao diện quản lý User
Kết thúc Kết nối đến CSDL
Query danh sách user
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 user?
Query chi tiết user
Chi tiết
2.1.6. Module quản lý thông tin đăng nhập của ngƣời dùng
Tại trang đăng nhập (view login), quản trị bắt buộc phải điểm đủ 2 thông tin là: Tên đăng nhập
Mật khẩu
Do trong CSDL, mật khẩu của quản trị được lưu dưới dạng hash thay vì bản rõ nên lớp view trước khi gửi thông tin sẽ thực hiện hash 2 lần mật khẩu sử dụng SHA - 256.Việc làm này đảm bảo việc hạn chế tối đa khả năng tra cứu mã trong từ điển.Để thực hiện được điều này, lớp view sử dụng thư viện jqhash, một thư viện mã nguồn mở chuyên thực hiện thuật toán liên quan đến SHA (http://caligatio.github.com/jsSHA/).
Thông tin về phiên làm việc của quản trị viên được lưu lại và tồn tại trong vòng 30 phút nếu không có hoạt động nào. Do đó nếu như quản trị không sử dụng hệ thống thì có thể sử dụng chức năng đăng xuất của hệ thống. Khi đăng nhập, cookie lưu trên trình duyệt của quản trị cũng được tự động mã hóa theo thuật toán riêng của tornado web set_secure_cookie() nhằm đảm bảo an toàn cho quản trị viên khi sử dụng hệ thống.
2.1.7. Module thu nhận thông tin cho phần mềm máy chủ.
2.1.7.1. Websocket
WebSockets mới xuất hiện trong HTML5, là một kỹ thuật Reverse Ajax mới hơn Comet (Comet là kỹ thuật cũ được sử dụng trên nền web để phục vụ nhu cầu Web server push dữ liệu về brower).WebSockets cho phép các kênh giao tiếp song song hai chiều và hiện đã được hỗ trợ trong nhiều trình duyệt (Firefox, Google Chrome và Safari, IE 9 trở lên).Kết nối được mở thông qua một HTTP request (yêu cầu HTTP), được gọi là liên kết WebSockets với những header đặc biệt. Kết nối được duy trì để lập trình viên có thể viết và nhận dữ liệu bằng JavaScript như khi đang sử dụng một TCP socket đơn thuần.
Browser có thể nhận thông tin mà không cần phải refresh lại trình duyệt, lưu lượng sử dụng websoket nhỏ hơn hẳn sử dụng http để gửi và nhận dữ liệu nên websocket đã đảm bảo tiêu chí đặt ra là thuận tiện và chiếm ít tài nguyên mạng.
2.1.7.2. Google Protobuf
Để truyền tải thông tin từ máy chủ đến máy trạm, dữ liệu được mã hóa (encrypt) và sử dụng protocol buffers hay protobuf làm công cụ encode. Protocol Buffers là cách thức sắp xếp dữ liệu một cách uyển chuyển, hiệu quả và tự động. Nó cũng có thể như là XML nhưng đơn giản, nhanh và hiệu quả hơn. Để sử dụng cách thức này, trước tiên cần phải định nghĩa cấu trúc dữ liệu cần truyền tải sau đó nó sẽ tự động sinh ra mã nguồn (các class) cho phép lập trình viên có thể ghi, đọc vào cấu trúc đã được chuyển đổi đó một cách dễ dàng. Lý do chúng tôi không sử dụng XML làm cách thức đóng gói dữ liệu là bởi vì với protocol buffer, dữ liệu được mã hóa nhanh hơn, nhỏ hơn, đơn giản hơn và việc sử dụng các class này rất dễ dàng trong lập trình.
2.1.7.3. Cơ chế thực hiện việc phát và nhận thông tin tới đối tƣợng
Với ý tưởng thiết kế quản lý tập trung, chúng tôi đề xuất một mô hình cấp phát và nhận thông tin từ máy chủ đến máy trạm/thiết bị và ngược lại.
Với ý tưởng này, máy chủ sẽ đóng vai trò là một thành phần chủ động trong khi máy trạm sẽ là thành phần bị động.
Hình 2.9 Mô hình hoạt động giữa Máy chủ- Máy trạm/Thiết bị
Máy chủ giám sát (monitoring server)
Máy trạm Scheduler thread Policy process Result process Sensors Agent Thiết bị SNMP device
Monitoring server sẽ làm nhiệm vụ gửi đi những yêu cầu về tập luật được gán cho thiết bị/máy trạm tới thiết bị tương ứng và tiếp nhận những giá trị trả về từ client (thiết bị/máy trạm).Trong thiết kế hệ thống này, các máy trạm được kết nối đến server thông qua websocket. Máy chủ sẽ làm nhiệm vụ kích hoạt các yêu cầu và đợi client phản hồi về. Điều này có thể làm tăng quá trình hoạt động của máy chủ lên, tuy nhiên máy chủ sẽ quản lý được các luồng dữ liệu đến nó tốt hơn. Cụ thể là nó sẽ biết khi nào phải gửi yêu cầu đi và phải gửi những gì cũng như khi nào thì tạm dừng để tránh quá tải hệ thống.
2.1.7.4. Hệ thống tập luật và quản lý tập luật trên web quản trị
* Nhóm tập luật
Trước tiên, các luật được phân nhóm lại vào các nhóm riêng lẻ.Các nhóm tập luật này được thiết kế với mục đích giúp cho quản trị viên có thể dễ dàng lựa chọn tập luật phù hợp với mục đích nhất. Các nhóm tập luật có thể là nhóm liên quan đến CPU, nhóm liên quan đến bang thông hoặc bộ nhớ của thiết bị.
Cấu trúc giải thuật cũng như các mô tả về nhóm tập luật được thực hiện tương tự như của thiết kế nhóm máy trạm/thiết bị (module 1.11. Module quản lý máy trạm theo nhóm)
* Tập luật,
Thông tin về tập luật sẽ bao gồm các trường chính sau: Tên tập luật
Nhóm tập luật: phân chia tập luật về các nhóm khác nhau để quản trị dễ quản lý Tham số: Tham số của tập luật.
Giá trị lỗi: Khoảng giá trị mặc định mà hệ thống sẽ so sánh với giá trị thu về từ thiết bị hoặc máy trạm để từ đó quyết định thiết bị có lỗi hay không
Giá trị cảnh báo: Khoảng giá trị mặc định mà hệ thống sẽ so sánh với giá trị thu về từ thiết bị hoặc máy trạm để từ đó quyết định thiết bị có cảnh báo nào không. Kiểu tập luật: sử dụng SNMP hay cho các máy trạm sử dụng WMI
Kiểu giá trị trả về: Hiện tại hệ thống hỗ trợ 2 loại giá trị trả về là kiểu số hoặc kiểu chuỗi ký tự.
Trạng thái: Dùng hay không dùng tập luật này
Việc tạo một luật mới được chỉ định thực hiện cho cấp cao nhất là quyền Super Administrator.
Hình 2.10 Sơ đồ thuật toán controller xử lý thao tác quản lý tập luật 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ý tập luật?
GET hay POST
Trả về trang hiển thị giao diện quản lý tập luật
Kết thúc Kết nối đến CSDL
Query danh sách các tập luật
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 tập
luật?
Query thông tin một tập luật
Query danh sách nhóm cha
-
* Gán tập luật có sẵn cho một đối tượng (thiết bị mạng/máy trạm)
Sau khi đã có các tập luật, quản trị viên sẽ phải có nhiệm vụ gán các tập luật này vào với các thiết bị/máy trạm tương ứng.
Hình 2.11 Sơ đồ thuật toán controller xử lý thêm tập luật cho thiết bị/máy trạm
Không Có + Bắt đầu Tiếp nhận request Phân tích URL Yêu cầu gán tập luật? GET hay POST Kết thúc Kết nối đến CSDL Query danh sách các tập luật chưa gán cho ID thiết bị
Chuyển đổi resultset sang json structure
Kết nối đến CSDL
Thực hiện câu truy vấn INSERT CSDL
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
-
GET POST
ID thiết bị tồn tại?
Hình 2.12 Sơ đồ thuật toán controller xử lý sửa tập luật cho thiết bị/máy trạm Có Không Có + Bắt đầu Tiếp nhận request Phân tích URL Yêu cầu gán tập luật? GET hay POST Kết thúc Kết nối đến CSDL Query danh sách các tập luật tương ứng ID thiết bị
Chuyển đổi resultset sang json structure
Kết nối đến CSDL
Thực hiện câu truy vấn UPDATE và DELETE CSDL
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
ID thiết bị tồn tại? - GET POST ID thiết bị tồn tại? Không Phân tích lệnh (delete, update)
2.1.8. Module quản lý sự kiện
Tất cả các sự kiện của hệ thống đều được lưu trữ lại để thuận tiện cho việc cảnh báo cũng như thống kê báo cáo của quản trị.Như đã trình bầy trong mục trước về xây dựng CSDL hệ thống, khi có sự kiện xẩy ra, các thông tin này sẽ được lưu trữ trong bảng Log.
Giống như các module quản lý khác, module này được thiết kế theo chuẩn mô hình MVC. Lớp View sử dụng jqgrid làm công cụ để hiển thị dữ liệu tới quản trị đồng thời cũng có vài trò trong việc lọc và tách thông tin.Các thông tin này được gửi đến và nhận từ lớp controller log.
Có 3 loại log để quản lý:
Log cảnh báo lỗi nguy hiểm Log cảnh báo
Log hệ thống
Về cơ bản 3 loại log này đều lưu thông tin như nhau, chỉ khác về mặt nội dung. Trong khi log hệ thống sẽ ghi lại toàn bộ những lỗi gây ra bởi hệ thống quản trị (sẽ được trình bầy kỹ hơn trong mục 1.15. Module kiểm tra hệ thống phần mềm), 2 loại log kia sẽ lưu các thông tin gửi đến từ máy trạm và các thiết bị mạng khác.
Hình 2.13 Sơ đồ thực hiện chức năng quản lý sự kiện + - GET POST Bắt đầu Tiếp nhận request Phân tích URL
Yêu cầu quản lý Log
GET hay POST
Trả về trang hiển thị giao diện quản lý log
Kết thúc Kết nối đến CSDL
Query danh sách log theo loại log
Chuyển đổi resultset sang json structure
Phân tích lệnh UPDATE log
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 log?
Query chi tiết log
Chi tiết
2.1.9. Module quản lý thông tin trên máy trạm
2.1.9.1. Quản lý kết nối đến máy trạm
Agent trên máý trạm làm nhiệm vụ thiết lập kết nối websocket đến máy chủ và sử dụng protobuf để đóng gói dữ liệu truyền và nhận.Thông qua kết nối websocket, máy trạm sẽ truy vấn đến địa chỉ của máy chủ được cấu hình bởi quản trị. Máy trạm sẽ kết nối đến và đăng ký thông tin của nó với máy chủ; Khi được kích hoạt, máy trạm sẽ dùng thông tin định danh này để kết nối vào hệ thống.
Hình 2.14 Sơ đổ xử lý kết nối máy trạm
+ - + + + - - Bắt đầu Chờ sự kiện từ máy trạm Kiểm tra xác thực Phù hợp thông tin của hệ thống? Có yêu cầu ngắt kết nối?
Gửi phản hồi cho máy trạm và thông báo cho quản trị
Kết thúc
Có yêu cầu đăng nhập hệ thống?
-
Đă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? Đóng kết nối websocket
+
- Có yêu cầu gửi
kết quả luật?
Thực hiện các tác vụ cập nhật
2.1.9.2. Hệ thống tập luật liên quan đến thông tin máy trạm
Đối với các máy trạm sử dụng WMI làm phương tiện thu thập thông tin, định dạng tập luật sẽ như sau:
Group;Name;Position
Trong đó:
Group: Nhóm lớp WMI cần lấy thống tin (ví dụ CPU)
Name: Giá trị WMI cụ thể cần lấy (ví dụ LoadPercentage). Tên sẽ phụ thuộc vào nhóm WMI
Position: Vị trí giá trị cần lấy (ví dụ: 0 là giá trị đầu tiên trong danh sách các giá trị trả về từ truy vấn đến WMI). Vì một số giá trị trả về dưới dạng danh sách các giá trị nên việc quyết định lấy giá trị nào cũng rất quan trọng. Chính vì thế nên trường Position này phải được quản trị thử trên máy trạm trước khi đưa vào hệ thống tham số tập luật.
2.1.9.3. Cơ cấu thực hiện việc lấy thông tin từ các máy trạm
Các thông điệp trao đổi giữa máy trạm và máy chủ được thực hiện qua các bước: Mã hóa dữ liệu cần gửi bằng AES (CFB Mode)
Đóng gói dữ liệu vào khung theo protobuf
Gửi đến máy chủ và được giải mã tại đây theo ID của máy trạm gửi tin đó. Quy trình thực hiện sẽ được mô tả ở hình 2.15:
Hình 2.15 Sơ đồ gửi và nhận dữ liệu từ máy trạm đến máy chủ
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ụ: