如何在 Debian 9.2 上安装 Icinga 2 监控工具如何在 Debian 9.2 上安装 Icinga 2 监控工具如何在 Debian 9.2 上安装 Icinga 2 监控工具如何在 Debian 9.2 上安装 Icinga 2 监控工具
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Debian 9.2 上安装 Icinga 2 监控工具

在本指南中,我们将讨论如何在 Debian 9.2 版本中安装和配置最新版本的 Icinga 2 网络监控工具,以监控所有重要的网络基础设施设备,例如物理或虚拟服务器或虚拟机、路由器、交换机、防火墙设备和其他网络物联网设备。它还可以监控网络协议的状态,例如 HTTP、FTP、SMTP、IMAP 或其他网络服务、主机资源、物理传感器,以及软件、CPU 负载、内存、磁盘空间等以及几乎所有互连通过 ICMP 或 ping 请求访问网络设备。

Icinga 最初是 Nagios 监控系统的一个分支,是一个开源的现代网络监控应用程序,用 PHP 编写并在 Linux 中高度部署在 Apache/Nginx、PHP 和 MySQL/MariaDB 组件下,也称为 LAMP 或 LEMP 堆栈。 Icinga 2 可以配置为通过邮件、短信、聊天或其他类型的有关网络、系统、服务或其他相关网络中断的警报通知系统或网络管理员,还可以生成有关网络停机或性能的图形。

要求

  • Debian 9.2 安装在裸机或虚拟专用服务器上。
  • 配置了静态 IP 地址的服务器网络接口卡之一。
  • 通过控制台直接访问 root 帐户,或通过 SSH 服务或本地或远程帐户的 sudo root 权限远程访问。
  • 一个域名(私有或公共),具体取决于您的部署,并为网络服务配置了正确的 DNS 记录。
  • 在您的场所正确配置的邮件服务,用于发送邮件警报。

初始配置

在开始在您自己的服务器上安装和配置 Icinga 2 网络监控工具之前,首先确保系统满足编译和安装应用程序的所有软件要求。第一步,通过发出以下命令更新您的系统存储库和软件包。

apt update
apt upgrade

在下一步中,执行以下命令以安装一些必要的实用程序,这些实用程序将用于从命令行进一步管理您的系统。

apt install wget bash-completion unzip

接下来,通过执行以下命令为您的系统设置主机名。相应地替换您的主机名变量。

hostnamectl set-hostname icinga

通过发出以下命令验证机器主机名和主机文件。

hostnamectl
cat /etc/hostname
hostname –s

最后,重启 Debian 服务器以应用内核更新并正确更改主机名。

init 6

Icinga 2 是一个网络监控应用程序,可以从 Web 配置,其功能主要基于 PHP 服务器端编程语言。为了执行应用程序的 PHP 文件脚本,必须在系统中安装并运行 Web 服务器,例如 Apache HTTP 服务器和 PHP 处理网关。为了安装 Apache Web 服务器和 PHP 解释器以及 Icinga 正常运行所需的所有必需的 PHP 模块,请在服务器控制台中发出以下命令。

apt install apache2 libapache2-mod-php7.0 php7.0-xml php7.0-opcache php7.0-xml php7.0-mbstring php7.0-json php7.0-curl php7.0-ldap php7.0-cli php7.0-gd php7.0-intl php7.0-readline

安装 Apache 和 PHP 后,通过以 root 权限发出以下命令来测试 Web 服务器是否已启动并正在运行并侦听端口 80 上的网络连接。

netstat –tlpn

如果您的 Debian 系统默认未安装 netstat 网络实用程序,请执行以下命令进行安装。

apt install net-tools

通过检查 netstat 命令输出,您可以看到 Apache Web 服务器正在侦听端口 80 上的传入网络连接。对于相同的任务,您还可以使用 ss 命令,该命令默认情况下自动安装在德比安 9。

ss- tulpn

