Cách cài đặt phần mềm giám sát Icinga 2 trên Ubuntu 22.04 LTS

theanh

Administrator
Nhân viên
Icinga2 là phần mềm giám sát mạng mã nguồn mở miễn phí có thể kiểm tra tính khả dụng của tài nguyên từ mạng và thông báo cho người dùng về sự cố mất điện. Bạn có thể giám sát các dịch vụ mạng (SMTP, POP3, HTTP, NNTP, ping), tài nguyên máy chủ (sử dụng CPU, sử dụng Đĩa) và các thành phần mạng (bộ chuyển mạch, bộ định tuyến, cảm biến nhiệt độ và độ ẩm) bằng Icinga2. Nó có thể được tích hợp với các plugin Nagios.

Trong hướng dẫn sau, bạn sẽ học cách cài đặt Icinga2 trên máy chủ Ubuntu 22.04 và cách kết nối nó với một nút máy khách. Thay vì máy chủ Apache mặc định, chúng ta sẽ sử dụng Nginx để chạy Icinga2 Web.

Điều kiện tiên quyết​


  • Hai máy chạy Ubuntu 22.04. Một trong số chúng sẽ hoạt động như một máy chủ Master và một máy chủ khác sẽ hoạt động như một máy khách để giám sát.

  • Một người dùng không phải root có quyền sudo trên cả hai máy chủ.

  • Một tên miền đủ điều kiện (FQDN) cho máy chủ master, icinga.example.com và nút máy khách, client.example.com.

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo apt update
$ sudo apt upgrade
[*]
Một số gói mà hệ thống của bạn nhu cầu.
Mã:
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Một số gói này có thể đã được cài đặt trên hệ thống của bạn.

Bước 1 - Cấu hình Tường lửa trên Máy chủ chính​

Bước đầu tiên là cấu hình tường lửa. Ubuntu đi kèm với ufw (Uncomplicated Firewall) theo mặc định.

