Cài đặt và cấu hình Nagios trên Ubuntu 20.04
BÀI VIẾT

Cài đặt và cấu hình Nagios trên Ubuntu 20.04

5.4K
author Nguyễn Ngọc Đang - 2021-10-15 10:08:34 (GMT+7)

Giới thiệu

Nagios là một phần mềm nguồn mở hỗ trợ cho người quản trị mạng trong việc giám sát các Host, Services (DHCP, HTTP, …) và một số tài nguyên hệ thống như dung lượng trên các ổ đĩa, hoạt động của CPU,.. trong hệ thống mạng.

Được phát hành vào năm 1999 bởi Ethan Galstad, Nagios được biết đến với tên NetSaint. Sau đó, Nagios được tinh chỉnh bởi nhiều người đóng góp như một dự án nguồn mở. Nagios Enterprises, một công ty dựa trên công nghệ Nagios Core, cung cấp nhiều sản phẩm, như XI, Log Server, Network Analyzer và Fusion.

Chuẩn bị:

Với bài hướng dẫn này sẽ được tiến hành cài đặt trên 2 VPS OS Ubuntu 20.04 LTS hoặc 2 Server OS Ubuntu 20.04 LTS với IP lần lượt là :

10.124.11.51: nagiosserver

10.124.11.16: nagiosclient

Trong đó VPS có IP 10.124.11.51 sẽ đóng vai trò là Nagios server và IP 10.124.11.16 sẽ đóng vai trò là Nagios client.

Cập nhật hệ thống

Để đảm bảo rằng tất cả các phụ thuộc của Nagios đều được cập nhật, hãy thực thi lệnh bên dưới:

bash (root)
apt-get update && apt-get upgrade

Trong quá trình cập nhật hệ thống chúng ta chờ từ 5 phút đến 15 phút.

Yêu cầu thiết yếu của quá trình cài đặt Nagios

VPS của chúng ta phải được cài đặt Nagios, nếu chưa cài đặt Nagios chúng ta thực hiện các lệnh sau để có thể cài đặt Nagios trên VPS của chúng ta:

Cài đặt apache2

Thực thi lệnh bên dưới để tiến hành cài đặt apache2 cho VPS:

bash (root)
apt install -y apache2

Sau khi cài đặt apache2 thành công thì chúng ta truy cập trình duyệt với dường dẫn: http://IP kết quả sẽ như sau:

Cài đặt MYSQL

Cài đặt MariaDB cho máy chủ LAMP, bằng cách thực thi lệnh bên dưới:

bash (root)
apt install -y mariadb-server mariadb-client

Tiến hành thiết lập MariaDB server bằng cách chạy lệnh bên dưới:

bash (root)
mysql_secure_installation

Sau khi đã cài đặt hoàn tất chúng ta tiến hành login vào MariaDB như sau:

bash (root)
mysql -u root -p

Tại đây sẽ yêu cầu password, chúng ta cần điền thông tin password trong quá trình cài đặt bên trên.

Cài đặt PHP

Tiến hành thực thi lệnh sau để có thể cài đặt PHP lên VPS của chúng ta:

bash (root)
apt install -y php

Vì các ứng dụng web dựa trên một số phần mở rộng PHP, chúng ta cần cài đặt các phần mở rộng phổ biến nhất bằng lệnh dưới đây:

bash (root)
sudo apt -y install php php-{mysql,curl,net-socket,gd,intl,pear,imap,memcache,pspell,tidy,xmlrpc,snmp,mbstring,gmp,json,xml,common,ldap}

Cài đặt Nagios

Bước 1: Tạo User và Group

Tạo user nagios và group nagcmd:

bash (root)
useradd nagios
groupadd nagcmd

Thực hiện thêm người dùng nagios và người dùng Apache2 vào nhóm người dùng nagcmd:

bash (root)
usermod -aG nagcmd nagios && sudo usermod -aG nagcmd www-data

Bước 2: Cài đặt Nagios

Chúng ta tiến hành thực thi lệnh sau để tiến hành cài đặt Nagios:

bash (root)
apt install nagios

Sau đó chúng ta có thể chạy lệnh sau để cài đặt các plugin bổ sung cho Nagios:

bash (root)
apt install nagios-plugins-contrib

Bước 3: Cấu hình apache và nagios

Thực thi lệnh sau để có thể tạo người dùng quản trị Nagios:

bash (root)
htdigest -c /etc/nagios/htdigest.users "Nagios" nagiosadmin

Mở file cấu hình Nagios cho Apache trong trình soạn thảo văn bản ưa thích của chúng ta và thực hiện các thay đổi được liệt kê bên dưới. Vị trí file tại: /etc/nagios/apache2.conf

Sau đó thực hiển điều chỉnh như bên dưới:

/etc/nagios/apache2.conf
 <DirectoryMatch (/usr/share/nagios/htdocs|/usr/lib/cgi-bin/nagios|/etc/nagios/stylesheets)>

