Module tìm kiếm trên web

Một phần của tài liệu Nghiên cứu hệ thống quản lý mạng HP OPENVIEW và xây dựng ứng dụng quản trị hệ thống mạng (Trang 36)

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 (adsbygoogle = window.adsbygoogle || []).push({});

 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? (adsbygoogle = window.adsbygoogle || []).push({});

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ị (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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ụ:

Một phần của tài liệu Nghiên cứu hệ thống quản lý mạng HP OPENVIEW và xây dựng ứng dụng quản trị hệ thống mạng (Trang 36)