Kiểm tra xem tường lửa có đang chạy không.
Mã:
$ sudo ufw status
Bạn sẽ nhận được kết quả sau.
Mã:
Status: inactive
Cho phép cổng SSH để tường lửa không làm gián đoạn kết nối hiện tại khi bật nó.
Mã:
$ sudo ufw allow OpenSSH
Cho phép cổng 5665 được yêu cầu bởi máy khách Icinga2 để kết nối với máy chủ.
Mã:
$ sudo ufw allow 5665
Cho phép các cổng HTTP và HTTPS như tốt.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Bật Tường lửa
Mã:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Kiểm tra trạng thái của tường lửa một lần nữa.
Mã:
$ sudo ufw status
Bạn sẽ thấy kết quả tương tự.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
5665 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
5665 (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt MySQL​

Ubuntu 22.04 được tích hợp phiên bản MySQL mới nhất. Bạn có thể cài đặt nó bằng một lệnh duy nhất.
Mã:
$ sudo apt install mysql-server
Kiểm tra phiên bản của MySQL.
Mã:
$ mysql --version
mysql Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Bước này cần thiết cho MySQL phiên bản 8.0.28 trở lên. Nhập MySQL Shell.
Mã:
$ sudo mysql
Chạy lệnh sau để đặt mật khẩu cho người dùng root của bạn. Đảm bảo rằng nó có sự kết hợp giữa số, chữ hoa, chữ thường và ký tự đặc biệt.
Mã:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Thoát khỏi shell.
Mã:
mysql> exit
Chạy cài đặt bảo mật MySQL script.
Mã:
$ sudo mysql_secure_installation
Đầu tiên, bạn sẽ được yêu cầu nhập mật khẩu gốc. Nhập mật khẩu. Tiếp theo, bạn sẽ được yêu cầu cài đặt Thành phần Xác thực Mật khẩu. Thành phần này kiểm tra độ mạnh của mật khẩu được sử dụng trong MySQL. Nhấn Y để cài đặt. Tiếp theo, bạn sẽ được yêu cầu đặt mức chính sách xác thực mật khẩu. Chọn 2 vì đây là mức mạnh nhất.
Mã:
Securing the MySQL server deployment.
Enter password for user root:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.
Estimated strength of the password: 100
Tiếp theo, nhập N để từ chối thay đổi mật khẩu gốc của bạn. Ngoài ra, hãy nhập Y để xóa người dùng ẩn danh, không cho phép đăng nhập root từ xa, xóa cơ sở dữ liệu thử nghiệm và tải lại bảng đặc quyền.
Mã:
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database...
Success. - Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!

Bước 3 - Cấu hình MySQL​

Đăng nhập vào shell MySQL. Nhập mật khẩu gốc của bạn khi được nhắc.
Mã:
$ sudo mysql -u root -p
Tạo cơ sở dữ liệu Icinga.
Mã:
mysql> CREATE DATABASE icinga2;
Tạo tài khoản người dùng SQL cho Icinga2. Không thay đổi cơ sở dữ liệu và tên người dùng vì chúng đã được thiết lập theo mặc định. Nếu bạn muốn thay đổi chúng, bạn sẽ cần thực hiện một số bước bổ sung trong khi cài đặt trình điều khiển MySQL ở Bước 5. Nhập mật khẩu và bạn sẽ nhận được lỗi, sau đó được yêu cầu cấu hình lại nơi bạn có thể chỉ định tên cơ sở dữ liệu và người dùng tùy chỉnh của mình.
Mã:
mysql> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng.
Mã:
mysql> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';
Xóa người dùng quyền.
Mã:
mysql> FLUSH PRIVILEGES;
Thoát khỏi shell.
Mã:
mysql> exit

Bước 4 - Cài đặt Icinga2 và các plugin Giám sát trên Máy chủ chính​

Chúng tôi sẽ sử dụng kho lưu trữ chính thức của Icinga2 cho cài đặt. Tải xuống và nhập khóa GPG Icinga2.
Mã:
$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
Chạy các lệnh sau để tạo và thêm thông tin kho lưu trữ Icinga2 vào danh sách nguồn APT.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Cài đặt Icinga2 và các plugin giám sát.
Mã:
$ sudo apt install icinga2 monitoring-plugins -y

Bước 5 - Cài đặt trình điều khiển IDO MySQL trên Máy chủ chính​

Để Icinga2 hoạt động, nó cần có cơ sở dữ liệu. Để làm được điều đó, chúng ta cần cài đặt trình điều khiển MySQL IDO và thiết lập kết nối cơ sở dữ liệu. Chạy lệnh sau để cài đặt trình điều khiển MySQL.
Mã:
$ sudo apt install -y icinga2-ido-mysql
Bạn sẽ được nhắc thiết lập trình điều khiển và tạo cơ sở dữ liệu bằng tiện ích dbconfig-common. Chọn để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22145%22%3E%3C/svg%3E


Tiếp theo, bạn sẽ được yêu cầu nhập mật khẩu MySQL cho cơ sở dữ liệu icinga2. Nhập mật khẩu được cấu hình ở bước 3 để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22642%22%20height=%22256%22%3E%3C/svg%3E


Bạn sẽ được yêu cầu xác nhận lại mật khẩu.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22435%22%20height=%22235%22%3E%3C/svg%3E


Tiếp theo, bạn sẽ được yêu cầu bật Tính năng ido-mysql. Chọn để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22688%22%20height=%22256%22%3E%3C/svg%3E


Bạn có thể kiểm tra thông tin chi tiết về cơ sở dữ liệu trong /etc/icinga2/features-available/ido-mysql.conf tập tin.
Mã:
$ cat /etc/icinga2/features-available/ido-mysql.conf
/** * The db_ido_mysql library implements IDO functionality * for MySQL. */
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" { user = "icinga2", password = "Your_password2", host = "localhost", database = "icinga2"
}
Kích hoạt ido-mysql tính năng.
Mã:
$ sudo icinga2 feature enable ido-mysql
Khởi động lại dịch vụ Icinga2.
Mã:
$ sudo systemctl restart icinga2
Xác minh dịch vụ trạng thái.
Mã:
$ sudo systemctl status icinga2
? icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/icinga2.service.d ??limits.conf Active: active (running) since Mon 2023-05-01 08:02:36 UTC; 1s ago Process: 9823 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS) Main PID: 9828 (icinga2) Status: "Startup finished." Tasks: 10 Memory: 17.6M CPU: 657ms CGroup: /system.slice/icinga2.service ??9828 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??9846 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??9849 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Bước 6 - Cấu hình Icinga2 API​