# [...]

    #Require ip ::1/128 fc00::/7 fe80::/10 10.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.168.0.0/16
    <Files "cmd.cgi">
        AuthDigestDomain            "Nagios"
        AuthDigestProvider          file
        AuthUserFile                "/etc/nagios/htdigest.users"
        AuthGroupFile               "/etc/group"
        AuthName                    "Nagios"
        AuthType                    Digest
        Require                     valid-user
        Allow from                  127.0.0.1 10.124.11.51
        #Require all                granted
        Require                     valid-user
    </Files>
  </DirectoryMatch>

Thay thế 10.124.11.51 bằng một hoặc nhiều địa chỉ IP mà từ đó chúng ta muốn truy cập vào giao diện Nagios, mỗi địa chỉ được phân tách bằng dấu cách.

Sau đó mở file cấu hình Nagios CGI, có tại /etc/nagios/cgi.cfg và đặt use_authentication thành 1.

Chúng ta tiến hành bật các mô-đun mod_rewrite, mod_cgi, mod_auth_digestmod_authz_groupfile Apache:

bash (root)
a2enmod rewrite
a2enmod cgi
a2enmod auth_digest
a2enmod authz_groupfile

Thực hiện khởi động lại dịch vụ apache để áp dụng các thay đổi mới:

bash (root)
systemctl restart apache2

Bước 4: Truy cập Nagios

Sử dụng trình duyệt web thực hiện kết nối như sau: http://IP/nagios. Nếu chúng ta thực hiện truy cập Nagios từ máy đã cài đặt hãy sử dụng URL: http://localhost/nagios. Khi được nhắc, hãy đăng nhập bằng thông tin đăng nhập mà chúng ta đã thiết lập cho người dùng quản trị viên ở trên (nagiosadmin).

Kết quả truy cập sẽ như hình ảnh trên. Như vậy là hoàn tất quá trình cài đặt Nagios.

Thêm Linux Host vào Monitor

Cấu hình thêm Hosts trên Nagios Client

Chúng ta thực hiện thêm Client Ubuntu là nagiosclient có địa chỉ IP 10.124.11.16 vào máy chủ Nagios server.

Tiến hành cập nhật Ubuntu repository và cài đặt các Plugin Nagios và NRPE Server.

bash (root)
apt update && apt install nagios-nrpe-server monitoring-plugins

Tiếp theo, sử dụng trình soạn thảo văn bản quen thuộc thực hiện chỉnh sửa file cấu hình /etc/nagios/nrpe.cfg. Tại đây chúng ta cần hiến hành thiết lập server_address thành địa chỉ IP của nagiosclient (10.124.11.16) và thiết lập allowed_hosts thành địa chỉ IP của nagiosserver (10.124.11.51)

/etc/nagios/nrpe.cfg
server_address=10.124.11.16
allowed_hosts=127.0.0.1,::1,10.124.11.51

Sau khi đã thiết lập xong cần tiến hành cấu hình tại file /etc/nagios/nrpe_local.cfg. Thực hiện thêm các dòng sau:

/etc/nagios/nrpe_local.cfg
command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_ping]=/usr/lib/nagios/plugins/check_ping -H 10.124.11.16 -w 100.0,20% -c 500.0,60% -p 5
command[check_ssh]=/usr/lib/nagios/plugins/check_ssh -4 10.124.11.16
command[check_http]=/usr/lib/nagios/plugins/check_http -I 10.124.11.16
command[check_apt]=/usr/lib/nagios/plugins/check_apt

Thực hiện khởi động lại nagios-nrpe-server để áp dụng các cấu hình vừa thêm vào:

bash (root)
systemctl restart nagios-nrpe-server

Cấu hình thêm Hosts trên Nagios Server

Sử dụng trình soạn thảo văn bản để chỉnh sửa file /usr/local/nagios/etc/nagios.cfg :

Bỏ comment những dòng sau :

/usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/servers

Tạo một thư mục servers bên trong đường dẫn /usr/local/nagios/etc/ :

bash (root)
mkdir /usr/local/nagios/etc/servers

Thực hiện tạo 1 file mới có tên là nagiosclient.cfg tại /usr/local/nagios/etc/servers/:

bash (root)
touch /usr/local/nagios/etc/servers/nagiosclient.cfg

Sử dụng trình soạn thảo văn bản quen thuộc để tiến hành thêm đoạn cấu hình sau, tiến hành thay hostname và địa chỉ IP của client:

/usr/local/nagios/etc/servers/nagiosclient.cfg
define host {
        use                          linux-server
        host_name                    nagiosclient
        alias                        Ubuntu Host
        address                      10.124.11.16
        register                     1
}

