本页目录
- 准备工作
- 第 1 步 - 配置防火墙
- 第 2 步 - 安装 Apache 和 PHP
- 第 3 步 - 安装 Nagios 安装依赖项 下载 Nagios 编译 Nagios 创建 Nagios 用户和组 安装 Nagios 二进制文件 创建外部命令目录 安装 Nagios 配置文件 安装 Apache 配置文件 创建 Systemd 服务文件 启用 HTTP 身份验证
- 第 4 步 - 安装 Nagios 插件
- 第 5 步 - 安装 check_nrpe 插件
- 第 6 步 - 启动 Nagios Nagios Web 界面
- 第 7 步 - 监控主机 安装 Nagios 插件 安装 NRPE 检查监控项
- 第 8 步 - 安装 Nginx
- 第 9 步 - 安装并配置 SSL
- 第 10 步 - 配置 Nginx 配置 SELinux
- 结语
- 安装依赖项
- 下载 Nagios
- 编译 Nagios
- 创建 Nagios 用户和组
- 安装 Nagios 二进制文件
- 创建外部命令目录
- 安装 Nagios 配置文件
- 安装 Apache 配置文件
- 创建 Systemd 服务文件
- 启用 HTTP 身份验证
- Nagios Web 界面
- 安装 Nagios 插件
- 安装 NRPE
- 检查监控项
- 配置 SELinux
Nagios 是一款流行且最强大的开源监控系统之一。它监控您的 IT 基础设施,确保网络、服务器、应用程序和进程平稳运行。借助监控系统,您可以在问题发生前及时发现并快速修复,从而节省成本与停机时间。
本教程将教您如何在 Rocky Linux 9 服务器上安装并配置 Nagios。我们还会进行一些基础配置,并安装 Nagios Remote Plugin Executor(NPRE),以便监控远程主机。
准备工作
- 一台运行 Rocky Linux 9 的服务器。
- 一个拥有 root 权限的非 sudo 用户。
- 已禁用 SELinux。在本教程中,即使您保持启用 SELinux,它也能正常工作而不会出现任何问题。但根据您所使用的 Nagios 监控项,您要么需要配置 SELinux,要么最好保持禁用状态。
- 另一台您想要监控、运行 Rocky Linux 9 的服务器。
- 确保所有内容均已更新。$ sudo dnf update
一台运行 Rocky Linux 9 的服务器。
一个拥有 root 权限的非 sudo 用户。
已禁用 SELinux。在本教程中,即使您保持启用 SELinux,它也能正常工作而不会出现任何问题。但根据您所使用的 Nagios 监控项,您要么需要配置 SELinux,要么最好保持禁用状态。
另一台您想要监控、运行 Rocky Linux 9 的服务器。
确保所有内容均已更新。
$ sudo dnf update
第 1 步 - 配置防火墙
第一步是配置防火墙。Rocky Linux 服务器自带 Firewalld 防火墙。
检查防火墙是否正在运行。
$ sudo firewall-cmd --state
您应该会得到如下输出。
running
检查当前允许的服务/端口。
$ sudo firewall-cmd --permanent --list-services
它应显示如下输出。
dhcpv6-client mdns ssh
允许 HTTP 和 HTTPS 端口。
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
重新检查防火墙状态。
$ sudo firewall-cmd --permanent --list-services
您应该会看到类似的输出。
dhcpv6-client http https mdns ssh
重新加载防火墙。
$ sudo firewall-cmd --reload
第 2 步 - 安装 Apache 和 PHP
要运行 Nagios,您需要安装 Apache 以及 PHP。
安装并启用 Apache 服务。
$ sudo dnf install httpd
$ sudo systemctl enable httpd
要安装 PHP,我们将使用 Remi 仓库。安装 Remi 仓库并启用 PHP 8.1。
$ sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm
$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.1 -y
安装 PHP 以及几个常用的 PHP 模块。
$ sudo dnf install -y php php-gd php-curl
验证 PHP 安装。
$ php --version
PHP 8.1.16 (cli) (built: Feb 14 2023 18:59:41) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies
启用 PHP 并启动该服务。
$ sudo systemctl enable --now php-fpm
重启 Apache 服务以使更改生效。
$ sudo systemctl restart httpd
您可以通过在 Apache 安装程序创建的 /var/www/html 目录中创建一个 info.php 文件来检查 Apache 和 PHP 的安装情况。
$ sudo nano /var/www/html/info.php
在编辑器中粘贴以下代码。
<?php phpinfo();
按下 Ctrl + X 保存文件,并在提示时输入 Y。
在浏览器中打开 URL http://

第 3 步 - 安装 Nagios
本教程的大部分步骤都需要您在您的主服务器上进行安装和操作。
安装依赖项
本教程需要基于源代码编译 Nagios 及其插件。因此,您首先需要安装一些开发库。我们还需要 EPEL 仓库,但它在上一步中已随 Remi 仓库自动安装,因此这里可以跳过。
$ sudo dnf install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel unzip wget gettext autoconf net-snmp-utils postfix automake perl-Net-SNMP
下载 Nagios
从 Nagios 的 GitHub 发布页面下载最新版本。在本教程撰写时,4.4.10 是最新可用版本。如果您想使用其他版本,请修改命令。
$ cd ~
$ sudo wget -O nagios.tar.gz https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.10/nagios-4.4.10.tar.gz
解压 tar 文件。
$ sudo tar zxf nagios.tar.gz
将解压后的目录移动到 /usr/src 目录。
sudo mv nagios-4.4.10 /usr/src/nagios
切换到 /usr/src/nagios 目录。
$ cd /usr/src/nagios
编译 Nagios
下一步是从源代码文件编译 Nagios。运行 configure 脚本进行检查,以确保所有依赖项都已就绪。
$ sudo ./configure
脚本成功完成后,您应该会看到类似的输出。
*** Configuration summary for nagios 4.4.10 2023-01-17 ***:
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Install ${includedir}: /usr/local/nagios/include/nagios
Lock file: /run/nagios.lock
Check result directory: /usr/local/nagios/var/spool/checkresults
Init directory: /lib/systemd/system
Apache conf.d directory: /etc/httpd/conf.d
Mail program: /usr/sbin/sendmail
Host OS: linux-gnu
IOBroker Method: epoll
Web Interface Options:
------------------------
HTML URL: http://localhost/nagios/
CGI URL: http://localhost/nagios/cgi-bin/
Traceroute (used by WAP):
Review the options above for accuracy. If they look okay,
type 'make all' to compile the main program and CGIs.
开始编译。
$ sudo make all
创建 Nagios 用户和组
创建一个新用户和组,用于运行 Nagios 进程。
$ sudo make install-groups-users
您应该会看到如下输出。
groupadd -r nagios
useradd -g nagios nagios
将 apache 用户添加到 nagios 组。
$ sudo usermod -a -G nagios apache
安装 Nagios 二进制文件
运行以下命令以安装 Nagios 二进制文件、CGI 和 HTML 文件。
$ sudo make install
创建外部命令目录
Nagios 可以处理来自外部应用程序的命令,为此它需要设置一个目录。
$ sudo make install-commandmode
/bin/install -c -m 775 -o nagios -g nagios -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw
*** External command directory configured ***
安装 Nagios 配置文件
安装示例配置文件。
$ sudo make install-config
安装 Apache 配置文件
运行以下命令以安装 Apache 配置文件。
$ sudo make install-webconf
重启 Web 服务器以激活配置。
$ sudo systemctl restart httpd
创建 Systemd 服务文件
运行以下命令以安装 systemd unit 文件。
$ sudo make install-daemoninit
启用 HTTP 身份验证
您可以通过 HTTP 身份验证锁定 Nagios Web 界面。运行以下命令,使用 htpasswd 创建用户。系统会提示您输入密码。
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
该用户的默认名称是 nagiosadmin。您可以使用其他用户名,方法是将 /usr/local/nagios/etc/cgi.cfg 文件中所有 nagiosadmin 的实例替换为首选用户名。或者,您可以使用逗号(如下所示)添加用户名。
authorized_for_system_information=nagiosadmin, username1
authorized_for_configuration_information=nagiosadmin, username1
authorized_for_system_commands=nagiosadmin, username1
authorized_for_all_services=nagiosadmin, username1
authorized_for_all_hosts=nagiosadmin, username1
authorized_for_all_service_commands=nagiosadmin, username1
authorized_for_all_host_commands=nagiosadmin, username1
您可以通过在文件中移除该行前面的井号(#)来启用以下配置,从而添加具有只读访问权限的用户。然后,使用用户名运行 htpasswd。
authorized_for_read_only=username2
重启服务器以使配置生效。
$ sudo systemctl restart httpd
第 4 步 - 安装 Nagios 插件
安装 Nagios 插件所需的先决条件。
$ sudo dnf install epel-release
$ sudo dnf install -y gcc glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils postgresql-devel openldap-devel bind-utils samba-client fping openssh-clients lm_sensors perl-Net-SNMP
从 Nagios 插件的 GitHub 页面下载最新版本。在本教程撰写时,2.4.3 是最新可用版本。如果您想使用其他版本,请修改命令。
$ cd ~
$ sudo wget -O nagios-plugins.tar.gz https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.4.3/nagios-plugins-2.4.3.tar.gz
解压 tar 文件。
$ sudo tar zxf nagios-plugins.tar.gz
将解压后的目录移动到 /usr/src 目录。
$ sudo mv nagios-plugins-2.4.3 /usr/src/nagios-plugins
切换回 /usr/src/nagios-plugins 目录。
$ cd /usr/src/nagios-plugins
运行以下命令以编译并安装插件。
$ sudo ./configure
$ sudo make
$ sudo make install
第 5 步 - 安装 check_nrpe 插件
从 NRPE 的 GitHub 发布页面下载最新版本。在撰写本教程时,最新可用版本是 4.1.0。如果您想使用其他版本,请修改以下命令。
$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
解压归档文件。
$ tar zxf nrpe-*.tar.gz
将解压后的目录移动到 /usr/src 目录。
$ sudo mv nrpe-4.1.0 /usr/src/nrpe
切换到 /usr/src/nrpe 目录。
$ cd /usr/src/nrpe
配置并安装该插件。
$ sudo ./configure
$ sudo make check_nrpe
$ sudo make install-plugin
这会将 check_nrpe 插件放置到 /usr/local/nagios/libexec/ 目录中。
第 6 步 - 启动 Nagios
安装好 Nagios 和插件后,现在可以启动 Nagios 服务了。
$ sudo systemctl start nagios
检查服务状态,确认其是否正常运行。
$ sudo systemctl status nagios
Nagios Web 界面
在浏览器中打开 URL http://
输入您在 HTTP 身份验证过程中创建的凭据,您应该会看到如下屏幕。

第 7 步 - 监控主机
要监控某台主机,您需要在该主机上安装 NRPE 守护进程和 Nagios 插件。我们将从 Nagios 服务器监控一台 Rocky Linux 9 服务器。
登录到您的主机。
$ ssh user@monitored_server_ip
安装 Nagios 插件
通过重复之前的第 4 步来安装 Nagios 插件。
安装 NRPE
安装 NRPE 守护进程所需的先决条件。
$ sudo dnf install -y gcc glibc glibc-common openssl openssl-devel perl wget
下载 NRPE。
$ cd ~
$ wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.1.0/nrpe-4.1.0.tar.gz
解压归档文件。
$ tar zxf nrpe-*.tar.gz
将解压后的目录移动到 /usr/src 目录。
$ sudo mv nrpe-4.1.0 /usr/src/nrpe
切换到 NRPE 目录。
$ cd /usr/src/nrpe
配置并安装 NRPE。
$ sudo ./configure --enable-command-args
$ sudo make all
创建用户和组。
$ sudo make install-groups-users
安装 NRPE 二进制文件、NRPE 守护进程以及 check_npre 插件。
$ sudo make install
安装配置文件。
$ sudo make install-config
更新 services 文件。/etc/services 文件用于将服务名称映射到端口号。
$ sudo sh -c "echo >> /etc/services"
$ sudo sh -c "sudo echo '# Nagios services' >> /etc/services"
$ sudo sh -c "sudo echo 'nrpe 5666/tcp' >> /etc/services"
安装 NPRE 服务守护进程。
$ sudo make install-init
$ sudo systemctl enable nrpe
您需要更新位于 /usr/local/nagios/etc/nrpe.cfg 的 NPRE 配置文件。
打开该文件进行编辑。
$ sudo nano /usr/local/nagios/etc/nrpe.cfg
默认情况下,NPRE 仅监听来自本地主机(127.0.0.1)的请求。您需要将 Nagios 服务器的 IP 地址添加到该文件中。
allowed_hosts=127.0.0.1,10.25.5.2
以下选项决定是否允许 NPRE 守护进程让客户端指定命令参数。将该值设为 1 以启用此选项,这可启用高级 NPRE 配置。
dont_blame_nrpe=1
接下来,向下滚动时您会看到一组带有定义的 NRPE 命令列表。它们全部被注释掉了。您需要取消注释,以便 Nagios 可以使用它们。
每个命令都可以传入参数。其中一些命令在前面硬编码了参数,而另一些可以接受来自用户的参数。每个命令都可以具有以下通知选项。
- W 代表 Warning(警告)服务状态
- C 代表 Critical(严重)服务状态
- R 代表在服务恢复时通知(OK 状态)
因此,您可以指定命令能够在何种级别发送何种类型的通知。由于超出了本教程的范围,我们不会深入探讨每个命令的详细说明和功能。
# The following examples use hardcoded command arguments...
# This is by far the most secure method of using NRPE
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -r -w .15,.10,.05 -c .30,.25,.20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
# The following examples allow user-supplied arguments and can
# only be used if the NRPE daemon was compiled with support for
# command arguments *AND* the dont_blame_nrpe directive in this
# config file is set to '1'. This poses a potential security risk, so
# make sure you read the SECURITY file before doing this.
### MISC SYSTEM METRICS ###
command[check_users]=/usr/local/nagios/libexec/check_users $ARG1$
command[check_load]=/usr/local/nagios/libexec/check_load $ARG1$
command[check_disk]=/usr/local/nagios/libexec/check_disk $ARG1$
command[check_swap]=/usr/local/nagios/libexec/check_swap $ARG1$
command[check_cpu_stats]=/usr/local/nagios/libexec/check_cpu_stats.sh $ARG1$
command[check_mem]=/usr/local/nagios/libexec/custom_check_mem -n $ARG1$
### GENERIC SERVICES ###
command[check_init_service]=sudo /usr/local/nagios/libexec/check_init_service $ARG1$
command[check_services]=/usr/local/nagios/libexec/check_services -p $ARG1$
### SYSTEM UPDATES ###
command[check_yum]=/usr/local/nagios/libexec/check_yum
#command[check_apt]=/usr/local/nagios/libexec/check_apt
### PROCESSES ###
command[check_all_procs]=/usr/local/nagios/libexec/custom_check_procs
command[check_procs]=/usr/local/nagios/libexec/check_procs $ARG1$
### OPEN FILES ###
command[check_open_files]=/usr/local/nagios/libexec/check_open_files.pl $ARG1$
### NETWORK CONNECTIONS ###
command[check_netstat]=/usr/local/nagios/libexec/check_netstat.pl -p $ARG1$ $ARG2$
通过移除这些命令前面的 # 符号来取消注释。您可以根据需要取消注释任意数量的命令。
添加以下命令以检查根分区磁盘空间。
command[check_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
完成后,按下 Ctrl + X 保存文件,并在提示时输入 Y。
允许 NPRE 插件使用的端口 5666。
$ sudo firewall-cmd --permanent --add-port=5666/tcp
重新加载防火墙。
$ sudo firewall-cmd --reload
启动 NPRE。
$ sudo systemctl start nrpe
除非另有说明,从此处开始的所有命令都将在主 Nagios 服务器上运行。
通过在主 Nagios 服务器上运行以下命令来检查 NRPE 是否正常工作。
$ /usr/local/nagios/libexec/check_nrpe -H monitored_server_ip
您应该会看到如下输出。
NRPE v4.1.0
要监控这些主机,您需要为每台想要监控的主机创建配置文件。随后,这些主机就可以在 Nagios Web 界面中访问了。
创建用于存储配置文件的目录,并赋予适当的权限。
$ sudo mkdir /usr/local/nagios/etc/servers
$ sudo chown -R nagios:nagios /usr/local/nagios/etc/servers
$ sudo chmod g+w /usr/local/nagios/etc/servers
打开 Nagios 配置文件 /usr/local/nagios/etc/nagios.cfg 进行编辑。
$ sudo nano /usr/local/nagios/etc/nagios.cfg
找到下面的内容,并去掉前面的 # 号取消注释。
cfg_dir=/usr/local/nagios/etc/servers
按下 Ctrl + X 保存文件,并在提示时输入 Y。
下一步是将 check_nrpe 命令添加到 /usr/local/nagios/etc/objects/commands.cfg 文件中,以便用它来监控主机。
打开文件 /usr/local/nagios/etc/objects/commands.cfg 进行编辑。
$ sudo nano /usr/local/nagios/etc/objects/commands.cfg
在文件末尾粘贴以下代码。
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ $ARG2$
}
按下 Ctrl + X 保存文件,并在提示时输入 Y。
在 /usr/local/nagios/etc/servers/ 目录中为远程主机创建一个新的配置文件。
$ sudo nano /usr/local/nagios/etc/servers/yourhost.cfg
添加以下代码,将 host_name 的值替换为您的远程主机名,将 alias 的值替换为您的 host 描述,将 address 的值替换为您的远程主机 IP 地址。
define host {
use linux-server
host_name monitored_server_host_name
alias My client server
address monitored_server_private_ip
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
通过此配置,Nagios 会在主机上线或下线时通知您。您需要添加更多服务以监控其他项目。
添加以下代码块以检查主机的连接统计信息。
define service {
use generic-service
host_name monitored_server_host_name
service_description PING
check_command check_ping!200.0,20%!400.0,90%
}
添加以下代码块以监控服务器的平均负载。
define service {
use generic-service
host_name monitored_server_host_name
service_description Load average
check_command check_nrpe!check_load!-a '-w 0.7,0.6,0.5 -c 0.9,0.8,0.7'
}
use generic-service 指令告诉 Nagios 从 Nagios 预定义的名为 generic-service 的模板继承。
接下来,添加一个代码块以监控磁盘使用情况。请根据相应的磁盘标签修改命令。
define service {
use generic-service
host_name monitored_server_host_name
service_description /dev/vda1 free space
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /dev/vda1'
}
使用以下代码块监控 SSH。以下代码块会检查 SSH 服务器,如果服务器在 5 秒内未响应则发出告警。
define service {
use generic-service
host_name monitored_server_host_name
service_description SSH Version Check
check_command check_ssh!-t 5
}
让我们检查正在运行的总进程数。
define service{
use generic-service
host_name monitored_server_host_name
service_description Total Processes
check_command check_nrpe!check_total_procs
}
检查当前登录的用户。
define service{
use generic-service
host_name monitored_server_host_name
service_description Current Users
check_command check_nrpe!check_users!-a '-w 5 -c 10'
}
检查 SWAP 磁盘使用情况。
define service{
use generic-service
host_name monitored_server_host_name
service_description SWAP Usage
check_command check_nrpe!check_swap!-a '-w 40% -c 20%'
}
检查根分区及其磁盘使用情况。
define service{
use generic-service
host_name nagiosclient
service_description Root / Partition
check_command check_nrpe!check_disk!-a '-w 20% -c 10% -p /'
}
检查是否已安装 HTTP 服务器。
define service {
use generic-service
host_name nagiosclient
service_description HTTP
check_command check_http
}
按下 Ctrl + X 保存文件,并在提示时输入 Y。
重启 Nagios。
$ sudo systemctl restart nagios
检查监控项
打开您的 Nagios 仪表板,并从左侧边栏点击 Hosts 选项。您应该会在页面上看到新配置的主机以及 localhost。

点击新配置的主机(nagiosclient),如果一切配置正确,您应该会看到它的状态。状态出现可能需要一分钟左右的时间。

要查看我们配置的服务或监控项,请点击 View Status Detail For This Host 选项,您应该会看到如下页面。

这能让您清楚地了解主机的工作状态。
第 8 步 - 安装 Nginx
您可以直接通过服务器 IP 运行 Nagios,也可以将其托管在您的域名上。Nagios 已附带 Apache 配置文件,但我们将使用 Nginx 来运行它。我们将使用 Nginx 作为 Apache Web 服务器前端的反向代理。
Apache 已经在端口 80 上运行它。因此,我们需要先更改这一点。然后,我们就可以将 Nginx 作为代理运行。
打开文件 /etc/httpd/conf/httpd.conf 进行编辑。
$ sudo nano /etc/httpd/conf/httpd.conf
将 Listen 80 这一行改为 Listen 8080。按下 Ctrl + X 保存文件,并在提示时输入 Y。由于我们将使用域名访问 Nagios,因此无需为公开访问开放端口 8080。
重启 Apache 服务器。
$ sudo systemctl restart httpd
接下来,安装 Nginx。
Rocky Linux 9 自带较旧版本的 Nginx。您需要下载官方 Nginx 仓库以安装最新版本。
创建并打开 /etc/yum.repos.d/nginx.repo 文件,以创建官方 Nginx 仓库。
$ sudo nano /etc/yum.repos.d/nginx.repo
在其中粘贴以下代码。
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
按下 Ctrl + X 保存文件,并在提示时输入 Y。
安装 Nginx 服务器。
$ sudo dnf install nginx
验证安装。
$ nginx -v
nginx version: nginx/1.22.1
启用并启动 Nginx 服务器。
$ sudo systemctl enable nginx --now
第 9 步 - 安装并配置 SSL
在配置 Nginx 之前,我们将为打算与 Nagios 一起使用的域名设置并配置 SSL 证书。在本例中,我们将使用 http://nagios.example.com。
为此我们将使用 Snapd 软件包安装器。由于 Rocky Linux 不自带它,请安装 Snapd 安装器。它需要 EPEL 仓库才能工作,而我们已经在前面安装过了,因此可以跳过。
安装 Snapd。
$ sudo dnf install -y snapd
启用并启动 Snap 服务。
$ sudo systemctl enable snapd --now
安装 Snap core 软件包,并确保您的 Snapd 版本是最新的。
$ sudo snap install core && sudo snap refresh core
创建 Snapd 工作所需的链接。
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
执行以下命令以安装 Certbot。
$ sudo snap install --classic certbot
使用以下命令创建指向 /usr/bin 目录的符号链接,以确保可以运行 Certbot 命令。
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
验证安装。
$ certbot --version
certbot 2.3.0
运行以下命令以生成 SSL 证书。
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m
[email protected]
-d nagios.example.com
上述命令会将证书下载到您服务器上的 /etc/letsencrypt/live/nagios.example.com 目录。
生成 Diffie-Hellman 组证书。
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
对该过程进行一次试运行,以检查 SSL 续期是否正常工作。
$ sudo certbot renew --dry-run
如果您没有看到错误,说明一切就绪。您的证书将自动续期。
第 10 步 - 配置 Nginx
在配置 Nginx 之前,我们还需要做另一处修改。默认情况下,Apache 通过 http://
首先,打开 /usr/local/nagios/etc/cgi.cfg 文件进行编辑。
$ sudo nano /usr/local/nagios/etc/cgi.cfg
将 url_html_path=/nagios 改为 url_html_path=/ 。
按下 Ctrl + X 保存文件,并在提示时输入 Y。
接下来,打开 /etc/httpd/conf.d/nagios.conf 进行编辑。
$ sudo nano /etc/httpd/conf.d/nagios.conf
将 ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" 改为 ScriptAlias /cgi-bin "/usr/local/nagios/sbin" 。
通过将 Alias /nagios "/usr/local/nagios/share" 这一行注释掉,将其改为如下形式。
#Alias /nagios "/usr/local/nagios/share"
在其下方添加以下行。
DocumentRoot /usr/local/nagios/share
在文件顶部添加以下行。
<VirtualHost *:8080>
在文件底部添加以下行。
</VirtualHost>
完成后,按下 Ctrl + X 保存文件,并在提示时输入 Y。
最后,打开文件 /usr/local/nagios/share/config.inc.php 进行编辑。
$ sudo nano /usr/local/nagios/share/config.inc.php
将 $cfg['cgi_base_url']='/nagios/cgi-bin'; 改为 $cfg['cgi_base_url']='/cgi-bin'; 。
按下 Ctrl + X 保存文件,并在提示时输入 Y。
重启 Apache 和 Nagios。
$ sudo systemctl restart httpd
$ sudo systemctl restart nagios
要确认一切正常工作,请在浏览器中打开 URL http://
一旦一切正常,我们就可以继续为 Nginx 创建配置文件。
在 /etc/nginx/conf.d 目录中为 Nagios 创建一个配置文件。
$ sudo nano /etc/nginx/conf.d/nagios.conf
在其中粘贴以下代码。
server {
listen 80; listen [::]:80;
server_name nagios.example.com;
return 301 https://$host$request_uri;
}
server {
server_name nagios.example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
access_log /var/log/nginx/nagios.access.log;
error_log /var/log/nginx/nagios.error.log;
ssl_certificate /etc/letsencrypt/live/nagios.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nagios.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/nagios.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
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_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
完成后,按下 Ctrl + X 保存文件,并在提示时输入 Y。
验证配置文件。
$ sudo nginx -t
如果您遇到以下错误,您需要编辑 /etc/nginx/nginx.conf 文件,以添加/调整变量 server_names_hash_bucket_size 的大小。
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
打开文件 /etc/nginx/nginx.conf 进行编辑。
$ sudo nano /etc/nginx/nginx.conf
在前面添加以下行
server_names_hash_bucket_size 64;
完成后,按下 Ctrl + X 保存文件,并在提示时输入 Y。再次验证 Nginx。
如果没有问题,则重启 Nginx 服务器。
$ sudo systemctl restart nginx
配置 SELinux
如果您保持启用了 SELinux,请运行以下命令以允许 Nginx 连接网络。
$ sudo setsebool -P httpd_can_network_connect on
在浏览器中打开域名 https://nagios.example.com,您应该会看到 Nagios 主页。
结语
您已在 Rocky Linux 9 服务器上安装并配置了 Nagios,以监控负载、磁盘/SWAP 使用情况、用户、总进程数、HTTP 和 SSH 等多项服务。本教程到此结束。要了解更多信息,您应查阅官方 Nagios 文档,其中详细介绍了监控和各种命令。如果您有任何疑问,请在下方评论区留言。