如果您的系统中启用了防火墙,例如 UFW 防火墙应用程序,您应该通过发出以下命令添加一个新规则以允许 HTTP 流量通过防火墙。

ufw allow WWW

或者

ufw allow 80/tcp

如果您使用 iptables 原始规则来管理 Debian 服务器中的防火墙规则,请添加以下规则以允许防火墙上的端口 80 入站流量,以便访问者可以浏览 Icinga2 网络界面。

apt-get install -y iptables-persistent
iptables -I INPUT -p tcp --destination-port 80 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

接下来,通过发出以下命令启用并应用以下 Apache 模块,这些模块将用于将 HTTP 连接重定向到 HTTPS。

a2enmod rewrite
systemctl restart apache2

最后,通过 HTTP 协议访问您的 Debian 机器 IP 地址或您的域名或服务器 FQDN,测试 Apache Web 服务器默认网页是否可以在您的客户端浏览器中显示。如果您不知道您的机器 IP 地址,请执行 ifconfig 或 ip a 命令来显示您服务器的 IP 地址。 Debian 的默认 Apache 页面将显示在您的浏览器中,如下面的屏幕截图所示。

http://your_domain.tld

为了通过 HTTPS 协议访问 Icinga 2 监控应用程序以保护您的客户端的流量,请发出以下命令以启用 Apache Web 服务器 SSL 模块和 SSL 站点配置文件。此外,启用 Apache 重写模块以强制用户通过 HTTPS 访问界面。

a2enmod ssl rewrite
a2ensite default-ssl.conf

接下来,使用文本编辑器打开 Apache 默认 SSL 站点配置文件,并通过在 DocumentRoot 指令后添加以下代码行来启用 URL 重写规则,如以下示例所示:

nano /etc/apache2/sites-enabled/default-ssl.conf

SSL站点配置文件摘录:

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
Require all granted
</Directory>

此外,对 VirtualHost 行进行以下更改,使其看起来如以下摘录所示:

        <VirtualHost *:443>

关闭 TLS Apache 文件并打开 /etc/apache2/sites-enabled/000-default.conf 文件进行编辑并添加与 SSL 配置文件相同的 URL 重写规则。在 DocumentRoot 语句之后插入代码行,如下例所示。

<Directory /var/www/html>
  Options +FollowSymlinks
  AllowOverride All
  Require all granted
</Directory>

最后,重新启动 Apache 守护程序以应用到目前为止配置的所有规则并通过 HTTP 协议访问您的域。因为您在安装时使用的是 Apache 自动颁发的自签名证书对,所以浏览器中应该会显示一条错误警告,如下面的屏幕截图所示。

systemctl restart apache2

https://yourdomain.tld

接受警告以继续并通过 HTTPS 协议重定向到 Apache 默认网页。以下页面将显示在您的浏览器中。

如果 UFW 防火墙应用程序阻止到 HTTPS 端口的传入网络连接,您应该通过发出以下命令添加一个新规则以允许 HTTPS 流量通过防火墙。

ufw allow 'WWW Full'

或者

ufw allow 443/tcp

如果 iptables 是为在网络级别保护您的 Debian 系统而安装的默认防火墙应用程序,请添加以下规则以允许防火墙中的端口 443 入站流量,以便访问者可以浏览您的域名。

iptables -I INPUT -p tcp --destination-port 443 -j ACCEPT
systemctl iptables-persistent save
systemctl iptables-persistent reload

在下一步中,我们需要对 PHP 默认配置文件做一些进一步的更改,以确保启用以下 PHP 变量并且正确配置 PHP timezone 设置并匹配您的系统地理位置。打开/etc/php/7.0/apache2/php.ini文件进行编辑,确保以下行设置如下。此外,最初,备份 PHP 配置文件。

cp /etc/php/7.0/apache2/php.ini{,.backup}
nano /etc/php/7.0/apache2/php.ini

在 php.ini 配置文件中搜索、编辑和更改以下变量:

