介绍
在本教程中,我们将讨论安装Icinga,一个开源监控系统,在Ubuntu 14.04. 我们将涵盖一些基本的配置,所以你将能够监控网络服务和主机资源通过Web界面。
Icinga是一个受欢迎的开源监控系统,它检查主机和服务,并通知您他们的状态. Icinga是Nagios的叉子,因此它们兼容,共享许多相似之处,并且由于比Nagios更敏捷的开发周期而变得越来越受欢迎。
前提条件
要完成本教程,您将需要 root 访问 Ubuntu 14.04 VPS. 设置此设置的说明可以在这里找到(步骤 3 和 4): [Ubuntu 14.04 初始服务器设置(https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-14-04)。
此外,如果您想设置邮件通知功能,则需要正确配置 Postfix。 此处可以找到此处的说明: 如何在 Ubuntu 14.04 上安装和设置 Postfix. Postfix 与 Icinga 包一起安装,但可以在 Icinga 设置后配置。
安装Icinga
此外,我们将使用MySQL作为我们的DBMS - PostgreSQL,SQLite和Oracle是其他支持的选项。
运行以下命令,将 Icinga PPA 添加到您的包管理器中:
1sudo add-apt-repository ppa:formorer/icinga
然后更新您的 apt 数据库:
1sudo apt update
现在安装 Icinga 和 MySQL 与 apt:
1sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client
现在,您将收到一系列关于您的Icinga安装的提示,以下是提示的列表,以及您应该如何回答它们:
- MySQL 配置: 输入新的 MySQL 根用户密码
- PostFix 配置: 选择
互联网网站
- PostFix 配置: 输入您的完全合格域名(例如.com)
- 配置 icinga-cgi: 输入
icingaadmin
用户密码(登录访问 Icinga)。 - 配置 icinga-common: 输入
No
以启用外部命令 - 配置 icinga-idoutils: 输入
Yes
以配置数据库的 icinga-idoutils 使用 dbconfig-com MmonKBR1 * 配置 ic-idoutils: 选择mysql
作为数据库类型 _MK
现在安装了Icinga,但我们仍然需要配置一些事情才能启动它,请注意,Apache HTTP服务器和Postfix是该过程的一部分。
将 Apache 用户 (www-data) 添加到 nagios 组:
1sudo usermod -a -G nagios www-data
允许 ido2db 示威器启动启动,该示威器将 Icinga 事件和配置存储在数据库中。
1sudo vi /etc/default/icinga
将IDO2DB的值更改为 yes,以便它看起来如下:
1IDO2DB=yes
现在开始ido2db
服务:
1sudo service ido2db start
通过将样本 idoutils.cfg 文件复制到 Icinga 的活跃配置来激活 idomod 模块:
1sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg
现在Icinga已配置并准备启动:
1sudo service icinga restart
让我们来试试Icinga用户界面。
访问 Icinga 用户界面
转到 http://yourhost/icinga,然后使用您在 Icinga 安装过程中设置的 icingaadmin 登录。
您应该看到,Icinga正在监控一个主机 localhost(您的Icinga服务器)和七个服务,如下:
上行显示单个监控主机为上
,下行显示有七个OK
监控服务。
如果 localhost 的状态为下
,您可能需要更改 ping 命令的权限,然后运行以下命令,让 nagios 用户使用 ping 命令:
1sudo chmod u+s `which ping`
让我们添加更多的主机和服务来监控!
如何用ICINGA进行监控
使用 Icinga 监控主机和服务的主要方式有两种:
- 监控
公共可用服务
- 监控通过安装在远程主机上的代理来收集和发送数据到 Icinga
使用第一种方法,公共可用服务是指可通过本地网络或互联网访问的服务. 常见的例子包括 HTTP、邮件、SSH 和 ICMP ping。
为了实现第二种方法,我们将在远程主机上安装 NRPE 作为代理来监控其本地资源,这将允许 Icinga 监控磁盘使用率,运行流程和其他系统统计数据,而第一种方法无法实现。
方法1:监控公共服务
由于第一种方法仅仅监控听力服务,所以对此方法的配置都是在ICINGA服务器上完成的。
使用此命令创建您的主机名称的文件(用自己的主机名称代替您的主机
):
1sudo vi /etc/icinga/objects/yourhost.cfg
现在添加以下内容,将host_name
的值替换为自己的主机名(在两个地方),alias
以主机的描述和地址
以您的主机的公共 IP 地址的值:
1define host {
2 use generic-host
3 host_name web-1
4 alias A Web Server
5 address 107.170.xxx.xxx
6}
7
8define service {
9 use generic-service
10 host_name web-1
11 service_description HTTP
12 check_command check_http
13}
重新加载您的 Icinga 配置以使任何更改生效:
1sudo service icinga reload
方法2:通过代理监控
如前所述,我们将使用NRPE作为我们的代理来收集Icinga的远程主机数据,这意味着NRPE必须安装在所有使用这种方法进行监控的主机上,并且Icinga服务器也需要配置以接收每个主机的数据。
接下来就来安装NRPE吧。
在远程主机上安装 NRPE
在您想要监控的主机上,更新 apt:
1sudo apt update
现在安装 NRPE 和 Nagios 插件:
1sudo apt install nagios-plugins nagios-nrpe-server
查看您的根文件系统的名称(因为它是我们想要监控的项目之一):
1df -h /
我们将使用 NRPE 配置中的文件系统名称来监控您的磁盘使用情况(可能是 /dev/vda
)。
1sudo vi /etc/nagios/nrpe.cfg
NRPE配置文件非常长,充满了评论,有几个行你需要找到和修改:
- server_address: 设置为此主机的私人 IP 地址
- allowed_hosts: 设置为您的 Icinga 服务器的私人 IP 地址
- command[check_hda1]: 更改
/dev/hda1
到您的根文件系统叫做
上述三行应该是这样的(取代相应的值):
1server_address=client_private_IP
2allowed_hosts=nagios_server_private_IP
3command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
请注意,如果 Icinga 服务器已配置使用这些命令,该文件会运行其他几个命令
。 另外,请注意,NRPE 将在端口 5666 上聆听,因为设置为 `server_port=5666. 如果您有防火墙阻止该端口,请确保将其打开到您的 Icinga 服务器。
保存和停止. 然后重新启动 NRPE 以执行更改:
1sudo service nagios-nrpe-server restart
在您想要监控的主机上安装和配置 NRPE 后,您必须将这些主机添加到您的 Icinga 服务器配置中,然后开始监控它们。
将远程主机添加到 Icinga 服务器配置
在您的 Icinga 服务器上,为您希望在 `/etc/icinga/objects 中监控的每个远程主机创建一个新的配置文件。
1sudo vi /etc/icinga/objects/yourhost.cfg
添加以下主机定义,将host_name
值替换为您的远程主机名(我在我的例子中使用了wordpress-1
),与主机的描述一起添加alias
值,并将地址
值替换为远程主机的私人IP地址:
1define host {
2 use generic-host
3 host_name wordpress-1
4 alias My first wordpress server
5 address 10.128.xxx.xxx
6 }
然后,为您想要监控的服务添加这些服务块。 请注意,check_command
的值决定了将监控的内容,包括状态门槛值。
平:
1define service {
2 use generic-service
3 host_name wordpress-1
4 service_description PING
5 check_command check_ping!100.0,20%!500.0,60%
6 }
SSH (notifications_enabled 设置为 0 禁用服务的通知):
1define service {
2 use generic-service
3 host_name wordpress-1
4 service_description SSH
5 check_command check_ssh
6 notifications_enabled 0
7 }
加载:
1define service {
2 use generic-service
3 host_name wordpress-1
4 service_description Current Load
5 check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
6 }
当前用户:
1define service {
2 use generic-service
3 host_name wordpress-1
4 service_description Current Users
5 check_command check_users!20!50
6 }
磁盘空间:
1define service {
2 use generic-service
3 host_name wordpress-1
4 service_description Disk Space
5 check_command check_all_disks!20%!10%
6 }
如果您想知道使用通用服务
意味着什么,那么它只是继承了默认定义的名为通用服务
的服务模板的值。
重新加载您的 Icinga 配置以使任何更改生效:
1sudo service icinga reload
一旦您完成了Icinga的配置,以监控您的所有远程主机,让我们检查用户界面。
用户界面示例
在使用任何监控方法在几个主机上设置监控后,请访问您的 Icinga 用户界面(http://youricingaserver.com/icinga,acingaadmin login),然后单击服务详细信息
链接。
例如,这里有两个主机正在使用上面描述的配置文件进行监控。 web-1 HTTP 服务正在通过其正常的 HTTP 端口进行监控,这表明其 Web 服务器正在以 OK 状态响应,而 wordpress-1 显示其所有监控服务都是 OK。
Icinga有大量的功能,所以请自由浏览界面,看看您可以发现您的主机和服务。
结论
现在你监控你的主机和他们的某些服务,你可能想花一些时间来弄清楚哪些服务对你至关重要,所以你可以开始监控这些。
好运!