Để quản lý và cấu hình giám sát Icinga2 thông qua HTTP, bạn cần cấu hình Icinga2 API. Chạy lệnh sau để bật API Icinga2, tạo chứng chỉ TLS cho Icinga2 và cập nhật cấu hình Icinga2.
Mã:
$ sudo icinga2 api setup
Bạn sẽ nhận được kết quả tương tự.
Mã:
information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'.
information/cli: Generating new CSR in '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//icinga.example.com.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.
Now restart your Icinga 2 daemon to finish the installation!
Lệnh trên tạo ra một Tệp /etc/icinga2/conf.d/api-users.conf có người dùng mặc định root có tất cả các quyền đối với API Icinga2. Chúng tôi cần một người dùng mới với các quyền tối thiểu mà Icinga Web yêu cầu.

Mở tệp api-users.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/icinga2/conf.d/api-users.conf
Thêm đoạn mã sau vào cuối tệp.
Mã:
/** api for icingaweb2 */
object ApiUser "icingaweb2" { password = "PassWordApiIcingaWeb2" permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
}
Ghi lại thông tin đăng nhập cần thiết sau này để truy cập trang web. Theo mặc định, máy chủ API Icinga2 lắng nghe trên cổng 5665. Khởi động lại dịch vụ để các thay đổi có hiệu lực.
Mã:
$ sudo systemctl restart icinga2
Bước tiếp theo là cài đặt giao diện Icinga Web. Nó được cấu hình sẵn cho Apache nhưng chúng ta sẽ sử dụng máy chủ Nginx. Do đó, trước tiên, chúng ta cần cài đặt Nginx và chứng chỉ SSL.

Bước 7 - Cài đặt Nginx​

Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.

Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Cập nhật hệ thống kho lưu trữ.
Mã:
$ sudo apt update
Cài đặt Nginx.
Mã:
$ sudo apt install nginx
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.24.0
Khởi động máy chủ Nginx.
Mã:
$ sudo systemctl start nginx

Bước 8 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 đi kèm với Snapd được cài đặt theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn đã được cập nhật.
Mã:
$ sudo snap install core && sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để tạo SSL Chứng chỉ.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d icinga.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/icinga.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
------------------------------------------------------------------------------------------------------------------------------------
Mon 2023-05-01 13:37:57 UTC 3h 45min left Mon 2023-05-01 07:20:42 UTC 2h 31min ago ua-timer.timer ua-timer.service
Mon 2023-05-01 14:39:29 UTC 4h 47min left Sat 2023-02-04 16:04:18 UTC 2 months ago motd-news.timer motd-news.service
Mon 2023-05-01 15:53:00 UTC 6h left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 9 - Cấu hình Nginx và PHP​

Vì Icinga được cấu hình cho Apache, nên gói PHP-FPM không được cài đặt theo mặc định. Bạn cũng sẽ cần mô-đun PHP Imagick nếu muốn xuất đồ thị sang PDF. Chạy lệnh sau để cài đặt PHP-FPM và thư viện PHP Imagick.
Mã:
$ sudo apt install php-fpm php-imagick

Cấu hình PHP-FPM​

Mở tệp /etc/php/8.1/fpm/pool.d/www.conf.
Mã:
$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành nginx. Tìm các dòng user=www-datagroup=www-data trong tệp và thay đổi chúng thành nginx.
Mã:
...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
; will be used.
user = nginx
group = nginx
...
Tìm listen.owner = www-datalisten.group = www-data các dòng trong tệp và thay đổi chúng thành nginx.
Mã:
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
; mode is set to 0660
listen.owner = nginx
listen.group = nginx
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại PHP-FPM dịch vụ.
Mã:
$ sudo systemctl restart php8.1-fpm

Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/icinga.conf cho chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/icinga.conf
Dán mã sau vào đó.
Mã:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name icinga.example.com; access_log /var/log/nginx/icinga.access.log; error_log /var/log/nginx/icinga.error.log; # SSL ssl_certificate /etc/letsencrypt/live/icinga.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/icinga.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/icinga.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; location ~ ^/index\.php(.*)$ { # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Depends On The PHP Version fastcgi_index index.php; # try_files $uri =404; # fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php; fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2; fastcgi_param REMOTE_USER $remote_user; } location ~ ^/(.*)? { alias /usr/share/icingaweb2/public; index index.php; rewrite ^/$ /dashboard; try_files $1 $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { return 404; }
}
# enforce HTTPS
server { listen 80; listen [::]:80; server_name icinga.example.com; return 301 https://$host$request_uri;
}
Lưu ý thư mục gốc được sử dụng trong cấu hình Nginx là /usr/share/icingaweb2/public.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh tệp cấu hình Nginx cú pháp.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Khởi động lại dịch vụ Nginx.
Mã:
$ sudo systemctl restart nginx