define service {
      host_name                       nagiosclient
      service_description             PING
      check_command                   check_nrpe!check_ping
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       nagiosclient
      service_description             Check Users
      check_command                   check_nrpe!check_users
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       nagiosclient
      service_description             Check SSH
      check_command                   check_nrpe!check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       nagiosclient
      service_description             Check Root / Disk
      check_command                   check_nrpe!check_root
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       nagiosclient
      service_description             Check APT Update
      check_command                   check_nrpe!check_apt
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

define service {
      host_name                       nagiosclient
      service_description             Check HTTP
      check_command                   check_nrpe!check_http
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      check_freshness                 1
      contact_groups                  admins
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

Sau khi đã cấu hình tiến hành khởi động lại dịch vụ nagios:

bash (root)
systemctl restart nagios

Sau đó refesh lại trang quản trị nagios ở trình duyệt và click lại vào mục Hosts chúng ta sẽ thấy có máy nagiosclient vừa được thêm vào.

Kết quả truy cập sẽ như hình ảnh trên. Như vậy là hoàn tất quá trình thêm 1 host vào Nagios để tiến hành monitor.

Cảnh báo nagios với Telegram

Tạo BOT

Sử dụng tài khoản Telegram, sau đó tìm @BotFather.

Thực hiện tạo bot như sau:

Gõ lệnh /newbot

Đặt tên cho bot, ví dụ: nnddemo

Đặt username cho bot (kết thúc username là bot, hoặc _bot), ví dụ: nagios_demo_nnd_bot

Sau khi kết thúc việc tạo username cho bot, thì @BotFather sẽ thông báo việc tạo thành công và gửi token cho việc truy cập HTTP API.

Tìm và add bot vào group cần nhận thông báo, Xác định giá trị chat_id

Sau đó vào đường dẫn URL sau: https://api.telegram.org/bot_token/getUpdates

Với giá trị token mà chúng ta đã có ở trên.

Lưu ý: Cần lưu giá trị chat_id và token để thực hiện các thiết lập bên dưới.

Tải Telegram-notify php script

Download tại: telegram-notify.zip

Giải nén telegram-notify và copy vào thư mục /usr/local/nagios/sbin

Tiến hành phân quyền

bash (root)
chown nagios:nagios -R /usr/local/nagios/sbin/telegram-notify/log/ 
chmod 775 -R /usr/local/nagios/sbin/telegram-notify/log/ 
chown root:root /usr/local/nagios/sbin/telegram-notify/log/.htaccess 

Kiểm tra gửi message bằng command:

bash (root)
php /usr/local/nagios/sbin/telegram-notify/telegram-bot.php "chat_id" "token" 1 "Notify: NOTIFICATIONTYPE 0XzXZ0 Host: HOSTNAME 0XzXZ0 Service: SERVICEDESC 0XzXZ0 Date: SHORTDATETIME 0XzXZ0 Info: SERVICEOUTPUT"

Tiến hành thay chat_idtoken chúng ta dã lấy được ở trên.

Kết quả thực hiện test:

Cấu hình Nagios để sử dụng telegram

Thêm nội dung sau vào file /usr/local/nagios/etc/objects/command.cfg

/usr/local/nagios/etc/objects/command.cfg
# 'notify-service-telegram' command definition
define command{
        command_name    notify-service-telegram
        command_line    /usr/bin/php /usr/local/nagios/sbin/telegram-notify/telegram-bot.php "chat_id" "token" 1 "Notify: $NOTIFICATIONTYPE$ 0XzXZ0 Host: $HOSTNAME$ 0XzXZ0 Service: $SERVICEDESC$ 0XzXZ0 Date: $SHORTDATETIME$ 0XzXZ0 Info: $SERVICEOUTPUT$"
}
# 'notify-host-telegram' command definition 
define command{
        command_name    notify-host-telegram
        command_line    /usr/bin/php /usr/local/nagios/sbin/telegram-notify/telegram-bot.php "chat_id" "token" 1 "Notify: $NOTIFICATIONTYPE$ 0XzXZ0 Host: $HOSTNAME$ 0XzXZ0 Date: $SHORTDATETIME$ 0XzXZ0 Info: $HOSTOUTPUT$"
}

Tiến hành thay chat_idtoken chúng ta dã lấy được ở trên.

Thêm nội dung sau vào tệp /usr/local/nagios/etc/objects/contact.cfg:

/usr/local/nagios/etc/objects/contact.cfg
#Define contact for only Telegram
define contact{
        service_notifications_enabled   1
        host_notifications_enabled      1
        host_notification_commands      notify-host-telegram
        service_notification_commands   notify-service-telegram
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    c,w,r
        host_notification_options       d,u,r
        }

Sau đó tiến hành khởi động lại dịch vụ nagios để áp dụng các cấu hình mới vừa cập nhật:

bash (root)
systemctl restart nagios.service

Truy cập vào trang quản trị nagios ở trình duyệt và click lại vào mục Hosts chúng ta tiến hành chọn Re-schedule the next check of this host

Chúng ta sẽ nhận được thông báo tại telegram như sau:

Vậy là đã hoàn thành quá trình cài đặt và thiết lập Nagios trên VPS OS Ubuntu 20 LTS hoặc Server OS Ubuntu 20 LTS.

Chúc các bạn thành công!


Bạn có làm được theo hướng dẫn này không?

Bài liên quan

Hướng dẫn cài đặt ntopng trên Ubuntu 20.04
Hướng dẫn cài đặt ntopng trên Ubuntu 20.04

Object Storage

Chuẩn S3, không giới hạn băng thông

Object Storage

Thuê Server Riêng

Chi phí thấp, cấu hình cao

Thuê Server Riêng
Thông tin tác giả
Bình luận

Tính năng đang được phát triển

Đang tải bình luận