简介
现在,我们已经完成了生产应用程序服务器的设置、恢复计划和备份,接下来让我们考虑添加监视功能,以提高我们对服务器和服务状态的认识。监控软件,如Nagios、Icinga和Zabbix,使您能够创建仪表板和警报,以显示您的应用程序设置的哪些组件需要关注。这样做的目的是帮助您检测设置中的问题,并在用户遇到问题之前开始修复它们。
在本教程中,我们将把Nagios4设置为监视软件,并在构成我们的应用程序的服务器上安装NRPE代理。
对于我们的设置中的每个服务器,我们将设置监视以检查服务器是否已启动,以及它的主进程(即,Apache、MySQL或haProxy)是否正在运行。虽然本监控指南并不全面--您可能希望设置其他检查,但我们不会在此介绍--但它是一个很好的起点。
前提条件
如果您想通过域名访问您的日志仪表板,请在您的域名下创建一条A记录 ,如monitor oring.example.com
,指向您的** 监控** 服务器的公网IP地址。或者,您也可以通过公共IP地址访问监控仪表板。建议您将监控Web服务器设置为使用HTTPS,并通过将其放置在VPN后面来限制对其的访问。
在监控服务器上安装Nagios
按照以下教程在您的监控 服务器上设置Nagios:如何在Ubuntu 14.04.上安装Nagios4和监控您的服务器如果你愿意,你也可以使用Icinga,,它是Nagios的一个分支。
当您到达使用NRPE监控Ubuntu主机 部分时停止。
向Nagios添加服务器
在您的设置中的每台服务器(DB1、App1、App2和Lb1)上,阅读Nagios教程的使用NRPE监视Ubuntu主机]部分。
请务必将您的监控 服务器的私有主机名或IP地址添加到NRPE配置文件的Allowed_Hosts
设置中。
添加完每台主机后,您应该为要监控的每台服务器准备一个单独的文件:db1.cfg
、app1.cfg
、app2.cfg
和lb1.cfg
。每个文件都应该包含引用相应主机名和地址(可以是服务器的主机名或IP地址)的主机定义。
设置主机和服务监控
让我们列出我们想要在每台服务器上监视的常见内容。让我们为每台服务器监控以下服务 :
- 平
- 宋承宪
- 当前负载
- 当前用户
- 磁盘利用率
现在让我们来设置一下。
定义公共服务
在Nagios设置教程中,我们将Nagios配置为在/usr/local/nagios/etc/servers
中查找.cfg
文件(或在Icinga中查找/etc/icinga/Objects/
)。为了保持条理清晰,我们将为我们想要监视的常见服务创建一个新的Nagios配置文件,名为Common.cfg
。
首先,打开主机配置文件进行编辑
1sudo vi /usr/local/nagios/etc/servers/common.cfg
添加以下服务定义,并使用每个服务器的host_name(在前面的主机定义中定义):
1[label Nagios Configuration — Common Services]
2define service {
3 use generic-service
4 host_name db1,app1,app2,lb1
5 service_description PING
6 check_command check_ping!100.0,20%!500.0,60%
7}
8
9define service {
10 use generic-service
11 host_name db1,app1,app2,lb1
12 service_description SSH
13 check_command check_ssh
14 notifications_enabled 0
15}
16
17define service {
18 use generic-service
19 host_name db1,app1,app2,lb1
20 service_description Current Load
21 check_command check_nrpe!check_load
22}
23
24define service {
25 use generic-service
26 host_name db1,app1,app2,lb1
27 service_description Current Users
28 check_command check_nrpe!check_users
29}
30
31define service{
32 use generic-service
33 host_name db1,app1,app2,lb1
34 service_description Disk Utilization
35 check_command check_nrpe!check_hda1
36}
保存并退出。
现在我们准备好定义特定于每台服务器的服务了。我们将从数据库服务器开始。
定义MySQL流程
创建NRPE命令(客户端)
在您的数据库服务器DB1 上,我们将配置一个新的NRPE命令。打开新的NRPE配置文件Commands.cfg
:
1sudo vi /etc/nagios/nrpe.d/commands.cfg
添加以下命令定义:
1[label NRPE configuration (commands.cfg) — check_mysqld]
2command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld
保存并退出。这允许NRPE检查名为mysqld
的进程,如果运行该名称的进程少于1个,则报告临界状态。
配置NRPE:
1sudo service nagios-nrpe-server reload
创建服务定义(在服务器上)
在您的Nagios服务器上,监控 ,我们需要定义一个使用NRPE来运行check_mysqld
命令的新服务。
打开定义数据库主机的定义文件。在我们的示例中,它被称为db1.cfg
:
1sudo vi /usr/local/nagios/etc/servers/db1.cfg
在文件末尾添加此服务定义(确保host_name
值与主机定义的名称匹配):
1[label db1.cfg — check_mysql]
2define service {
3 use generic-service
4 host_name db1
5 service_description Check MySQL Process
6 check_command check_nrpe!check_mysqld
7}
保存并退出。这会将Nagios配置为使用NRPE在数据库服务器上运行check_mySQLD命令。
为了使这一改变生效,我们必须重新加载Nagios。但是,我们将首先监视Apache进程。
定义APACHE进程
创建NRPE命令(客户端)
在您的应用服务器app1 和** app2** 上,我们将配置一个新的NRPE命令。打开新的NRPE配置文件Commands.cfg
:
1sudo vi /etc/nagios/nrpe.d/commands.cfg
添加以下命令定义:
1[label NRPE configuration (commands.cfg) — check_apache2]
2command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2
保存并退出。这允许NRPE检查名为apache2
的进程,如果没有匹配的进程正在运行,则报告严重状态;如果匹配的进程少于三个,则报告警告状态。
重新加载NRPE配置:
1sudo service nagios-nrpe-server reload
请确保在任何其他应用程序服务器上重复此操作。
创建服务定义(在服务器上)
在您的Nagios服务器上,监控 ,我们需要定义一个使用NRPE来运行check_apache2
命令的新服务。
打开定义应用程序主机的定义文件。在我们的示例中,它们分别称为app1.cfg
和app2.cfg
:
1sudo vi /usr/local/nagios/etc/servers/app1.cfg
在文件末尾添加此服务定义(确保host_name
值与主机定义的名称匹配):
1[label app1.cfg and app2.cfg — check_apache2]
2define service {
3 use generic-service
4 host_name app1
5 service_description Check Apache2 Process
6 check_command check_nrpe!check_apache2
7}
保存并退出。这将配置Nagios使用NRPE在应用程序服务器上运行check_apache2命令。请确保对您的每个应用程序服务器重复此操作。
要使此更改生效,我们必须重新加载Nagios。但是,我们将在此之前继续监控HAProxy进程。
定义HAProxy进程
创建NRPE命令(客户端)
在负载均衡服务器 lb1 上,我们将配置一个新的NRPE命令。打开一个新的NRPE配置文件commands.cfg
:
1sudo vi /etc/nagios/nrpe.d/commands.cfg
添加以下命令定义:
1[label NRPE configuration (commands.cfg) — check_haproxy]
2command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy
保存并退出。这允许NRPE检查名为haproxy
的进程,并在运行的进程少于1个的情况下报告严重状态。
重新加载NRPE配置:
1sudo service nagios-nrpe-server reload
请确保在任何其他应用程序服务器上重复此操作。
创建服务定义(在服务器上)
在您的Nagios服务器上,monitoring ,我们需要定义一个新的服务,使用NRPE来运行check_haproxy
命令。
打开定义数据库主机的定义文件。在我们的示例中,它称为lb1.cfg
:
1sudo vi /usr/local/nagios/etc/servers/lb1.cfg
在文件末尾添加此服务定义(确保host_name
值与主机定义的名称匹配):
1[label lb1.cfg — check_haproxy]
2define service {
3 use generic-service
4 host_name lb1
5 service_description Check HAProxy Process
6 check_command check_nrpe!check_haproxy
7}
这会将Nagios配置为使用NRPE在负载均衡器服务器上运行check_haproxy命令。
为了使这一改变生效,我们必须重新加载Nagios。
重新加载Nagios配置
要重新加载Nagios并使所有更改生效,请输入以下命令:
1sudo service nagios reload
如果配置中没有语法错误,则应进行设置。
Check Nagios服务
在继续之前,您需要验证Nagios是否在监视您定义的所有主机和服务。通过其公共主机名或IP地址访问您的Nagios服务器,例如http://monitoring.example.com/nagios/
.输入您在安装Nagios服务器期间设置的登录名。
在侧菜单中,单击 服务 链接。你应该被带到一个看起来像这样的页面:
理想情况下,您将看到每个主机和所有服务都处于正常
状态。在截图中,我们可以看到app2 服务器出现了问题,因为它在最近的状态检查中关闭了电源。如果您的任何服务不正常
,请修复它们,或者,如果服务正常,请检查您的Nagios配置是否有错误。
其他注意事项
您很可能希望为监控服务器创建恢复计划,并备份您的Nagios配置文件(/usr/local/nagios/etc
)。设置备份后,您可能需要配置监视、其他服务和电子邮件通知。
总结
现在,只需扫一眼监控仪表板,您就应该能够看到服务器和服务的状态。如果发生停机,您的监控系统将帮助您确定哪些服务器(S)和服务(S)运行不正常,这应该有助于减少应用程序的停机时间。
继续学习下一教程,开始为您的生产服务器设置设置集中式日志记录:为生产构建:Web应用程序-集中式Logging.