Bước 10 - Chuẩn bị thiết lập web​

Trước khi truy cập Icinga Web, chúng ta cần thiết lập nó. Khi sử dụng Icinga Web, bạn được yêu cầu xác thực bằng mã thông báo. Tạo mã thông báo bằng lệnh sau.
Mã:
$ sudo icingacli setup token create
The newly generated setup token is: 3c4d4e155635f512
Ghi lại mã thông báo vì bạn sẽ cần nó sau. Bạn luôn có thể lấy lại nó sau bằng lệnh sau.
Mã:
$ sudo icingacli setup token show
The current setup token is: 3c4d4e155635f512
Bước tiếp theo là tạo cơ sở dữ liệu và người dùng cơ sở dữ liệu. Đăng nhập vào shell MySQL.
Mã:
$ sudo mysql -u root -p
Tạo cơ sở dữ liệu Icinga Web.
Mã:
mysql> CREATE DATABASE icingaweb2;
Tạo tài khoản người dùng SQL cho Icinga Trang web.
Mã:
mysql> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';
Cấp tất cả các quyền trên cơ sở dữ liệu cho người dùng.
Mã:
mysql> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';
Xóa các quyền của người dùng.
Mã:
mysql> FLUSH PRIVILEGES;
Thoát khỏi shell.
Mã:
mysql> exit

Bước 11 - Thiết lập IcingaWeb​

Mở URL https://icinga.example.com trong trình duyệt của bạn và bạn sẽ nhận được màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22436%22%3E%3C/svg%3E


Nhập mã thông báo được tạo ở bước trước và nhấn nút Tiếp theo để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22300%22%3E%3C/svg%3E


Trên màn hình tiếp theo, hãy chọn các mô-đun bạn muốn cài đặt và nhấp vào Tiếp theo để tiếp tục. Mô-đun Giám sát được chọn cho bạn theo mặc định. Ở trang tiếp theo, bạn sẽ thấy các yêu cầu và liệu chúng đã được đáp ứng hay chưa. Đảm bảo tất cả các yêu cầu đều được đánh dấu màu xanh lá cây.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22482%22%3E%3C/svg%3E


Nhấp vào Tiếp theo để chuyển đến trang tiếp theo để chọn loại xác thực.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22174%22%3E%3C/svg%3E


Theo mặc định, loại xác thực được đặt thành Cơ sở dữ liệu. Nhấp vào Tiếp theo để tiếp tục. Bạn sẽ được yêu cầu điền thông tin xác thực cơ sở dữ liệu ở trang tiếp theo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22610%22%3E%3C/svg%3E


Điền thông tin xác thực cơ sở dữ liệu đã tạo ở bước 10. Nhấp vào nút Xác thực cấu hình để xác minh thông tin xác thực. Sau khi xác minh, hãy nhấp vào Tiếp theo để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu đặt tên cho chương trình xác thực.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22174%22%3E%3C/svg%3E


Giữ nguyên giá trị mặc định và nhấp vào Tiếp theo để tiếp tục. Ở trang tiếp theo, bạn sẽ được yêu cầu tạo một tài khoản quản trị viên.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22291%22%3E%3C/svg%3E


Nhập thông tin đăng nhập cho tài khoản quản trị viên mới của bạn và nhấp vào Tiếp theo để tiếp tục. Tiếp theo, bạn sẽ thấy trang Cấu hình ứng dụng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22418%22%3E%3C/svg%3E


Giữ nguyên tất cả các giá trị mặc định cho cấu hình ứng dụng và ghi nhật ký, sau đó nhấp vào Tiếp theo để tiếp tục. Bạn sẽ được yêu cầu xem lại cấu hình ở trang cuối cùng.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22423%22%3E%3C/svg%3E


