建设生产:Web应用程序 - 监视

介绍

现在,我们已经有了生产应用服务器设置,恢复计划和备份,我们来看看添加监控以提高我们对服务器和服务状态的意识。 监视软件(如Nagios,Icinga和Zabbix)使您能够创建仪表板和警报,从而显示应用程序设置的哪些组件需要注意。 这样做的目的是帮助您检测设置的问题,并在用户遇到它们之前开始修复它们。

监控图

在本教程中,我们将设置Nagios 4作为监视软件,并在构成我们的应用程序的服务器上安装NRPE代理。

对于我们设置中的每个服务器,我们将设置监视以检查服务器是否已启动,以及其主进程(即apache,mysql或haproxy)是否正在运行。 虽然此监控指南不全面 - 您可能需要设置额外的检查,我们不会在这里覆盖 - 这是一个伟大的地方开始。

先决条件

如果你想通过域名访问你的日志仪表盘,创建一个记录站点上,像“monitoring.example.com”,它指向您的监控服务器的公网IP地址。 或者,您可以通过公共IP地址访问监控仪表板。 建议您将监控Web服务器设置为使用HTTPS,并通过将其置于VPN后限制对其的访问。

在监控服务器上安装Nagios

按照本教程中设置的Nagios您的监控服务器上: 如何安装Nagios的4和显示器在Ubuntu 14.04服务器 如果你愿意,你也可以使用Icinga ,这是Nagios的一个分支。

当你到达监控一个Ubuntu主机,NRPE部分停止。

将服务器添加到Nagios

在您的设置(DB1,APP1,APP2和LB1)每个服务器,经过监视器一个Ubuntu主机,NRPE Nagios的教程部分。

请确保您的监控服务器的专用主机名或IP地址添加到allowed_hosts在NRPE配置文件中设置。

当您添加完每个主机,你应该有你要监视的每个服务器一个单独的文件: db1.cfgapp1.cfgapp2.cfglb1.cfg 每个文件应包含引用相应主机名和地址(可以是服务器的主机名或IP地址)的主机定义。

设置主机和服务监控

让我们列出我们要在每个服务器上监视的常见事项。 对于每个服务器,让我们监视以下服务

  • SSH
  • 电流负载
  • 当前用户
  • 磁盘利用率

让我们现在就设置。

定义公共服务

在Nagios的安装教程中,我们配置的Nagios寻找.cfg文件/usr/local/nagios/etc/servers (或/etc/icinga/objects/为Icinga)。 为了保持组织,我们将为我们要监视的常用服务“common.cfg”创建一个新的Nagios配置文件。

首先,打开主机配置文件进行编辑

sudo vi /usr/local/nagios/etc/servers/common.cfg

添加以下服务定义,以及每个服务器的host_name(在主机定义中定义,先前):

Nagios配置 - 公共服务
define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
}

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             Current Load
        check_command                   check_nrpe!check_load
}

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             Current Users
        check_command                   check_nrpe!check_users
}

define service{
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             Disk Utilization
        check_command                   check_nrpe!check_hda1
}

保存并退出。

现在我们准备好定义每个服务器特定的服务。 我们将从我们的数据库服务器开始。

定义MySQL进程

创建NRPE命令(在客户端上)

在您的数据库服务器,DB1,我们将配置一个新的NRPE命令。 打开一个新的NRPE配置文件“commands.cfg”:

sudo vi /etc/nagios/nrpe.d/commands.cfg

添加以下命令定义:

NRPE配置(commands.cfg) - check_mysqld
command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld

保存并退出。 这允许NRPE检查名为“mysqld”的进程,如果运行的名称少于1个进程,则报告关键状态。

重新加载NRPE配置:

sudo service nagios-nrpe-server reload

创建服务定义(在服务器上)

在Nagios服务器, 监控 ,我们需要定义使用NRPE运行一个新的服务check_mysqld命令。

打开定义定义数据库主机的文件。 在我们的示例中,它被称为“db1.cfg”:

sudo vi /usr/local/nagios/etc/servers/db1.cfg

在文件的结尾,添加此服务定义(确保host_name值主机定义的名称相匹配):

db1.cfg - check_mysql
define service {
        use                             generic-service
        host_name                       db1
        service_description             Check MySQL Process
        check_command                   check_nrpe!check_mysqld
}

保存并退出。 这会将Nagios配置为使用NRPE在数据库服务器上运行check_mysqld命令。