php_value max_execution_time 300
php_value memory_limit 128M
php_value max_input_time 300
date.timezone = Europe/London

通过在以下链接 http://php.net/manual/ 中查阅 PHP 文档提供的时区列表,根据您的物理时间替换 time.zone 变量en/timezones.php

如果您想通过适用于 PHP7 的 OPCache 插件来提高网站页面的加载速度,请在 PHP 解释器配置文件的底部附加以下 OPCache 设置,详情如下:

opcache.enable=1 
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

关闭 php.ini 配置文件并检查是否验证了 PHP 配置文件的结尾,以通过发出以下命令检查变量是否已正确添加。

tail /etc/php/7.0/apache2/php.ini

完成上述更改后,通过发出以下命令重新启动 apache 守护进程以应用新更改。

systemctl restart apache2

最后,通过执行以下命令创建一个 PHP 信息文件,并通过从浏览器访问以下 URL 中的 PHP 信息脚本文件来检查 PHP 时区是否已正确配置,如下图所示。向下滚动到 date 设置以检查 php 时区配置。

echo '<?php phpinfo(); ?>'| tee /var/www/html/info.php

https://domain.tld/info.php

Icinga 2 将用户、联系人和其他收集的数据存储在特定的 RDBMS 数据库中,例如 MySQL、SQLite 或 PostgreSQL。在本指南中,我们将使用 MariaDB 数据库(MySQL 数据库的一个分支)作为后端来配置 Icinga。发出以下命令来安装 MariaDB 数据库和访问 mysql 数据库所需的 PHP 模块。

apt install mariadb-server mariadb-client php7.0-mysql

安装 MariaDB 后,通过运行 netstat 或 ss 命令验证守护程序是否正在运行并侦听本地主机端口 3306 上的连接。

netstat –tlpn | grep mysql

然后,通过发出以下命令登录到 MySQL 控制台并保护 MariaDB root 帐户。

mysql -h localhost
use mysql;
update user set plugin='' where user='root';
flush privileges;
exit

现在通过执行脚本 mysql_secure_installation 来保护 MariaDB,该脚本由 Debian 存储库的安装包提供。在运行时,该脚本会询问一系列旨在保护 MariaDB 数据库的问题,例如:更改 MySQL root 密码、删除匿名用户、禁用远程 root 登录和删除测试数据库。通过发出以下命令来执行脚本,并确保您对所有询问的问题键入是,以完全保护 MySQL 守护程序。使用以下脚本输出作为指南。

sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
 SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!
By default, MariaDB 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? [Y/n] 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? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

为了测试 MariaDB 的安全性,请尝试从没有 root 密码的控制台登录数据库。如果没有为 root 帐户提供密码,则应拒绝对数据库的访问。如果提供了密码,则应将登录过程授予 MySQL 控制台,如下面的屏幕截图所示。

mysql -h localhost -u root
mysql -h localhost -u root –p

接下来,登录到 MariaDB 数据库控制台,首先创建一个供 Icinga2 应用程序使用的数据库,以及一个用户,该用户的密码将用于管理该数据库,方法是发出以下命令。相应地替换此数据库名称、用户和密码。

mysql –u root -p
create database icingadb;
grant all privileges on icingadb.* to 'icinga_user'@'localhost' identified by 'icinga_pass';
flush privileges
exit

接下来,通过发出以下命令创建第二个 MySQL 数据库,用于存储 Icinga2 Web 界面用户、组和其他 Web 界面自定义数据。此外,与上述数据库一样,请确保相应地替换数据库名称和凭据,并为数据库用户选择一个强密码。

mysql –u root –p
create database icinga_users;
grant all privileges on icinga_users.* to 'icinga_user'@'localhost' identified by 'icinga_pass';
flush privileges
exit

为了应用到目前为止所做的所有更改,重新启动 MySQL 和 Apache 守护进程并通过发出以下命令验证守护进程是否正在运行。