Bạn có thể quay lại để thay đổi bất kỳ cài đặt nào. Nếu bạn hài lòng, hãy nhấp vào Tiếp theo để tiếp tục.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22120%22%3E%3C/svg%3E


Nhấp vào Tiếp theo để tiếp tục cấu hình mô-đun giám sát. Tiếp theo, bạn sẽ được yêu cầu cung cấp thông tin xác thực cơ sở dữ liệu Icinga.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22581%22%3E%3C/svg%3E


Điền thông tin xác thực cơ sở dữ liệu ở bước 3 và nhấp vào Xác thực cấu hình để xác minh kết nối. Sau khi xác minh, hãy nhấp vào Tiếp theo để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu điền thông tin chi tiết về API.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22382%22%3E%3C/svg%3E


Điền thông tin xác thực API đã tạo ở bước 6 và nhấp vào Xác thực cấu hình để xác minh kết nối. Nhấp vào Tiếp theo để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu chọn các biến tùy chỉnh được bảo vệ để giám sát bảo mật.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22167%22%3E%3C/svg%3E


Giữ nguyên các giá trị mặc định và nhấp vào Tiếp theo để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu xem lại cấu hình Giám sát. Bạn có thể quay lại và thay đổi nếu muốn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22259%22%3E%3C/svg%3E


Nếu bạn hài lòng, hãy nhấp vào Hoàn tất để hoàn tất quá trình cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22217%22%3E%3C/svg%3E


Sau khi hoàn tất thành công, hãy nhấp vào nút Đăng nhập vào Icinga Web 2 để mở trang đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22506%22%3E%3C/svg%3E


Nhập thông tin tài khoản quản trị viên của bạn và nhấp vào Nút Đăng nhập để mở bảng điều khiển Icinga Web.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22506%22%3E%3C/svg%3E


Truy cập Tổng quan >> Trang Dịch vụ để kiểm tra trạng thái của máy chủ chính tương tự như sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22506%22%3E%3C/svg%3E

Bước 12 - Khởi tạo Máy chủ chính​

Bước tiếp theo là khởi tạo máy chủ chính thành nút chính. Nút chính đóng vai trò là bộ điều khiển chính cho ngăn xếp giám sát. Chạy lệnh sau để bắt đầu quá trình khởi tạo.
Mã:
$ sudo icinga2 node wizard
Bạn sẽ được nhắc nếu đó là thiết lập tác nhân. Nhập n để thiết lập nút chính.
Mã:
Welcome to the Icinga 2 Setup Wizard!
We will guide you through all required configuration details.
Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: n
Tiếp theo, bạn sẽ được yêu cầu nhập tên chung hoặc tên miền. Nhấn Enter để chọn giá trị mặc định được hiển thị.
Mã:
Please specify the common name (CN) [icinga.example.com]:
Reconfiguring Icinga...
Checking for existing certificates for common name 'icinga.example.com'...
Certificate '/var/lib/icinga2/certs//icinga.example.com.crt' for CN 'icinga.example.com' already existing. Skipping certificate generation.
Generating master configuration for Icinga 2.
'api' feature already enabled.
Tiếp theo, nhập tên vùng chính và nhấn Enter để tiếp tục. Trong trường hợp của chúng tôi, nó giống với tên miền máy chủ.
Mã:
Master zone name [master]: icinga.example.com
Tiếp theo, bạn sẽ được hỏi xem bạn có muốn thêm bất kỳ vùng toàn cầu bổ sung nào không. Nhấn n để bỏ qua việc thêm và nhấn Enter để tiếp tục.
Mã:
Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: n
Trong bước tiếp theo, hãy để API bind host và port làm mặc định và nhấn Enter để tiếp tục.
Mã:
Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:
Tiếp theo, nhấn Y để vô hiệu hóa cấu hình bên trong /etc/icinga2/conf.d/ thư mục vì chúng ta sẽ sử dụng cấu hình Vùng Icinga2 sau.
Mã:
Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...
Checking if the api-users.conf file exists...
Done.
Now restart your Icinga 2 daemon to finish the installation!
Khởi động lại dịch vụ để áp dụng thay đổi.
Mã:
$ sudo systemctl restart icinga2
Và cuối cùng nhưng không kém phần quan trọng, hãy chạy lệnh sau để tạo phiếu cho máy khách. Sử dụng tên miền của máy khách làm đối số.
Mã:
$ sudo icinga2 pki ticket --cn 'client.example.com'
365cd931d3091537622a95b113b17775893a224f
Ghi lại vé để sử dụng sau.

