如何使用Icinga监控Ubuntu14.04上的服务器和服务

来自菜鸟教程
跳转至:导航、​搜索

介绍

在本教程中,我们将介绍在 Ubuntu 14.04 上安装开源监控系统 Icinga。 我们将介绍一些基本配置,因此您将能够通过 Web 界面监控网络服务和主机资源。 我们还将利用 Nagios 远程插件执行器 (NRPE),它将作为代理安装在远程系统上,以监控其本地资源(磁盘使用情况、登录用户数量等)。

Icinga 是一个流行的开源监控系统,它检查主机和服务,并通知您它们的状态。 Icinga 是 Nagios 的一个分支,因此它们兼容并具有许多相似之处,并且由于与 Nagios 相比更灵活的开发周期,它越来越受欢迎。

先决条件

要完成本教程,您将需要 Ubuntu 14.04 VPS 的 root 访问权限。 可以在此处找到设置说明(步骤 3 和 4): 使用 Ubuntu 14.04 进行初始服务器设置。

此外,如果您想设置邮件通知功能,您需要正确配置 Postfix。 可以在此处找到执行此操作的说明:如何在 Ubuntu 14.04 上安装和设置 Postfix。 Postfix 与 Icinga 软件包一起安装,但可以在设置 Icinga 后进行配置。

安装 Icinga

我们将使用软件包安装 Icinga。 此外,我们将使用 MySQL 作为我们的 DBMS——PostgreSQL、SQLite 和 Oracle 是其他支持的选项。

运行以下命令将 Icinga PPA 添加到您的包管理器:

sudo add-apt-repository ppa:formorer/icinga

然后更新您的 apt 包数据库:

sudo apt update

现在用 apt 安装 Icinga 和 MySQL:

sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client

现在,您将看到有关 Icinga 安装的一系列提示。 以下是提示列表,以及您应该如何回答它们:

  • MySQL 配置:输入新的 MySQL 根用户密码
  • PostFix 配置:选择“Internet 站点”
  • PostFix 配置:输入您的完全限定域名(例如 example.com
  • 配置icinga-cgi:输入“icingaadmin”用户密码(登录访问Icinga)。
  • 配置 icinga-common:输入“No”以启用外部命令
  • 配置 icinga-idoutils:输入“是”以使用 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 正在监视一台主机 localhost(您的 Icinga 服务器)和七个服务,如下所示:

最上面一行显示单个被监控的主机是“Up”,最下面一行显示有七个“OK”被监控的服务。

如果 localhost 的状态为“Down”,您可能需要更改 ping 命令的权限。 运行以下命令以允许 nagios 用户使用 ping 命令:

sudo chmod u+s `which ping`

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

使用 Icinga 进行监控的方法

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

  1. 监控“公共服务”
  2. 通过安装在远程主机上的代理进行监控,以收集数据并将数据发送到 Icinga

对于第一种方法,公共可用服务是指可以通过本地网络或 Internet 访问的服务。 常见示例包括 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 配置文件很长,注释很多。 您需要查找和修改几行:

  • server_address:设置为本主机的私网IP地址
  • allowed_hosts:设置为您的 Icinga 服务器的私有 IP 地址
  • command[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 是什么意思,它只是继承了默认定义的名为“generic-service”的服务模板的值。

现在保存并退出。 重新加载您的 Icinga 配置以使任何更改生效:

sudo service icinga reload

完成配置 Icinga 以监控所有远程主机后,让我们检查一下用户界面。

用户界面示例

在使用任一监控方法对几台主机设置监控后,转到您的 Icinga 用户界面(http://youricingaserver.com/icinga,acingaadmin 登录),然后单击服务详细信息链接。 您应该会看到您设置监控的所有服务的列表。

例如,这里有两台主机正在使用上述配置文件进行监控。 web-1 HTTP 服务正在通过其正常的 HTTP 端口进行监控,表明其 Web 服务器正在响应 OK 状态,并且显示 wordpress-1其所有监控的服务都是OK

Icinga 有很多功能,所以请随意浏览界面,看看您能发现哪些关于您的主机和服务的信息。

结论

既然您监控了您的主机和它们的一些服务,您可能需要花一些时间来确定哪些服务对您至关重要,因此您可以开始监控这些服务。 您可能还需要设置通知,例如,当您的磁盘利用率达到警告或严重阈值或您的主网站关闭时,您会收到一封电子邮件,这样您就可以及时解决问题,甚至在问题发生之前解决问题。

祝你好运!