介绍
在本教程中,我们将讨论在Ubuntu 14.04上安装Icinga,一个开源监控系统。 我们将介绍一些基本配置,因此您将能够通过Web界面监控网络服务和主机资源。 我们还将利用Nagios远程插件执行器(NRPE),它将作为代理安装在远程系统上,以监视其本地资源(磁盘使用情况,登录用户数等)。
Icinga是一个流行的开源监控系统,它检查主机和服务,并通知您其状态。 Icinga是Nagios的一个分支,所以它们是兼容和共享许多相似之处,它已经越来越受欢迎,因为与Nagios相比更敏捷的开发周期。
先决条件
要完成本教程,您需要root用户访问Ubuntu 14.04 VPS。 说明设置,最多可以在这里找到(第3步和4): 初始服务器设置与Ubuntu 14.04 。
此外,如果要设置邮件通知功能,您将需要正确配置Postfix。 说明这样做可以在这里找到: 如何在Ubuntu 14.04安装和设置Stapling 。 Postfix与Icinga软件包一起安装,但它可以在Icinga设置完成后进行配置。
安装Icinga
我们将使用软件包安装Icinga。 此外,我们将使用MySQL作为我们的DBMS - PostgreSQL,SQLite和Oracle是其他支持的选项。
运行以下命令将Icinga PPA添加到包管理器:
sudo add-apt-repository ppa:formorer/icinga
然后更新你的apt包数据库:
sudo apt update
现在安装Icinga和MySQL与apt:
sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client
现在,您将看到有关您的Icinga安装的一系列提示。 这里是一个提示列表,以及你应该如何回答它们:
- MySQL配置:输入新的MySQL root用户密码
- PostFix配置:选择“Internet站点”
- PostFix配置:输入您的完全限定域名(例如example.com)
- 配置icinga-cgi:输入“icingaadmin”用户的密码(登录以访问Icinga)。
- 配置icinga-common:输入“No”启用外部命令
- 配置icinga-idoutils:输入“Yes”,使用dbconfig-common配置icinga-idoutils的数据库
- 配置icinga-idoutils:选择“mysql”作为数据库类型
- 配置icinga-idoutils:输入MySQL root密码(您刚才分配的上面)
- 配置icinga-idoutils:输入新的icinga-idoutils数据库用户密码
Icinga现在已经安装,但我们仍然需要配置一些东西,我们才能启动它。 注意,Apache HTTP服务器和Postfix是作为该进程的一部分安装的。
将Apache用户(www-data)添加到nagios组:
sudo usermod -a -G nagios www-data
启用ido2db守护程序在启动时启动,它将Icinga事件和配置存储在数据库中。 编辑Icinga默认配置:
sudo vi /etc/default/icinga
的值更改IDO2DB
为yes,所以看起来像下面这样:
IDO2DB=yes
保存并退出。 现在启动ido2db
服务:
sudo service ido2db start
通过将样本idoutils.cfg文件复制到Icinga的活动配置来启用idomod模块:
sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
现在Icinga已配置并准备好启动:
sudo service icinga restart
让我们试试Icinga用户界面。
访问Icinga用户界面
转到HTTP:// yourhost / icinga ,并登录使用您的Icinga安装过程中设置了icingaadmin登录。
您应该看到Icinga正在监控一台主机, 本地主机 (您Icinga服务器)和七个服务,就像这样:
第一行显示单个受监视的主机为“Up”,最下一行显示有七个“OK”受监视的服务。
如果本地主机的状态为“向下”,则可能需要更改ping命令的权限。 运行以下命令,让nagios用户使用ping命令:
sudo chmod u+s `which ping`
让我们添加更多的主机和服务来监控!
监控与Icinga
有两种主要方法来监视主机和服务与Icinga:
- 监测“公开服务”
- 通过安装在远程主机上的代理进行监控,以收集和发送数据到Icinga
使用第一种方法,公共可用服务是指可通过本地网络或因特网访问的服务。 常见的示例包括HTTP,邮件,SSH和ICMP ping。 此方法对于无法(或不希望)安装代理程序的系统以及监视面向用户的网络接口的系统非常有用。
为了实现第二种方法,我们将在远程主机上安装NRPE作为代理,以监视其本地资源。 这将允许Icinga监视磁盘使用情况,运行进程和第一种方法无法实现的其他系统统计信息。
方法1:监控公共服务
因为第一种方法只是监听侦听服务,所以此方法的配置都在Icinga服务器上完成。 可以使用此方法监视几个事件,因此我们将演示如何监视Web服务器的公共接口。
创建您的主机的名称的文件,使用此命令(替换yourhost
用自己的主机名):
sudo vi /etc/icinga/objects/yourhost.cfg
现在,添加以下,替换的值host_name
用自己的主机名(在两个地方), alias
与主机的描述,以及address
与主机的公网IP地址的值:
define host {
use generic-host
host_name web-1
alias A Web Server
address 107.170.xxx.xxx
}
define service {
use generic-service
host_name web-1
service_description HTTP
check_command check_http
}
现在保存并退出。 重新载入您的Icinga配置,使任何更改生效:
sudo service icinga reload
方法2:通过代理进行监控
如前所述,我们将使用NRPE作为我们的代理收集Icinga的远程主机数据。 这意味着NRPE必须安装在将使用此方法监控的所有主机上,并且Icinga服务器还需要配置为接收每个主机的数据。
让我们去安装NRPE。
在远程主机上安装NRPE
在要监视的主机上,更新apt:
sudo apt update
现在安装NRPE和Nagios插件:
sudo apt install nagios-plugins nagios-nrpe-server
查找根文件系统的名称(因为它是我们要监视的项目之一):
df -h /
我们将在NRPE配置中使用的文件系统的名称来监控您的磁盘使用情况(很可能是/dev/vda
)。 现在打开nrpe.cfg进行编辑:
sudo vi /etc/nagios/nrpe.cfg
NRPE配置文件很长,并有很多注释。 有几行,你需要找到和修改:
- 服务器地址 :设定到这个主机的私有IP地址
- allowed_hosts:设置为您Icinga服务器的私有IP地址
- 命令[check_hda1]:更改
/dev/hda1
到任何你的根文件系统被称为
上面三行应该看起来像这样(替换适当的值):
server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
请注意,如果Icinga服务器配置为使用它们,则在此文件中定义的其他几个“命令”将运行。 还要注意的是NRPE将在端口5666,因为监听server_port=5666
设置。 如果您有任何防火墙阻止该端口,请确保将其打开到您的Icinga服务器。
保存并退出。 然后重新启动NRPE以使更改生效:
sudo service nagios-nrpe-server restart
在您要监视的主机上完成安装和配置NRPE之后,必须将这些主机添加到Icinga服务器配置中,然后才能开始监视它们。
将远程主机添加到Icinga服务器配置
在您的Icinga服务器上,为每个要监视远程主机的新的配置文件/etc/icinga/objects
。 与您的主机的名称替换yourhost:
sudo vi /etc/icinga/objects/yourhost.cfg
添加在下面的主机定义,取代了host_name
与您的远程主机名的值(我曾经在我的例子“WordPress的-1”),该alias
值与主机的描述,以及address
与远程的私有IP地址值主办:
define host {
use generic-host
host_name wordpress-1
alias My first wordpress server
address 10.128.xxx.xxx
}
然后为要监视的服务添加任何这些服务块。 需要注意的是的值check_command
确定什么将被监控,包括状态的阈值。 以下是一些可添加到主机配置文件的示例:
平:
define service {
use generic-service
host_name wordpress-1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
SSH(notifications_enabled设置为0将禁用服务的通知):
define service {
use generic-service
host_name wordpress-1
service_description SSH
check_command check_ssh
notifications_enabled 0
}
加载:
define service {
use generic-service
host_name wordpress-1
service_description Current Load
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
当前用户:
define service {
use generic-service
host_name wordpress-1
service_description Current Users
check_command check_users!20!50
}
磁盘空间:
define service {
use generic-service
host_name wordpress-1
service_description Disk Space
check_command check_all_disks!20%!10%
}
如果你想知道什么use generic-service
手段,它只是继承所谓的“通用服务”的服务模板由默认定义的值。
现在保存并退出。 重新载入您的Icinga配置,使任何更改生效:
sudo service icinga reload
配置Icinga以监控所有远程主机后,让我们查看一下用户界面。
用户界面示例
无论使用哪种方法,监测设置的几个主机的监控后,转到您的Icinga用户界面( http://youricingaserver.com/icinga ,acingaadmin登录),然后单击服务细节链接。 您应该会看到您设置监视的所有服务的列表。
作为一个例子,在这里是正在使用该被上述配置文件监视两个主机。web的1 HTTP服务正在通过其正常的HTTP端口监视,这表明它的网络服务器与一个OK状态响应,并且wordpress-图1是其所有监控服务确定 。
Icinga有很多功能,所以随意浏览界面,看看你可以找到关于您的主机和服务。
结论
现在您监控主机及其某些服务,您可能需要花一些时间来确定哪些服务对您至关重要,因此您可以开始监控这些服务。 您还可能需要设置通知,例如,当您的磁盘利用率达到警告或临界阈值或主网站关闭时,您会收到电子邮件,以便您可以及时解决问题或在问题发生之前解决。
祝你好运!