Bước 13 - Khởi tạo Icinga2 Agent trên Máy chủ máy khách​

Đăng nhập vào máy chủ máy khách và cài đặt Icinga2 cùng các plugin giám sát. Chạy các lệnh sau để thực hiện điều đó.
Mã:
$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ sudo apt update
$ sudo apt install icinga2 monitoring-plugins -y
Kiểm tra xem dịch vụ Icinga đã được bật và đang chạy chưa.
Mã:
$ sudo systemctl status icinga2
? icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/icinga2.service.d ??limits.conf Active: active (running) since Tue 2023-05-02 07:32:07 UTC; 59min ago Main PID: 7602 (icinga2) Status: "Startup finished." Tasks: 8 Memory: 13.9M CPU: 1.018s CGroup: /system.slice/icinga2.service ??7602 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??7620 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log ??7623 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
Khởi động Trình hướng dẫn nút Icinga để khởi tạo tác nhân trên máy chủ khách hàng.
Mã:
$ sudo icinga2 node wizard
Bạn sẽ được nhắc nếu đó là thiết lập tác nhân. Nhập Y để thiết lập tác nhân.
Mã:
Welcome to the Icinga 2 Setup Wizard!
We will guide you through all required configuration details.
Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: Y
Tiếp theo, bạn sẽ được yêu cầu chỉ định tên chung. Để nguyên giá trị mặc định và nhấn Enter để tiếp tục.
Mã:
Starting the Agent/Satellite setup routine...
Please specify the common name (CN) [client.example.com]:
Tiếp theo, chỉ định điểm cuối cha là icinga.example.com và nhập Y để thiết lập kết nối đến nút cha từ máy khách.
Mã:
Please specify the parent endpoint(s) (master or satellite) where this node should connect to:
Master/Satellite Common Name (CN from your master/satellite node): icinga.example.com
Do you want to establish a connection to the parent node from this node? [Y/n]: Y
Tiếp theo, nhập địa chỉ IP của máy chủ chính và giữ nguyên giá trị cổng như mặc định.
Mã:
Please specify the master/satellite connection information:
Master/Satellite endpoint host (IP address or FQDN): 199.247.31.184
Master/Satellite endpoint port [5665]:
Nhập N để từ chối thêm master điểm cuối.
Mã:
Add more master/satellite endpoints? [y/N]: N
Tiếp theo, bạn sẽ thấy thông tin chứng chỉ cho máy chủ chính. Nhấn Y để xác nhận thông tin và tiếp tục.
Mã:
Parent certificate information: Version: 3 Subject: CN = icinga.example.com Issuer: CN = Icinga CA Valid From: May 1 08:28:26 2023 GMT Valid Until: Jun 1 08:28:26 2024 GMT Serial: 53:50:d4:1a:85:c5:70:5b:b1:f6:0e:c3:b6:e4:db:62:df:8d:5e:d9 Signature Algorithm: sha256WithRSAEncryption Subject Alt Names: icinga.example.com Fingerprint: DC BB 90 68 29 E5 C4 B5 74 F5 BC 8C BF A1 8F BF D2 9D A4 E5 A9 9A 43 2C 3B 24 AE A9 CD 19 32 F4
Is this information correct? [y/N]: Y
Tiếp theo, nhập phiếu yêu cầu được tạo ở lần trước bước.
Mã:
Please specify the request ticket generated on your Icinga 2 master (optional). (Hint: # icinga2 pki ticket --cn 'client.example.com'): 365cd931d3091537622a95b113b17775893a224f
Giữ nguyên API bind host và port theo mặc định và nhấn Enter để tiếp tục.
Mã:
Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:
Tiếp theo, nhập Y hai lần để chấp nhận cấu hình và lệnh từ nút chính.
Mã:
Accept config from parent node? [y/N]: Y
Accept commands from parent node? [y/N]: Y
Nhấn Enter để chấp nhận tên vùng cục bộ mặc định là tên miền của máy khách. Nhập tên miền chính làm tên vùng cha để tiếp tục.
Mã:
Reconfiguring Icinga...
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
Local zone name [client.example.com]:
Parent zone name [master]: icinga.example.com
Nhấn N để bỏ qua việc thêm toàn cục bổ sung vùng.
Mã:
Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: N
Nhấn N để bỏ qua việc vô hiệu hóa các cấu hình từ /etc/icinga2/conf.d/ thư mục.
Mã:
Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...
Done.
Now restart your Icinga 2 daemon to finish the installation!
Khởi động lại dịch vụ Icinga để áp dụng các thay đổi cấu hình.
Mã:
$ sudo systemctl restart icinga2

Bước 14 - Tạo cấu hình vùng trên Máy chủ chính​

Đăng nhập lại vào máy chủ và tạo một thư mục mới làm vùng mặc định.
Mã:
$ sudo mkdir -p /etc/icinga2/zones.d/icinga.example.com/
Tiếp theo, tạo một tệp cấu hình trong thư mục vừa tạo và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/icinga2/zones.d/icinga.example.com/client.example.com.conf
Dán mã sau vào đó. Địa chỉ IP trong mã phải khớp với địa chỉ IP công khai của máy khách.
Mã:
// Endpoints
object Endpoint "client.example.com" {
}
// Zones
object Zone "client.example.com" { endpoints = [ "client.example.com" ] parent = "icinga.example.com"
}
// Host Objects
object Host "client.example.com" { check_command = "hostalive" address = "95.179.138.148" vars.client_endpoint = name
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc sau khi hoàn tất.

Tạo và mở tệp dịch vụ để chỉnh sửa.
Mã:
$ sudo nano /etc/icinga2/zones.d/icinga.example.com/services.conf
Dán mã sau vào nó.
Mã:
// Ping apply Service "Ping" { check_command = "ping4" assign where host.address // check executed on master } // System Load apply Service "System Load" { check_command = "load" command_endpoint = host.vars.client_endpoint // Check executed on client01 assign where host.vars.client_endpoint } // SSH Service apply Service "SSH Service" { check_command = "ssh" command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint } // Icinga 2 Service apply Service "Icinga2 Service" { check_command = "icinga" command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint }
Chạy lệnh sau để xác minh cấu hình.
Mã:
$ sudo icinga2 daemon -C
Bạn sẽ nhận được một đầu ra.
Mã:
[2023-05-02 11:21:23 +0000] information/cli: Icinga application loader (version: r2.13.7-1)
[2023-05-02 11:21:23 +0000] information/cli: Loading configuration file(s).
[2023-05-02 11:21:23 +0000] information/ConfigItem: Committing config item(s).
[2023-05-02 11:21:23 +0000] information/ApiListener: My API identity: icinga.example.com
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 IcingaApplication.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 Host.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 FileLogger.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 IdoMysqlConnection.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 CheckerComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 4 Zones.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 2 Endpoints.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 2 ApiUsers.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 ApiListener.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 NotificationComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 244 CheckCommands.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 4 Services.
[2023-05-02 11:21:23 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2023-05-02 11:21:23 +0000] information/cli: Finished validating the configuration file(s).
Khởi động lại dịch vụ Icinga để áp dụng các thay đổi cấu hình.
Mã:
$ sudo systemctl restart icinga2

Bước 15 - Xác minh trên Bảng điều khiển Icinga​

Mở Bảng điều khiển web Icinga2 để xác minh thông tin máy khách. Chọn Tổng quan >> Máy chủ từ menu bên trái và bạn sẽ thấy màn hình sau.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22675%22%3E%3C/svg%3E


Có thể mất một thời gian để trạng thái của máy khách hiển thị là ĐANG LÊN. Nhấp vào Máy khách để xem thêm thông tin chi tiết về máy khách đó. Chọn Tổng quan >> Dịch vụ và bạn sẽ thấy các trạng thái sau về máy khách.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22482%22%3E%3C/svg%3E


Điều này xác nhận rằng máy khách đang gửi số liệu thống kê chính xác đến máy chủ chính Icinga.

Kết luận​

Điều này kết thúc hướng dẫn của chúng tôi về cách cài đặt Phần mềm giám sát Icinga trên máy chủ Ubuntu 22.04 và cấu hình nó để giám sát máy khách chạy cùng Hệ điều hành. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên