Sau khi đăng nhập thành công, người dùng sẽ được chuyển tới trang chính là “Dashboard” hay còn gọi là “Bảng điều khiển”
Với “Bảng điều khiển”, người quản trị có thể xem nhanh mợt cách tổng qt về tình hình hiện tại của các thiết bị, máy chủ đang được quản lý bởi hệ thống giám sát này. Bao gồm:
Các thông tin về cảnh báo mới nhất
Số lượng đối tượng mạng được quản lý cùng trạng thái của chúng.
Số lượng về các cảnh bảo ở các cấp độ khác nhau: Critical (nghiêm trọng), Warning (cảnh báo) và Info (thông tin)
Các biểu tượng được thiết kế theo các nhau ứng với các cấp độ cảnh báo khác nhau. Khi nhấn vào từng biểu tượng, người dùng sẽ được chuyển tới các trang chức năng tương ứng cũng như từng thiết bị đang được giám sát tương ứng.
Tồn bợ website được thiết kế theo chuẩn HTM5 và CSS3, hỗ trợ tính năng reponsive (đáp ứng) do vậy nó có khả năng co giãn và hiện thị được trên nhiều đợ phân giải màn hình khác nhau.
4.2.2 Thêm và quản lý thiết bị
Để thêm thiết bị mới, từ menu bên trái: Thiết bị → Thêm Thiết bị.
Giao diện của trang “Thêm thiết bị” được thiết kế theo dạng thuật sĩ, được chia làm ba bước chính:
Bước 1: Cung cấp thông tin thiết bị, bao gồm thơng tin nhóm, địa chỉ IP cùng hostname.
Bước 2: Cung cấp thông tin về phương thức giám sát sẽ được sử dụng để giám sát thiết bị đồng thời cung cấp các thông tin mở rộng của từng phương thức giám sát. Bước 3: Xác nhận thông tin thiết bị mới.
Hình 4.9 Chọn loại thiết bị cùng phương thức giám sát. Website hiện hỗ trợ các đối tượng được giám sát bao gồm: Website hiện hỗ trợ các đối tượng được giám sát bao gồm:
Máy chủ: Linux, Windows Thiết bị mạng: Router, Switch
Ảo hóa: Vmware ESXi, VMware vCenter
Sau khi thiết bị mới được thêm vào hệ thống, nó sẽ được liệt kê ở danh sách các thiết bị. Từ menu bên trái : Thiết bị → Danh sách thiết bị
Hình 4.10 Danh sách thiết bị đang được giám sát
Tại trang “Danh sách thiết bị”, tất cả các đối tượng mạng đang được giám sát sẽ được liệt kê dưới dạng bảng và bao gồm các thơng tin như: tên, địa chỉ IP, nhóm và loại thiết bị. Bên cạnh đó, chúng ta cũng có thể xem nhanh về số lượng sự kiện hiện có trên thiết bị này với các mức độ là Cirtical (nghiêm trọng), Warning (cảnh báo), và Info (thông tin).
Khi nhấn vào tên của từng thiết bị trên bảng danh sách các thiết bị ở trên, website sẽ chuyển tới trang thông tin của giám sát của thiết bị tương ứng đó. Tùy theo loại thiết bị khác nhau mà nợi dung trang thơng tin có thể khác nhau.
Đối với giám sát máy chủ chạy hệ điều hành Linux, Windows trang nợi dung sẽ có các thơng tin về:
Tổng quan: Các thông tin tổng quan về máy chủ như hệ điều hành, trạng thái máy chủ, bộ nhớ, cpu ...
Bộ xử lý: Thông tin tổng quan về bộ xử lý của máy chủ, biểu đồ tải hoạt động của từng lõi của bộ xử lý.
Mạng: Thông tin tổng quan về các giao tiếp mạng của máy chủ, biểu đồ tải hoạt động của từng giao tiếp mạng.
Lưu trữ: Thông tin tổng qua về các ổ đĩa, mount point có trên máy chủ, biểu đồ biểu diễn mức dung lượng đã sử dụng.
Hình 4.11 Trang thơng tin tổng quan giám sát của hệ điều hành Windows
Đối với giám sát thiết bị mạng Cisco, các thông tin chủ yếu tập trung vào trạng thái tồn tại của các thiết bị đó và các giao tiếp mạng. Ngoài ra, đối với Switch sẽ được giám sát thêm về Vlan, trạng thái cũng như cấu hình IP trên các Vlan đó.
Hình 4.13 Trang thơng tin tổng quan của một Switch Cisco
Đối với trang nội dung của hạ tầng ảo hóa VMware vSphere sẽ có hai đối tượng giám sát chính là ESXi đơn và vCenter đã bao gồm nhiều ESXi host được quản lý bởi nó. vCenter có các thơng tin giám sát về trạng thái, địa chỉ IP và bảng danh sách các ESXi host. Các ESXi sẽ có các thơng tin giám sát về:
Trạng thái
Danh sách các vSwitch Danh sách các PortGroup Danh sách các Interface vật lý Danh sách máy ảo
Hình 4.14 Trang thơng tin về lưu trữ của một ESXi host.
4.2.3 Quản lý giám sát
“Bảng Quy Tắc Giám Sát” là tập hợp các quy tắc được người dùng định nghĩa ra nhằm mục đích áp đặt sự so sánh trong q trình hệ thống giám sát xét duyệt có gửi thơng báo cảnh báo cho người dùng về hệ thống của mình. Mặc định người dùng mới đăng ký sẽ được khởi tạo bảng rule mặc định, để thay đổi bảng rule này chúng ta duy chuyển tới Giám Sát
Mặc định người dùng chỉ được phép sửa hai trường trong bảng bên trên là “So Sánh” và “Giá Trị”. Các giá trị khác như “Nợi Dung” đã được lập trình theo dạng khn mẫu (template) nên sẽ thay đổi nội dung theo phù hợp biểu thức mà người dùng đã thay đổi. Ngồi ra, ở trường nợi dung được thiết lập mặt định với hai ngôn ngữ là tiếng Anh và tiếng Việt được ngăn cách bởi dấu “|”. Khi hệ thống gửi bản tin SMS hoặc Email thơng báo tới người dùng thì sẽ chọn loại ngơn ngữ mà người dùng đã thiết lập trong hồ sơ (profile) của họ.
4.2.4 Quản lý người dùng
“Quản lý người dùng” chính là thơng tin liên hệ, được sử dụng khi đăng nhập vào hệ thống giám sát cần gửi bản tin SMS hay Email khi phát hiện có sự lỗi hay sự bất thường trên các đối tượng mạng của người dùng. Các thông tin bao gồm tên người dùng, địa chỉ email, số điện thoại, khi hệ thống giám sát sử dụng bảng quy tắc để so sánh và thấy có sự thỏa điều kiện thì nó sẽ gửi thơng báo cảnh báo tới các “người dùng” đã được người dùng chỉ định. Mặc định, khi người dùng đăng ký mới thì sẽ có mợt “người dùng” được tự đợng tạo ra với thơng tin chính là thơng tin mà người dùng đã sử dụng để đăng ký tài khoản.
Để có thể thay đổi nợi dung “người dùng” di chuyển tới Quản lý người dùng → Thêm người dùng.
4.3 Cài đặt hệ thống giám sát giám sát
4.3.1 Cài đặt website giao diện người dùng
Website được viết bằng ngôn ngữ PHP và sử dụng hệ quản trị CSDL MySQL Server, do vậy việc cài đặt là khá dễ dàng chỉ yêu cầu máy chủ cài đặt WebServer có hỗ trợ PHP đồng thời cài đặt MySQL Server phiên bản 5 trở lên. Phần này sẽ hướng dẫn các bước cài đặt Website giao diện người dùng của ứng dụng luận văn trên hệ điều hành CentOS 6
Bước 1: Cài đặt Web Server, MySQL Server và PHP Cài đặt Web Server httpd
$ sudo yum install httpd
Cài đặt MySQL Server
$ sudo yum install mysql
Cài đặt PHP
$ sudo yum install php
Cài đặt các gói PHP khác nếu cần thiết
$ sudo yum install php-mysql php-gd php-imap php-odbc php-pear php-xml php- xmlrpc
Khởi động lại dịch vụ http sau khi đã cài đặt xong
$ sudo service httpd restart
Bước 2: Cài đặt composer
Laravel quản lý việc cài đặt các gói thư viện của nó nhờ vào "composer”. Chúng ta có thể download tệp tin composer.phar về từ địa chỉ https://getcomposer.org và sao chép vào thư mục /usr/local/bin của của hệ điều hành để có thể sử dụng như mợt lệnh hệ thống
$ cd /usr/local/bin
$ wget https://getcomposer.org/download/1.0.0-alpha8/composer.phar $ mv composer.phar composer
Bước 3: Sao chép mã nguồn website
Chúng ta có thể tạo mợt vhost mới cho website, tuy nhiên ở đây có thể sử dụng thưc mục mặc định /var/www/html. Thực hiện sao chép tồn bợ mã nguồn của website luận văn và đặt vào thưc mục trên.
Bước 4: Cài đặt Laravel framework và các thư viện cần thiết
Để website có thể hoạt đợng được, chúng ta cần cài đặt các gói thư viện được sử dụng trong quá trình website thực thi. Việc cài đặt khá dễ dàng nhờ vào lệnh composer đã cài đặt ở trên
$ composer install
Bước 5: Cấu hình kết nối tới CSDL
Tệp tin cấu hình các thơng số kết nối CSDL của website được đặt ở vi app/config/database.php chúng ta cần cấu hình lại cho phù hợp với hệ quản trị CSDL đang sử dụng
$ cd /var/wwư/html/
$ vi app/config/database.php
Tại mục connections chúng ta sẽ cấu hình tham số kết nối tới hệ quản trị CSDL mà chúng ta đang sử dụng. Ở đây là MySQL Server với các tham số sau:
host: địa chỉ IP hoặc hostname của MySQL Server database: tên cơ sở dữ liệu của website
username: tên người dùng đăng nhập hệ quả trị CSDL password: mật khẩu của người dùng trên
4.3.2 Cài đặt master server
Master Server được viết bằng ngơn ngữ Python do vậy nó thể chạy được trên nhiều hệ điều hành khác nhau như Windows, Linux, Mac OS với yêu cầu đã cài đặt Python cùng các thư viện kèm theo. Trong phần hướng dẫn cài đặt này, Master Server sẽ được cài đặt trên hệ điều hành Ubuntu Server 12.04 với các bước như sau:
Cài đặt các thư viện phát triển
Cài đặt các gói thư viện cho Python
$ pip install MySQL-python $ pip install pysnmp
$ pip install pysphere
Sau khi đã cài đặt các thư viện thành công, tiến hành sao chép mã nguồn của Master Server vào thư mục cố định trên máy chủ và tiến hành hiệu chỉnh tệp tin cấu hình config.ini được đặt trong thư mục con fab_config. Mợt số cấu hình quan trọng như sau:
tmp_path: Cấu hình đường dẫn tới thư mục tạm trên hệ thống, dùng cho việc lưu trữ các nội dung tạm được sinh ra trong quá trình Master Server làm việc.
master_log: Nơi chứa log thực thi của Master Server.
db_hostname, db_user, db_passowrd, db_dbname: Cấu hình các thơng số kết nối tới cơ sở dữ liệu dùng bởi Master Server bao gồm tên máy chủ, tên người dùng, mật khẩu và tên cơ sở dữ liệu.
Sau khi đã thiết lập cấu hình xong, ta khởi đợng Master Server $ python master.py -t =all
Trong đó Master Server có thể được khởi đợng ở 6 chế đợ, tương ứng với các kiểu giám sát và đối tượng giám sát khác nhau như sau:
all: Thực thi ở tất cả các phương thức giám sát khác nhau. agent_server: Thực thi ở phương thức giám sát sử dụng Agent. ssh_server: thực thi ở phương thức giám sát SSH đối với máy chủ. snmp_server: thực thi ở phương thức giám sát SNMP đối với máy chủ. snmp_router: thực thi ở phương thức giám sát SNMP đối với router. snmp_switch: thực thi ở phương thức giám sát SNMP đối với switch. vmware_esxi: thực thi giám sát các ESXi
vmware_vcenter: thực thi giám sát các vCenter cùng ESXi nó quản lý.
Việc Master Server có thể thực thi ở các chế độ khác nhau sẽ giúp chúng ta có thể cài đặt nó lên nhiều máy chủ và thực thi từng chế độ nhằm giảm tải và tăng tốc độ xử lý cho hệ thống.
4.3.3 Cài đặt API server
Tương tự như Master Server, API Server cũng được viết bằng ngôn ngữ Python do vậy nó thể chạy được trên nhiều hệ điều hành khác nhau như Windows, Linux, Mac OS với yêu cầu đã cài đặt Python cùng các thư viện kèm theo. Trong hướng dẫn này API Server sẽ được cài đặt trên hệ điều hành CentOS 6 với các bước như sau:
Cài đặt tư viện phát triển của Python
$ yum install python-devel
Cài đặt virtualenv
$ yum install virtualenv
Tạo thư mục chứa API Server
$ mkdir -p /opt/api-server $ cd /opt/api-server
Khởi tạo môi trường mới bằng virtualenv
$ virtualenv flask
Duy chuyển vào thư mục flask vùa được tạo ra và cài đặt Flask framework cùng các gói thư viện khác cho Python
$ flask/bin/pip install flask
$ flask/bin/pip install flask-httpauth $ flask/bin/pip install configobj $ flask/bin/pip install MySQL-python $ flask/bin/pip install gunicron
Sau khi đã cài đặt Flask framework cùng các thư viện Python thành công, tiến hành sao chép mã nguồn của API Server vào /opt/api-server vừa tạo và thay đổi nội dung tập tin cấu hình config.ini với các nợi dung chính như sau:
api_log: Nơi chứa log thực thi của Master Server.
db_hostname, db_user, db_passowrd, db_dbname: Cấu hình các thơng số kết nối tới cơ sở dữ liệu dùng bởi Master Server bao gồm tên máy chủ, tên người dùng, mật khẩu và tên cơ sở dữ liệu.
Tạo tệp tin khởi động API Server, tệp tin này cũng sẽ giúp API Server khởi động đồng thời cùng với hệ thống khi được khởi động lại.
$ vi /etc/init.d/api-server
Nội dung tệp tin api-server mẫu như sau: #!/bin/sh . /etc/rc.d/init.d/functions PROJECT_NAME="app" SERVER_DIR="/opt/api-server" PIDFILE="${SERVER_DIR}/gunicorn-${PROJECT_NAME}.pid" GUNICORN="/opt/api-server/flask/bin/gunicorn"COMMAND="cd $SERVER_DIR && $GUNICORN -p $PIDFILE $PROJECT_NAME:app > /dev/null 2>&1 &"
start() {
if [ -f $PIDFILE ] then
echo "$PROJECT_NAME has been runing already" else
echo "Starting $PROJECT_NAME"
su -c "$COMMAND" && echo "OK" || echo "failed"; fi } stop() { if [ -f $PIDFILE ] then
echo -n $"Stopping $PROJECT_NAME: " killproc -p $PIDFILE
rm -f $PIDFILE else
echo "$PROJECT_NAME is not running" fi } case "$1" in start) start ;; stop) stop ;; restart)
stop && start ;;
*)
echo $"Usage: $0 {start|stop|restart}" RETVAL=1
esac
Phân quyền cho phép thực thi tệp tin ap-server
$ chmod +x /etc/init.d/api-server
Khởi động API Server
$ service api-server start
Mặc định API Server sẽ chạy và lắng nghe trên cổng mặt định là 5000. Chúng ta có thể truy cập vào API Server tại địa chỉ http://127.0.0.1:5000. Để có thể áp đặt domain cho API Server chúng ta có thể sử dụng Nginx hoặc Apache như một Reserve Proxy cho địa chỉ trên đồng thời áp đặt SSL nhằm tăng tính bảo mật cho hệ thống API.
4.3.4 Đóng gói và cài đặt Agent
Agent là ứng dụng được cài ở máy chủ được giám sát, với nhiệm vụ thu thập và gửi các thông tin về cho API Server. Trong sản phẩm của luận văn, Agent được viết bằng hai ngơn ngữ đó chính là Python đối với Agent sử dụng trên hệ điều hành Linux và C# đối với Agent sử dụng trên Windows.
4.3.4.1 Agent trên hệ điều hành Linux
Agent sử dụng trên hệ điều hành Linux được viết bằng ngơn ngữ Python. Để có thể đóng gói và sử dụng trên các Linux distribution khác nhau ta phải đóng gói thành các dạng .DEB đối với các hệ điều hành Ubuntu, Debian,...và .RPM đối với các hệ điều hành CentOS, Red Hat,... các bước đóng gói cần tuân theo chuẩn đã đề ra mất khá nhiều thời gian. Trong hướng dẫn này, nhóm tác giả sẽ hướng dẫn đóng gói bằng cách sử dụng mợt thư viện mã nguồn mở có tên FPM (Effing Package Management) để giảm thiểu thời gian xử lý và loại bỏ các bước khơng thực sự cần thiết trong q trình đóng gói phần mềm. FPM có thể được tải về tại trang chủ của dự án trên GitHub https://github.com/jordansissel/fpm/wiki hoặc cài đặt bằng dịng lệnh
$ gem install fpm
Tùy theo gói cài đặt cần đóng gói là .RPM hay .DEB chúng ta cần thực hiện đóng gói trên đúng loại hệ điều hành sử dụng gói cài đặt đó.
Đóng gói cài đặt .DEB sử dụng hệ điều hành Ubuntu Server Di chuyển vào thư mục chứa mã nguồn của agent
$ cd /home/ding/code/monitor-agent Sử dụng lệnh fpm để đóng gói .DEB $ fpm -s dir -t deb \ --name udn-agent \ --version 1.0.4 \ -a all \ --provides controlnet.xyz \ --vendor controlnet.xyz \
--maintainer "Nguyen Dinh Phuoc<phuoc@controlnet.xyz>" \ --url http://www.controlnet.xyz \
--directories /etc/controlnet \