如何在 Ubuntu 14.04 上使用 Icinga 监控服务器和服务

介绍

在本教程中,我们将讨论安装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服务器)和七个服务,如下:

Icinga Initial Overview

上行显示单个监控主机为,下行显示有七个OK监控服务。

如果 localhost 的状态为,您可能需要更改 ping 命令的权限,然后运行以下命令,让 nagios 用户使用 ping 命令:

1sudo chmod u+s `which ping`

让我们添加更多的主机和服务来监控!

如何用ICINGA进行监控

使用 Icinga 监控主机和服务的主要方式有两种:

  1. 监控公共可用服务
  2. 监控通过安装在远程主机上的代理来收集和发送数据到 Icinga

Icinga Monitoring Methods

使用第一种方法,公共可用服务是指可通过本地网络或互联网访问的服务. 常见的例子包括 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 User Interface Example

Icinga有大量的功能,所以请自由浏览界面,看看您可以发现您的主机和服务。

结论

现在你监控你的主机和他们的某些服务,你可能想花一些时间来弄清楚哪些服务对你至关重要,所以你可以开始监控这些。

好运!

Published At
Categories with 技术
Tagged with
comments powered by Disqus