systemctl restart mysql apache2
systemctl status mysql apache2

安装 Icinga 2

在满足安装我们的 Web 监控应用程序的所有系统要求后,通过发出以下命令继续安装该应用程序以及访问 MySQL 数据库所需的 MySQL 模块。 Icinga 2 具有 Debian 9 存储库提供的预编译二进制包。安装将通过 Debian 9 apt 包管理器执行。

apt install icinga2 icinga2-ido-mysql

从 Debian 9 存储库安装 Icinga2 预编译二进制文件时,屏幕上会出现一系列提示以配置应用程序。在第一个提示符下,系统会询问您是否要配置并启用 Icinga 2 以使用 MySQL 模块。从提示中选择是,然后按 [enter] 键继续,如下图所示。

在下一个提示中,系统将询问您是否要使用 dbconfig-common 选项为 icinga2-ido-mysql 配置数据库。从提示中选择否,然后按 [enter] 键完成 Icinga 2 安装。

安装 Icinga 2 后,启动 Icinga 2 守护程序并通过运行以下命令验证服务状态。

systemctl start icinga2.service
systemctl status icinga2.service

在下一步中,借助以下命令从 Debian 9 安装 Icinga 2 Web 界面和命令行实用程序包。

apt install icingaweb2 icingacli

在开始从 Web 配置 Icinga 2 之前,重新启动 Icinga 2 守护程序以获取所有更改并通过发出以下命令验证应用程序状态。

systemctl restart icinga2.service
systemctl status icinga2.service

接下来,删除 Apache Web 服务器默认安装到 webroot 路径的 index.html 文件,并删除之前创建的 info.php 文件。

rm /var/www/html/index.html
rm /var/www/html/info.php

现在通过执行以下命令为 Icinga 数据库安装 MySQL 模式。 MySQL 数据库模式位于 /usr/share/icinga2-ido-mysql/schema/ 目录中。

mysql -u root icingadb -p < /usr/share/icinga2-ido-mysql/schema/mysql.sql

为了从 Web 执行 Icinga 2 安装,请使用以下命令生成安装令牌。请务必记下此标记,因为我们稍后会在询问时将其写在 Web 界面中。

icingacli setup token create

如果您以后找不到此令牌,可以运行以下命令来显示生成的令牌。

icingacli setup token show

现在通过打开浏览器继续 Icinga2 Web 界面安装过程,并通过 HTTP 协议将服务器的 IP 地址或域名导航到以下 URL。

http://your_domain.tld/icingaweb2/setup

在第一个安装屏幕上,系统会要求您记下之前生成的令牌以开始安装过程,如下面的屏幕截图所示。添加令牌后,点击下一步按钮继续安装过程。

在下一个安装屏幕上,您将被要求为 Icinga 2 网络安装启用一些模块。选择 Doc 和 Monitoring 模块并点击下一步按钮继续,如下图所示。

接下来,Icinga2 Web 安装程序将执行一系列系统和 PHP 模块检查,以检测是否满足所有要求以继续安装过程。向下滚动到已安装并正确配置的所有必需 PHP 模块的列表,然后按下一步按钮移动到下一个安装部分,如下图所示。

在下一个屏幕上,选择数据库作为 Icinga Web 2 的身份验证后端方法,然后点击下一步按钮继续。

在下一步中,添加 Icinga 2 Web MySQL 数据库名称和该数据库的访问凭证。该数据库将用于存储 Icinga 2 Web 界面用户和组。使用之前创建的第二个数据库的数据库信息。添加 icingaweb_db 作为此资源的名称,并将主机、端口和字符集变量保留为默认值。不要选中 Persistent 和 SSL 选项并点击 Validate Configuration 按钮来验证数据库连接,如下图所示。完成后点击下一步按钮移动到下一个安装程序部分。

现在为支持的数据库身份验证设置一个名称,然后点击下一步按钮继续,如下面的屏幕截图所示。

