Để thực hiện đƣợc các ý tƣởng đã nêu ở phần 2.1, ta cần phải giải quyết đƣợc các vấn đề sau:
- các thông tin về ngƣời sử dụng là những thông tin mà SNMP không cung cấp, do đó cần một phƣơng thức thu thập, lƣu trữ thêm các thông tin này
- đối với trƣờng hợp theo dõi dịch vụ, cần phải xác định đƣợc các thủ tục mà ngƣời dùng khi truy cập vào hệ thống cần phải tuân theo, từ đó mô phỏng lại các hành động này, sau đó dựa trên cam kết chức năng dịch vụ để đánh giá kết quả mô phỏng, kết luận về trạng thái hoạt động của dịch vụ.
Các vấn đề trên lần lƣợt đƣợc xử lý nhƣ sau:
2.2.1. Giải quyết vấn đề thu thập, lưu trữ thông tin tác tử người sử dụng
Có hai giải pháp có thể giải quyết vấn đề này:
- Để tác tử tự tìm kiếm địa chỉ mạng và gửi đến máy chủ quản trị.
- Để ngƣời dùng tự nhập thông tin cần thiết khi đăng ký tải tác tử hoặc thay đổi cách thức cài đặt tác tử, yêu cầu ngƣời dùng nhập thông tin trƣớc khi cài đặt. Mỗi giải pháp đều có những vấn đề riêng. Đối với giải pháp thứ nhất, tác tử không thể tự tìm kiếm chính xác đƣợc vị trí vật lý, thông tin ngƣời sử dụng, do đó cần có cơ chế để từ các thông tin vật lý của thiết bị, hệ thống tự tìm kiếm ra thông tin ngƣời sử dụng. Hiện tại cơ chế tìm kiếm nhƣ vậy chƣa có, do đó luận văn không lựa chọn ý tƣởng này. Đối với giải pháp thứ hai, yêu cầu bắt buộc là ngƣời dùng
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
26
phải nhập đúng thông tin khi đăng ký hoặc cài đặt ban đầu. Yêu cầu này hoàn toàn có thể thực hiện đƣợc trong thực tế, do đó, phƣơng án thứ hai đƣợc lựa chọn.
Trong nghiên cứu đƣợc thực hiện và trình bày trong bài báo End user agent model for network management system [10] về đề tài tƣơng tự, tác giả sử dụng cách tạo một trang đăng ký tải tác tử quản trị, yêu cầu ngƣời dùng nhập thông tin vào trƣớc khi tải, tuy nhiên có thể thấy những nhƣợc điểm khi sử dụng phƣơng pháp này là:
- Phải tạo thêm một trang tải phần mềm riêng
- Khi tác tử ngƣời sử dụng thay đổi thông tin, ngƣời dùng cần phải báo lại cho quản trị viên để thay đổi hoặc đăng ký mới lại từ đầu, việc làm nhƣ vậy sẽ gây mất thời gian, và nếu số lƣợng yêu cầu thay đổi quá nhiều, quản trị viên sẽ gặp khó khăn do phải xử lý quá nhiều thông tin một lúc.
Để cải tiến phƣơng pháp này, thay vì tạo trang tải bộ cài và đăng ký thông tin, ta phát triển một phƣơng thức cài đặt mới. Cụ thể phƣơng thức mới sẽ có thêm các bƣớc nhập thông tin ngƣời sử dụng trong quá trình cài đặt, các thông tin này thay vì ghi trực tiếp vào cơ sở dữ liệu của máy chủ, sẽ đƣợc lƣu cục bộ trƣớc; máy chủ quản trị sau đó mới tự động truy cập để tạo mới hoặc cập nhật lại thông tin. Với cách làm nhƣ vậy, khi có thay đổi, ngƣời dùng sẽ tự cập nhật lại nội dung dữ liệu đã đƣợc lƣu trữ cục bộ, sau một khoảng thời gian nhất định, máy chủ sẽ tự động truy cập và ghi nhận. Quản trị viên hoàn toàn không phải tác động gì đến hệ thống mà vẫn có đƣợc thông tin chính xác.
Giao tiếp giữa hệ thống quản trị mạng cũ và thành phần tác tử ngƣời sử dụng nhƣ sau:
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
27
Hình 2.2-1: Giao tiếp giữa thành phần tác tử người sử dụng và hệ thống quản trị mạng
Ở phía máy tính cá nhân: sau khi tải về file cài đặt, ngƣời dùng sẽ thực hiện cài đặt tác tử. Trong quá trình cài đặt, ngƣời dùng tự nhập các thông tin cá nhân của mình, các thông tin này gồm:
- Vị trí địa lý của máy tính cá nhân - Tên ngƣời sử dụng
- Thƣ điện tử, số điện thoại liên lạc - Các thông tin khác
Các thông tin này đƣợc lƣu ra một file dữ liệu riêng, nội dung file dữ liệu này ngƣời dùng sẽ tự cập nhật khi có thay đổi vật lý, và đƣợc phần mềm quản trị mạng định kỳ đọc và ghi nhận.
Ở phía máy chủ quản trị mạng: quản trị viên cần cấu hình thêm máy đƣợc theo dõi mới, điều chỉnh các tham số ban đầu cần thiết. Sau đó, phần mềm quản trị sẽ tự động gửi yêu cầu lấy thông tin cho máy cá nhân, máy cá nhân đọc file dữ liệu tác tử và gửi về cho máy chủ để lƣu trữ vào cơ sở dữ liệu chung. Yêu cầu lấy thông tin tác tử đƣợc thực hiện định kỳ, nếu có thay đổi sẽ cập nhật lại vào cơ sở dữ liệu, đồng thời ghi lại toàn bộ lịch sử thay đổi.
2.2.2. Giải quyết vấn đề giám sát dịch vụ dựa trên chức năng
Rõ ràng nếu chỉ dựa vào các thông số về CPU, RAM, hay các thông số của SNMP cung cấp, ta không thể biết đƣợc khi nào một ứng dụng cung cấp dịch vụ cài trên máy chủ gặp sự cố, hay chính xác hơn, không thể giám sát đƣợc các lỗi ứng
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
28
dụng mà ngƣời sử dụng dịch vụ gặp phải. Để thực hiện đƣợc việc giám sát này, bắt buộc phải xây dựng đƣợc một hệ thống mô phỏng hành động ngƣời dùng, định kỳ chạy các mô phỏng này và gửi kết quả về cho máy chủ quản trị. Mỗi dịch vụ có một đặc điểm, thành phần phần mềm riêng, do đó sẽ không có một công thức chung để giám sát mọi loại dịch vụ, mà cần phải có những mô phỏng khác nhau cho mỗi dịch vụ khác nhau. Trong phạm vi luận văn, ta sẽ chỉ theo dõi hệ thống thƣ điện tử, một hệ thống quan trọng, phổ biến và yêu cầu tính sẵn sàng cao trong mọi doanh nghiệp, tổ chức hiện nay.
2.3 Hệ thống quản trị mạng hƣớng ngƣởi sử dụng để giám sát chức năng dịch vụ Email vụ Email
Sau khi phát triển đƣợc hệ thống quản trị mạng có thêm chức năng quản trị hƣớng ngƣời sử dụng nhƣ trên, ta sẽ triển khai thử nghiệm để giám sát một dịch vụ dựa trên chức năng, qua đó đánh giá mức độ hiệu quả của mô hình, công cụ giám sát mới. Dịch vụ đƣợc chọn để giám sát là dịch vụ thƣ điện tử (Email), các dịch vụ khác hoàn toàn có thể đƣợc xây dựng tƣơng tự.
Dƣới đây là bảng danh sách các dịch vụ con, cam kết dịch vụ với ngƣời dùng, và những thành phần mà hệ thống phát triển trong luận văn giám sát đƣợc:
Tên dịch vụ con Cam kết dịch vụ Khả năng giám sát
POP3, POP3SSL Đọc thƣ Có
Xóa thƣ Không
IMAP, IMAPSSL Đọc thƣ Có
Xóa thƣ Không
Tìm kiếm thƣ Có
Kiểm tra dung lƣợng hòm thƣ
Có
SMTP, SMTPSSL,
SMTPSTARTTLS
Gửi thƣ Có
Bảng 2.3-1: Danh sách cam kết chức năng dịch vụ và khả năng giám sát của hệ thống
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
29
Tác tử ngƣời sử dụng cài đặt trên nhiều máy tính cá nhân, định kỳ chạy các tác vụ mô phỏng hành động ngƣời dùng và gửi kết quả về cho máy chủ quản trị để theo dõi và cảnh báo khi có dấu hiệu bất thƣờng.
Chi tiết cấu trúc phần mềm, các bƣớc cài đặt và chạy thử nghiệm đƣợc trình bày trong chƣơng 3.
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
30
CHƢƠNG 3: XÂY DỰNG HỆ THỐNG QUẢN TRỊ, GIÁM SÁT DỊCH VỤ THƢ ĐIỆN TỬ (EMAIL)
3.1 Tổng quan hệ thống
Hệ thống phát triển dựa trên công cụ quản trị mạng Zabbix, sử dụng chức năng tạo các “Userparameter” từ các file kịch bản (script) viết bằng ngôn ngữ Python để mô phỏng hoạt động ngƣời dùng. Phần cài đặt tác tử Zabbix đƣợc viết lại bằng ngôn ngữ Bash shell để tích hợp thêm thành phần thu thập thông tin tác tử ngƣời sử dụng.
Mô hình các thành phần và liên kết giữa các thành phần của hệ thống nhƣ sau:
Hình 3.1-1: Các thành phần hệ thống giám sát dịch vụ thư điện tử
Diễn giải mô hình:
- Tác tử: lõi tác tử là Zabbix agent, phần cài đặt đƣợc viết lại dƣới dạng một shell script, shell script này thực hiện lần lƣợt các bƣớc:
o Tải về toàn bộ bộ cài tác tử gồm: mã nguồn zabbix agent, các script mô phỏng hành động ngƣời dùng, file cấu hình zabbix agent mẫu.
o Yêu cầu ngƣời dùng nhập các thông tin tác tử nhƣ: địa chỉ MAC, vị trí vật lý, thông tin quản trị viên,… và ghi toàn bộ các thông tin này vào file Agentinfo.txt theo một quy cách riêng.
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
31
o Yêu cầu ngƣời dùng nhập IP máy chủ Zabbix, tự động cập nhật vào file cấu hình zabbix agent mẫu và ghi đè lên file cấu hình mặc định khi cài. File cấu hình mẫu đã đƣợc cấu hình sẵn đƣờng dẫn đến các script kiểm tra dịch vụ, script kiểm tra thông tin tác tử và định nghĩa sẵn các “Userparameter” dùng cho các template trên máy chủ zabbix.
o Chép các file script vào đúng thƣ mục đƣợc trỏ đến trong file cấu hình. Các script bao gồm: + getInfo.py + imapCheck.py + pop3check.py + pop3_SSLcheck.py + smtp_IMAPnonSLL_check.py + smtp_IMAPSSL_check.py + smtp_POP3nonSSL_check.py + smtp_POP3SSL_check.py
- Hệ quản trị mạng (NMS): lõi của NMS là phần mềm mã nguồn mở Zabbix viết bằng ngôn ngữ C, ta tích hợp thêm các thành phần tác tử ngƣời sử dụng và giám sát dịch vụ dựa trên chức năng bằng cách cấu hình thêm các tham số và template tự tạo. Các template và tham số này bao gồm:
o Template “Agent Information”: template này định nghĩa các item thông tin về tác tử ngƣời sử dụng đƣợc thu thập. Các item đã đƣợc định nghĩa là:
+ “Agent MAC”: địa chỉ MAC của giao diện mạng thiết bị + “Agent Owner”: tên ngƣời quản trị thiết bị
+ “Agent Position”: vị trí vật lý của thiết bị
+ “Agent Other Information”: Các thông tin khác nhƣ số điện thoại, email…
Giá trị của các item này đƣợc thu thập bằng script getInfo.py
o Template “Mail_Template”: template định nghĩa các item thông tin về ứng dụng mail. Các item đã đƣợc định nghĩa là:
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
32
+ “imap_non_SSL_Check”: kết quả kiểm tra dịch vụ IMAP
+ “IMAP_quota”: kết quả kiểm tra dung lƣợng đã dùng/dung lƣợng cho phép của tài khoản thƣ điện tử đƣợc cung cấp
+ “IMAP_SSL”: kết quả kiểm tra dịch vụ IMAP_SSL + “POP3_nonSSL” : kết quả kiểm tra dịch vụ POP3 + “POP3_SSL” : kết quả kiểm tra dịch vụ POP3SSL
+“SMTP_nonSL_toGmail_IMAP”: kết quả kiểm tra dịch vụ SMTP, tài khoản gửi thƣ đến là tài khoản Gmail, sử dụng IMAP để kiểm tra thƣ đến
+ “SMTP_SSL_toHotmail_IMAP”: kết quả kiểm tra dịch vụ SMTPSSL, tài khoản gửi thƣ đến là tài khoản Hotmail, sử dụng IMAP để kiểm tra thƣ đến
+ “SMTP_STARTTLS_toLocal_POP3”: kết quả kiểm tra dịch vụ SMTPSTARTTL, tài khoản gửi thƣ đến là tài khoản cùng tên miền với tài khoản gửi đi, sử dụng POP3 để kiểm tra thƣ đến.
- Giao diện quản trị, hiển thị thông tin (Web Frontend): Đây là thành phần giao diện đồ họa để quản trị viên cấu hình, thêm, sửa, xóa các tác tử mới. Thành phần này là giao diện sẵn có của Zabbix, viết bằng PHP, ta giữ nguyên, không thay đổi so với phiên bản gốc.
3.2 Lựa chọn giải pháp công nghệ
Để triển khai mô hình giám sát dựa trên tác tử ngƣời sử dụng, ta có thể tự phát triển một hệ thống quản trị mạng hoặc sử dụng một hệ quản trị mạng mã nguồn mở và phát triển thêm các module hỗ trợ. Phƣơng án thứ nhất rõ ràng phải đầu tƣ rất nhiều công sức và thời gian, và gần nhƣ không khả thi trong phạm vi luận văn, do đó ta lựa chọn phƣơng án hai, sử dụng một công cụ mã nguồn mở phù hợp để phát triển thêm các module mới.
Sau nhiều nghiên cứu, thử nghiệm các phần mềm quản trị mạng mã nguồn mở, phần mềm đƣợc lựa chọn là Zabbix. Zabbix là một giải pháp giám sát thiết bị, ứng dụng mạng dành cho doanh nghiệp đƣợc viết bởi bởi Alexei Vladishev[5]. Ra đời từ
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
33
năm 1998, đến nay nó đã có một cộng đồng sử dụng và phát triển rộng lớn. Phần lõi của Zabbix đƣợc phát triển bằng ngôn ngữ C, giao diện web viết bằng PHP, có thể hoạt động với nhiều cơ sở dữ liệu nhƣ MySQL, PostgreSQL, SQLite, Oracle. Zabbix cung cấp cho ngƣời dùng các cơ chế giám sát hệ thống sau:
- kiểm tra đơn giản (simple check), cơ chế này cho phép kiểm tra tính sẵn sàng và thông tin phản hồi của một số dịch vụ chuẩn nhƣ SMTP hay HTTP mà không cần cài thêm bất cứ phần mềm nào ở thiết bị cần theo dõi.
- sử dụng tác tử zabbix, sử dụng cơ chế này, ngƣời dùng cần cài đặt một tác tử đặc biệt lên hệ thống để thu thập các thông tin nhƣ tải của CPU, tình trạng sử dụng tài nguyên mạng, dung lƣợng đĩa cứng,…
- sử dụng các giao thức chuẩn nhƣ SNMP, ICMP, cũng nhƣ các giao thức thƣờng dùng khác nhƣ IPMI, JMX, SSH, Telnet.
Ngoài các tính năng mà một hệ quản trị mạng cần có nhƣ: giám sát trạng thái, hiệu năng thiết bị, các tính năng cảnh báo sự cố bằng thƣ điện tử, tin nhắn điện thoại, tổng hợp vẽ đồ thị,… Zabbix đặc biệt mạnh trong việc hỗ trợ phát triển các thành phần giám sát, thu thập thông tin mới theo ý ngƣời dùng, đây là lý do chính để Zabbix đƣợc lựa chọn để phát triển các ý tƣởng mới.
Các thành phần phát triển thêm bao gồm: một phƣơng thức cài đặt tác tử tự động, thực hiện lần lƣợt các thao tác nhƣ mô tả ở phần trên, ngôn ngữ đƣợc lựa chọn để thực hiện là bash shell, các module mô phỏng hành động ngƣời dùng, đƣợc phát triển bằng ngôn ngữ Python. Các ngôn ngữ này đều đƣợc hỗ trợ mặc định trên môi trƣờng Linux, do đó rất thuận tiện trong việc cài đặt và triển khai thử nghiệm.
Từ các ý tƣởng và công cụ đƣợc nghiên cứu, lựa chọn một cách kỹ càng, các module mới đã đƣợc phát triển thành công. Phần tiếp theo sẽ trình bày về cách cài đặt các thành phần này và hệ thống thử nghiệm.
3.3 Cài đặt các thành phần của hệ thống
3.3.1. Lập trình các module mới
Zabbix hiện tại đã cung cấp các chức năng nhƣ sau:
Quản trị mạng hướng người sử dụng: mô hình sử dụng tác tử người sử dụng
34
- Zabbix Agent có thể đƣợc cài đặt trên Linux hoặc Windows
- Hỗ trợ phát triển thêm các thành phần giám sát mới bằng các ngôn ngữ lập trình khác nhau. Ta chỉ cần phát triển các script thu thập thông tin, cấu hình các Userparameter, việc truyền thông tin giám sát, lƣu trữ và cảnh báo đƣợc thực hiện nhƣ với các thống số CPU, RAM mặc định.
Nhƣ vậy, cần lập trình thêm các thành phần sau:
- module cài đặt và thu thập thông tin tác tử. Module này đƣợc thực hiện bởi một file cài đặt, yêu cầu ngƣời dùng nhập thông tin, lƣu lại thông tin này, và tự động cài đặt, cấu hình Zabbix agent cho phù hợp.
- các module mô phỏng quá trình sử dụng dịch vụ. Các module này đƣợc thực hiện bởi các script viết bằng ngôn ngữ python, mô phỏng quá trình sử dụng dịch vụ của ngƣời dùng. Đối với hệ thống thƣ điện tử, cần các script theo dõi các dịch vụ sau: + POP3 + POP3SSL + IMAP + IMAPSSL