要使此更改生效,我们必须重新加载Nagios。 但是,我们将继续首先监视Apache进程。

定义Apache进程

创建NRPE命令(在客户端上)

在您的应用程序服务器APP1APP2,我们将配置一个新的NRPE命令。 打开一个新的NRPE配置文件“commands.cfg”:

sudo vi /etc/nagios/nrpe.d/commands.cfg

添加以下命令定义:

NRPE配置(commands.cfg) - check_apache2
command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2

保存并退出。 这允许NRPE检查名为“apache2”的进程,如果没有运行匹配进程则报告关键状态,如果有少于三个匹配进程,则报告警告状态。

重新加载NRPE配置:

sudo service nagios-nrpe-server reload

请确保在任何其他应用程序服务器上重复此操作。

创建服务定义(在服务器上)

在Nagios服务器, 监控 ,我们需要定义使用NRPE运行一个新的服务check_apache2命令。

打开定义应用程序主机的文件。 在我们的示例中,它们被称为“app1.cfg”和“app2.cfg”:

sudo vi /usr/local/nagios/etc/servers/app1.cfg

在文件的结尾,添加此服务定义(确保host_name值主机定义的名称相匹配):

app1.cfg和app2.cfg - check_apache2
define service {
        use                             generic-service
        host_name                       app1
        service_description             Check Apache2 Process
        check_command                   check_nrpe!check_apache2
}

保存并退出。 这会将Nagios配置为使用NRPE在应用程序服务器上运行check_apache2命令。 请务必对每个应用程序服务器重复此操作。

要使此更改生效,我们必须重新加载Nagios。 然而,我们将在此之前继续监控HAProxy进程。

定义HAProxy过程

创建NRPE命令(在客户端上)

在您的负载均衡服务器,LB1,我们将配置一个新的NRPE命令。 打开一个新的NRPE配置文件“commands.cfg”:

sudo vi /etc/nagios/nrpe.d/commands.cfg

添加以下命令定义:

NRPE配置(commands.cfg) - check_haproxy
command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy

保存并退出。 这允许NRPE检查名为“haproxy”的进程,并且如果运行的名称少于1个进程,则报告关键状态。

重新加载NRPE配置:

sudo service nagios-nrpe-server reload

请确保在任何其他应用程序服务器上重复此操作。

创建服务定义(在服务器上)

在Nagios服务器, 监控 ,我们需要定义使用NRPE运行一个新的服务check_haproxy命令。

打开定义定义数据库主机的文件。 在我们的示例中,它被称为“lb1.cfg”:

sudo vi /usr/local/nagios/etc/servers/lb1.cfg

在文件的结尾,添加此服务定义(确保host_name值主机定义的名称相匹配):

lb1.cfg - check_haproxy
define service {
        use                             generic-service
        host_name                       lb1
        service_description             Check HAProxy Process
        check_command                   check_nrpe!check_haproxy
}

这会将Nagios配置为使用NRPE在负载平衡器服务器上运行check_haproxy命令。

要使此更改生效,我们必须重新加载Nagios。

重新加载Nagios配置

要重新加载Nagios,并将所有更改生效,请输入以下命令:

sudo service nagios reload

如果配置中没有语法错误,应该设置。

检查Nagios服务

在继续之前,您需要验证Nagios是否正在监视您定义的所有主机和服务。 通过公共主机名或IP地址,例如访问Nagios服务器http://monitoring. example.com /nagios/ 输入在Nagios服务器安装期间设置的登录名。

在侧边菜单 ,单击服务链接。 你应该被带到一个看起来像这样的页面:

Nagios服务

理想情况下,您将看到每个主机和所有服务将处于“确定”状态。 在截图中,我们可以看到有一个与APP2服务器有问题,因为它是在最近的状态检查断电。 如果您的任何服务不是“OK”,修复它们,或者,如果服务正常,请检查您的Nagios配置错误。

其他注意事项

您很可能希望为您的监控服务器恢复计划,并备份您的Nagios配置文件( /usr/local/nagios/etc )。 设置备份后,您可能需要配置监控,其他服务和电子邮件通知。

结论

现在您只需查看监控仪表板即可查看服务器和服务的状态。 如果发生中断,您的监控系统将帮助您确定哪些服务器和服务未正常运行,这将有助于减少应用程序的停机时间。

继续下一个教程,开始建立集中记录为您的生产服务器设置: 构建用于生产:Web应用程序-集中式日志记录

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

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

支付宝扫一扫打赏

微信扫一扫打赏