在下一个屏幕上,提供用于管理 Icinga2 Web 界面的管理用户名,并为此帐户选择一个强密码。完成后点击下一步按钮移动到下一个安装屏幕。

使用以下设置配置 Icinga 应用程序和日志记录配置,完成后点击下一步按钮继续。

  • 检查显示堆栈跟踪
  • 存储类型=数据库
  • 记录类型=文件
  • 日志级别=错误
  • 文件路径=/var/log/icingaweb2/icingaweb2.log

在下一个屏幕上,一条消息将通知您 Icinga Web2 已成功配置,并且详细报告将显示到目前为止所做的所有配置。查看报告并点击下一步按钮继续下一个安装部分。

点击 Next 按钮继续 Icinga 2 监控模块配置,如下图所示。

在下一个屏幕上为 Icinga2 后端添加名称,选择 IDO 作为后端类型并点击下一步按钮继续。

返回服务器控制台,打开并编辑 Icinga MySQL IDO 配置文件并添加 Icinga 数据库凭证(第一个数据库信息),如下例所示。

nano /etc/icinga2/features-enabled/ido-mysql.conf

ido-mysql.conf 文件摘录:

library "db_ido_mysql"
 
object IdoMysqlConnection "ido-mysql" {
  user = "icinga_user",
  password = "icinga_pass",
  host = "localhost",
  database = "icingadb"
}

保存文件并通过发出以下命令重新启动 Icinga2 守护程序以应用设置。之后,返回到 Icinga Web 界面并继续安装过程。

systemctl restart icinga2.service

添加 Icinga 数据库信息以设置 IDO 资源环境。使用第一个创建的数据库的数据库信息,如下图所示。完成编辑数据库信息后,点击验证配置按钮以验证 Icinga 监控 IDO 资源并点击下一步按钮移动到下一个安装屏幕。

使用以下设置配置 Icinga Command Transport,然后点击 Next 按钮继续。

  • 传输名称=icinga2
  • 传输类型=本地命令文件
  • 命令文件=/var/run/icinga2/cmd/icinga2.cmd

在下一个屏幕上,保留为监视安全配置的默认变量,如下图所示,然后按下一步按钮继续。

在下一个屏幕上,一条新消息将通知您 Icinga2 监控模块已成功配置。查看显示的报告以检查所有配置是否正确,然后按完成按钮完成安装。

安装过程成功完成后,一条祝贺消息将通知您 Icinga Web 2 已成功安装。点击登录链接以重定向到 Icinga2 登录页面。

使用在安装过程中配置的凭据登录到 Icinga Web 2,您将被定向到 Icinga Web 2 仪表板,您将在其中看到属于您的服务器的当前受监控服务和系统资源的列表。

最后,再次登录到服务器的命令行并执行以下命令,以确保创建 Icinga Web 2 日志。

mkdir -p /var/log/icingaweb2/
chgrp -R icingaweb2 /var/log/icingaweb2/
chmod -R 775 /var/log/icingaweb2/

为了强制访问者通过 HTTPS 协议浏览 Icinga Web 2 界面,在您的 Web 服务器文档根路径中创建一个新的 .htaccess 文件,内容如下。

nano /var/www/html/.htaccess

.htaccess 文件摘录:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
 
RewriteEngine on
Options -Indexes

就这样!您已在 Debian 9.2 上成功安装和配置 Icinga 2 网络监控应用程序。但是,因为 Apache HTTP 服务器使用自签名证书来加密服务器和客户端浏览器之间的流量,所以每次访问您的域时,都会生成一条警告消息并显示在您的浏览器中。在这种情况下,您应该购买由受信任的证书颁发机构颁发的证书或从 Let's Encrypt CA 获取免费证书对。

有关 Icinga 2 的其他自定义配置,请访问以下地址的文档页面:https://www.icinga.com/docs

©2015-2025 艾丽卡 support@alaica.com