介绍
现在,我们已经有了生产应用服务器设置,恢复计划和备份,我们来看看添加监控以提高我们对服务器和服务状态的意识。 监视软件(如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.cfg
, app1.cfg
, app2.cfg
和lb1.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(在主机定义中定义,先前):
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
添加以下命令定义:
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
值主机定义的名称相匹配):
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命令(在客户端上)
在您的应用程序服务器APP1和APP2,我们将配置一个新的NRPE命令。 打开一个新的NRPE配置文件“commands.cfg”:
sudo vi /etc/nagios/nrpe.d/commands.cfg
添加以下命令定义:
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
值主机定义的名称相匹配):
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
添加以下命令定义:
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
值主机定义的名称相匹配):
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服务器安装期间设置的登录名。
在侧边菜单中 ,单击服务链接。 你应该被带到一个看起来像这样的页面:
理想情况下,您将看到每个主机和所有服务将处于“确定”状态。 在截图中,我们可以看到有一个与APP2服务器有问题,因为它是在最近的状态检查断电。 如果您的任何服务不是“OK”,修复它们,或者,如果服务正常,请检查您的Nagios配置错误。
其他注意事项
您很可能希望为您的监控服务器恢复计划,并备份您的Nagios配置文件( /usr/local/nagios/etc
)。 设置备份后,您可能需要配置监控,其他服务和电子邮件通知。
结论
现在您只需查看监控仪表板即可查看服务器和服务的状态。 如果发生中断,您的监控系统将帮助您确定哪些服务器和服务未正常运行,这将有助于减少应用程序的停机时间。
继续下一个教程,开始建立集中记录为您的生产服务器设置: 构建用于生产:Web应用程序-集中式日志记录 。