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

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

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

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

要求

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

初始配置

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

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是一个网络监控应用程序,可以从网络进行配置,其功能主要基于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之后,测试Web服务器是否已启动并正在运行,并通过以root权限发出以下命令来监听端口80上的网络连接。

netstat –tlpn

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

apt install net-tools

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

ss- tulpn

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

ufw allow WWW

要么

ufw allow 80/tcp

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

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

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

a2enmod rewrite
systemctl restart apache2

最后,通过HTTP协议访问您的Debian计算机IP地址或您的域名或服务器FQDN,测试Apache Web服务器默认网页是否可以显示在客户端的浏览器中。 如果您不知道您的机器IP地址,请执行ifconfigip命令以显示您的服务器的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 时区设置已正确配置,并与您的系统地理位置相匹配。 打开/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

根据您的实际时间,将time.zone变量替换为以下链接http://php.net/manual/en/timezones.php查阅 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时区是否已正确配置,如下图所示。 向下滚动到日期设置来检查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之后,通过运行netstatss命令来验证守护进程是否正在运行,并监听本地主机端口3306上的连接。

netstat –tlpn | grep mysql

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

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

现在我们将通过执行由Debian存储库中安装包提供的脚本mysql_secure_installation来保护MariaDB。 在运行时,脚本会询问一系列旨在保护MariaDB数据库的问题,例如:更改MySQL root密码,删除匿名用户,禁用远程root登录和删除测试数据库。 通过发出以下命令来执行脚本,并确保您为所有问题输入yes以完全保护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服务器安装的默认index.html文件移除到webroot路径,并删除之前创建的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

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

HTTP://your_domain.tld/icingaweb2/setup

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

在下一个安装屏幕上,您将被要求启用一些用于Icinga 2 Web安装的模块。 选择文件和监视模块,然后点击下一步按钮继续,如下图所示。

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

在下一个屏幕上,为Icinga Web 2选择Database as authentication backend method,然后点击Next按钮继续。

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

现在设置一个数据库认证支持的名称,并点击Next按钮继续,如下图所示。

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

使用以下设置配置Icinga应用程序并记录配置,完成后点击Next按钮继续。

  • 选中Show Stacktraces
  • 存储类型=数据库
  • 记录类型=文件
  • 记录级别=错误
  • 文件路径= /var/log/icingaweb2/icingaweb2.log

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

点击下一步按钮,使用Icinga 2监视模块配置向前移动,如下图所示。

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

返回到服务器控制台,打开并编辑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网页界面并继续安装过程。

systemctl restart icinga2.service

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

使用以下设置配置Icinga命令传输并点击Next按钮继续。

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

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

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

安装过程成功完成后,祝贺信息会通知您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

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