Nagios - 快速指南
Nagios - 概述
DevOps 生命周期是一个由多个阶段组成的连续循环,持续监控是该循环的最后一个阶段。持续监控是此生命周期的阶段之一。在本章中,让我们详细了解什么是持续监控以及 Nagios 如何帮助实现此目的。
什么是持续监控
当在生产服务器上完成部署时,持续监控就会开始。从那时起,这个阶段就负责监视发生的一切。这个阶段对于企业生产力来说非常关键。
使用连续监控有几个好处 -
- 它检测所有服务器和网络问题。
- 它找到失败的根本原因。
- 它有助于降低维护成本。
- 它有助于解决性能问题。
- 它有助于在基础设施过时之前对其进行更新。
- 它可以在检测到问题时自动修复问题。
- 它确保服务器、服务、应用程序、网络始终正常运行。
- 它每秒监控完整的基础设施。
什么是 Nagios
Nagios 是一个开源持续监控工具,可监控网络、应用程序和服务器。它可以发现并修复基础设施中检测到的问题,并在未来的问题影响最终用户之前阻止它们。它提供了 IT 基础设施及其性能的完整状态。
为什么选择 Nagios
Nagios 提供以下功能,使其可供大量用户社区使用 -
- 它可以监控数据库服务器,例如SQL Server、Oracle、Mysql、Postgres
- 它提供应用程序级别的信息(Apache、Postfix、LDAP、Citrix 等)。
- 提供积极的发展。
- 拥有庞大活跃社区的出色支持。
- Nagios 可以在任何操作系统上运行。
- 它可以 ping 查看主机是否可达。
Nagios 的好处
Nagios 为用户提供以下好处 -
- 它有助于摆脱定期测试。
- 当腕带仍处于“间歇”阶段时,它会检测到瞬间故障。
- 它在不牺牲性能的情况下降低了维护成本。
- 它向管理层提供及时的控制和故障通知。
Nagios - 架构
本章详细讨论Nagios架构。
Nagios架构
关于 Nagios 架构,以下几点值得注意 -
Nagios 具有服务器代理架构。
Nagios 服务器安装在主机上,插件安装在要监控的远程主机/服务器上。
Nagios 通过进程调度程序发送信号以在本地/远程主机/服务器上运行插件。
插件收集数据(CPU 使用情况、内存使用情况等)并将其发送回调度程序。
然后,进程调度将通知发送给管理员并更新 Nagios GUI。
下图详细显示了 Nagios 服务器代理架构 -
Nagios - 产品
Nagios 包含各种产品,如下详细讨论 -
纳吉奥斯十一世
它提供对完整 IT 基础设施组件(如应用程序、服务、网络、操作系统等)的监控。它提供了基础设施和业务流程的完整视图。GUI 可以轻松定制,从而提供使用的灵活性。该工具的标准版售价为 1995 美元,企业版售价为 3495 美元。
Nagios 核心
它是监控IT基础设施的核心。Nagios XI 产品也从根本上基于 Nagios 核心。每当基础设施出现任何故障问题时,它都会向管理员发送警报/通知,管理员可以快速采取行动来解决问题。这个工具是完全免费的。
Nagios 日志服务器
它使日志数据的搜索变得非常简单和容易。它将所有日志数据保存在一个位置并具有高可用性设置。如果日志数据中发现任何问题,它可以轻松发送警报。它可以扩展到数千台服务器,为您的日志分析平台提供更多功能、速度、存储和可靠性。该工具的价格取决于实例数量 - 1 个实例 3995 美元、2 个实例 4995 美元、3 个实例 5995 美元、4 个实例 6995 美元、10 个实例 14995 美元。
纳吉奥斯融合
该产品提供完整监控系统的集中视图。使用 Nagios Fusion,您可以为不同的地理位置扫描设置单独的监控服务器。它可以轻松地与 Nagios XI 和 Nagios 核心集成,以提供基础设施的完整可见性。该工具售价 2495 美元。
Nagios 网络分析仪
它向管理员提供网络基础设施的完整信息以及网络上的潜在威胁,以便管理员可以快速采取行动。它在深入的网络分析后共享有关网络的非常详细的数据。该工具售价 1995 美元。
Nagios - 安装
本章将详细讨论在 Ubuntu 上设置 Nagios 的步骤。
在安装 Nagios 之前,Ubuntu 系统上需要存在一些软件包,例如 Apache、PHP、构建软件包等。因此,让我们先安装它们。
步骤 1 - 运行以下命令来安装所需的软件包 -
sudo apt-get install wget build-essential apache2 php apache2-mod-php7.0 php-gd libgd-dev sendmail unzip
步骤 2 - 接下来,为 Nagios 创建用户和组并将它们添加到 Apache www-data 用户。
sudo useradd nagios sudo groupadd nagcmd sudo usermod -a -G nagcmd nagios sudo usermod -a -G nagios,nagcmd www-data
步骤 3 - 下载最新的 Nagios 软件包。
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios- 4.4.3.tar.gz
步骤 4 - 提取 tarball 文件。
tar -xzf nagios-4.4.3.tar.gz cd nagios-4.4.3/
步骤 5 - 运行以下命令从源代码编译 Nagios。
./configure --with-nagios-group=nagios --with-command-group=nagcmd
步骤 6 - 运行以下命令来构建 Nagios 文件。
make all
步骤 7 - 运行如下所示的命令来安装所有 Nagios 文件。
sudo make install
步骤 8 - 运行以下命令来安装 init 和外部命令配置文件。
sudo make install-commandmode sudo make install-init sudo make install-config sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sitesavailable/ nagios.conf
步骤 9 - 现在将事件处理程序目录复制到 Nagios 目录。
sudo cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/ sudo chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
步骤 10 - 下载并解压 Nagios 插件。
cd wget https://nagios-plugins.org/download/nagiosplugins- 2.2.1.tar.gz tar -xzf nagios-plugins*.tar.gz cd nagios-plugins-2.2.1/
步骤 11 - 使用以下命令安装 Nagios 插件。
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl make sudo make install
步骤 12 - 现在编辑 Nagios 配置文件并取消注释行号 51 → cfg_dir=/usr/local/nagios/etc/servers
sudo gedit /usr/local/nagios/etc/nagios.cfg
步骤 13 - 现在,创建一个服务器目录。
sudo mkdir -p /usr/local/nagios/etc/servers
步骤 14 - 编辑联系人配置文件。
sudo gedit /usr/local/nagios/etc/objects/contacts.cfg
步骤 15 - 现在启用 Apache 模块并配置用户 nagiosadmin。
sudo a2enmod rewrite sudo a2enmod cgi sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/
步骤 16 - 现在,重新启动 Apache 和 Nagios。
service apache2 restart service nagios start cd /etc/init.d/ sudo cp /etc/init.d/skeleton /etc/init.d/Nagios
步骤 17 - 编辑 Nagios 文件。
sudo gedit /etc/init.d/Nagios DESC = "Nagios" NAME = nagios DAEMON = /usr/local/nagios/bin/$NAME DAEMON_ARGS = "-d /usr/local/nagios/etc/nagios.cfg" PIDFILE = /usr/local/nagios/var/$NAME.lock
步骤 18 - 使 Nagios 文件可执行并启动 Nagios。
sudo chmod +x /etc/init.d/nagios service apache2 restart service nagios start
步骤 19 - 现在转到浏览器并打开 url → http://localhost/nagios。现在使用用户名 nagiosadmin 登录 Nagios 并使用您之前设置的密码。Nagios 的登录屏幕如下图所示 -
如果您正确执行了所有步骤,Nagios Web 界面将会显示。您可以找到 Nagios 仪表板,如下所示 -
Nagios - 配置
在上一章中,我们已经看到了Nagios的安装。在本章中,让我们详细了解其配置。
Nagios的配置文件位于/usr/local/nagios/etc。这些文件显示在下面的屏幕截图中 -
现在让我们了解每个文件的重要性 -
nagios.cfg
这是Nagios核心的主要配置文件。该文件包含 Nagios 日志文件的位置、主机和服务状态更新间隔、锁定文件和 status.dat 文件。运行实例的 Nagios 用户和组在此文件中定义。它具有所有单独对象配置文件(如命令、联系人、模板等)的路径。
cgi配置文件
默认情况下,Nagios的CGI配置文件名为cgi.cfg。它告诉 CGI 在哪里可以找到主配置文件。CGI 将读取主配置文件和主机配置文件以获取它们可能需要的任何其他数据。它包含所有用户和组信息及其权利和权限。它还具有 Nagios 所有前端文件的路径。
资源配置文件
您可以在此文件中定义 $USERx$ 宏,这些宏又可以在主机配置文件的命令定义中使用。$USERx$ 宏对于存储敏感信息(例如用户名、密码等)很有用。
它们还可以方便地指定插件和事件处理程序的路径 - 如果您决定将来将插件或事件处理程序移动到不同的目录,您只需更新一两个 $USERx$ 宏,而不是修改大量命令定义。资源文件还可用于存储外部数据源(如 MySQL)的配置指令。
对象目录内的配置文件用于定义命令、联系人、主机、服务等。
命令.cfg
此配置文件为您提供了一些示例命令定义,您可以在主机、服务和联系人定义中引用这些定义。这些命令用于检查和监控主机和服务。您可以在 Linux 控制台上本地运行这些命令,您还将获得所运行命令的输出。
例子
define command { command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ } define command { command_name check_local_load command_line $USER1$/check_load -w $ARG1$ -c $ARG2$ } define command { command_name check_local_procs command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ }
联系人.cfg
该文件包含 Nagios 的联系人和组信息。默认情况下,Nagios 管理员已存在一名联系人。
例子
define contact { contact_name nagiosadmin use generic-contact alias Nagios Admin email avi.dunken1991@gmail.com } define contactgroup { contactgroup_name admins alias Nagios Administrators members nagiosadmin }
模板.cfg
此配置文件为您提供了一些示例对象定义模板,这些模板由其他配置文件中的其他主机、服务、联系人等定义引用。
时间段.cfg
此配置文件为您提供了一些示例时间段定义,您可以在主机、服务、联系人和依赖项定义中引用这些定义。
Nagios - 功能
Nagios 是具有多种功能的监控工具,如下所示 -
Nagios Core 是开源的,因此可以免费使用。
强大的监控引擎,可以扩展和管理数千台主机和服务器。
全面的网络仪表板提供完整网络组件和监控数据的可见性。
它具有多租户功能,多个用户可以访问 Nagios 仪表板。
它具有可扩展的架构,可以轻松地与具有多个API的第三方应用程序集成。
Nagios 拥有一个非常活跃的大型社区,在全球拥有超过 100 万用户。
快速警报系统,在发现任何问题后立即向管理员发送警报。
多个插件可支持 Nagios,自定义编码的插件也可以与 Nagios 一起使用。
它具有良好的日志和数据库系统,可以轻松存储网络上发生的一切。
主动规划功能有助于了解何时需要升级基础设施。
Nagios - 应用程序
Nagios 可适用于广泛的应用程序。它们在这里给出 -
监控主机资源,例如磁盘空间、系统日志等。
监控网络资源 – http、ftp、smtp、ssh 等。
持续监控日志文件以识别基础问题。
监控 windows/linux/unix/web 应用程序及其状态。
Nagios 远程插件执行器 (NRPE) 可以远程监控服务。
并行运行服务检查。
SSH 或 SSL 隧道也可用于远程监控。
发送警报/通知
通过电子邮件、短信、寻呼机了解有关基础设施的任何问题
建议何时升级 IT 基础设施。
Nagios - 主机和服务
Nagios 是最流行的工具,用于监控 IT 基础设施中运行的主机和服务。主机和服务配置是 Nagios Core 的构建块。
主机就像一台电脑;它可以是物理设备或虚拟设备。
服务是 Nagios 用于检查主机相关信息的服务。
您可以在 Nagios 的服务器目录中创建一个主机文件并提及主机和服务定义。例如 -
sudo gedit /usr/local/nagios/etc/servers/ubuntu_host.cfg
# Ubuntu 主机配置文件
define host { use linux-server host_name ubuntu_host alias Ubuntu Host address 192.168.1.10 register 1 } define service { host_name ubuntu_host service_description PING check_command check_ping!100.0,20%!500.0,60% max_check_attempts 2 check_interval 2 retry_interval 2 check_period 24x7 check_freshness 1 contact_groups admins notification_interval 2 notification_period 24x7 notifications_enabled 1 register 1 }
上面的定义添加了一个名为 ubuntu_host 的主机,并定义了将在该主机上运行的服务。当您重新启动 Nagios 时,该主机将开始受到 Nagios 的监控,并且指定的服务将运行。
Nagios 中还有更多服务,可用于监视正在运行的主机上的几乎所有内容。
Nagios - 命令
命令定义定义命令。命令包括服务检查、服务通知、服务事件处理程序、主机检查、主机通知和主机事件处理程序。Nagios 的命令定义在commands.cfg 文件中定义。
以下是定义命令的格式 -
define command { command_name command_name command_line command_line }
命令名称- 该指令用于标识命令。联系人、主机和服务的定义通过命令名称引用。
命令行- 该指令用于定义当命令用于服务或主机检查、通知或事件处理程序时 Nagios 执行的内容。
例子
define command{ command_name check_ssh command_line /usr/lib/nagios/plugins/check_ssh ‘$HOSTADDRESS$’ }
此命令将执行插件 - /usr/libl/nagios/plugins/check_ssh 并带有 1 个参数:'$HOSTADDRESS$'
使用此检查命令的非常短的主机定义可能与此处显示的类似 -
define host{ host_name host_tutorial address 10.0.0.1 check_command check_ssh }
命令定义告诉如何执行主机/服务检查。它还定义了如何在发现任何问题时生成通知以及如何处理任何事件。有多个命令可以执行检查,例如检查 SSH 是否正常工作的命令、检查数据库是否启动并运行的命令、检查主机是否处于活动状态的命令等等。
有一些命令可以告诉用户基础设施中存在哪些问题。您可以在 Nagios 中创建自己的自定义命令或使用任何第三方命令,它们的处理方式类似于 Nagios 插件项目,它们之间没有区别。
您还可以在命令中传递参数,这为执行检查提供了更大的灵活性。这就是您需要定义带有参数的命令的方式 -
define command { command_name check-host-alive-limits command_line $USER5$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 }
上述命令的主机定义 -
define host { host_name system2 address 10.0.15.1 check_command check-host-alive-limits!1000.0,70%!5000.0,100% }
您可以通过将外部命令添加到 Nagios 守护程序定期处理的命令文件中来在 Nagios 中运行外部命令。
使用外部命令,您可以在 Nagios 运行时完成许多检查。您可以暂时禁用一些检查,或强制某些检查立即运行,暂时禁用通知等。以下是 Nagios 中必须写入命令文件的外部命令的语法 -
[time] command_id;command_arguments
您还可以在此处查看可在 Nagios 中使用的所有外部命令的列表 - https://assets.nagios.com/downloads/nagioscore/docs/externalcmds/
Nagios - 检查和状态
在 Nagios 上配置主机和服务后,将使用检查来查看主机和服务是否按预期工作。让我们看一个在主机上执行检查的示例 -
假设您已将主机定义放入 /usr/local/nagios/etc/objects 目录中的 host1.cfg 文件中。
cd /usr/local/nagios/etc/objects gedit host1.cfg
这是您的主机定义当前的样子 -
define host { host_name host1 address 10.0.0.1 }
现在让我们添加 check_interval 指令。该指令用于对您设置的数量的主机执行计划检查;默认情况下以分钟为单位。使用下面的定义,每 3 分钟后将对主机执行一次检查。
define host { host_name host1 address 10.0.0.1 check_interval 3 }
在 Nagios 中,对主机和服务执行两种类型的检查 -
- 主动检查
- 被动检查
主动检查
主动检查由 Nagios 进程启动,然后定期运行。Nagios进程内部的检查逻辑启动Active检查。为了监视远程计算机上运行的主机和服务,Nagios 执行插件并告知要收集哪些信息。然后插件在远程计算机上执行,收集所需的信息并将其发送回 Nagios 守护程序。根据主机和服务上收到的状态,采取适当的操作。
下图显示了主动检查 -
这些按 check_interval 和 retry_interval 定义的定期间隔执行。
被动检查由外部进程执行,并将结果返回给 Nagios 进行处理。
被动检查的工作方式如下所述 -
外部应用程序检查主机/服务的状态并将结果写入外部命令文件。当 Nagios 守护进程读取外部命令文件时,它会读取并发送队列中的所有被动检查以供稍后处理。处理这些检查时,会根据检查结果中的信息定期发送通知或警报。
下图显示了被动检查 -
因此,主动检查和被动检查之间的区别在于主动检查由 Nagios 运行,而被动检查由外部应用程序运行。
当您无法定期监控主机/服务时,这些检查非常有用。
Nagios 存储它正在监视的主机和服务的状态,以确定它们是否正常工作。在很多情况下,故障是随机发生的,并且是暂时的;因此 Nagios 使用状态来检查主机或服务的当前状态。
有两种类型的状态 -
- 软状态
- 硬态
软状态
当主机或服务在很短的时间内关闭并且其状态未知或与之前的状态不同时,则使用软状态。主机或服务将被一次又一次地测试,直到状态永久为止。
硬态
当执行了 max_check_attempts 并且主机或服务的状态仍然不正常时,则使用硬状态。Nagios 执行事件处理程序来处理硬状态。
下图显示了软状态和硬状态。
Nagios - 端口和协议
本章介绍了 Nagios 所包含的端口和协议。
协议
Nagios 使用的默认协议如下所示 -
http(s)、端口 80 和 443 - 产品界面在 Nagios 中基于 Web。Nagios 代理可以使用 http 来移动数据。
snmp,端口 161 和 162 - snmp 是网络监控的重要组成部分。端口 161 用于向节点发送请求,端口 162 用于接收结果。
ssh,端口 22 - Nagios 专为在 CentOS 或 RHEL Linux 上本机运行而构建。管理员可以随时通过 SSH 登录 Nagios 并执行检查。
港口
常见 Nagios 插件使用的默认端口如下所示 -
- Butcheck_nt (nsclient++) 12489
- NRPE 5666
- NSCA 5667
- 国家大剧院 5693
- 微软SQL 1433
- MySQL 3306
- PostgreSQL 5432
- MongoDB 27017, 27018
- OracleDB 1521
- 电子邮件 (SMTP) 25、465、587
- WMI 135、445 / 1024-1034 范围内的附加动态分配端口
Nagios - 附加组件/插件
插件有助于使用 Nagios 监控数据库、操作系统、应用程序、网络设备、协议。插件是已编译的可执行文件或脚本(Perl 或非 Perl),可扩展 Nagios 功能以监视服务器和主机。Nagios 将执行插件来检查服务或主机的状态。Nagios 可以在编译时支持嵌入式 Perl 解释器来执行 Perl 插件。如果没有它,Nagios 通过将插件分叉并作为外部命令执行来执行 Perl 和非 Perl 插件。
Nagios 插件的类型
Nagios 有以下可用插件 -
官方 Nagios 插件- 有 50 个官方 Nagios 插件。官方 Nagios 插件由官方 Nagios 插件团队开发和维护。
社区插件- 有超过 3,000 个第三方 Nagios 插件,由数百名 Nagios 社区成员开发。
自定义插件- 您还可以编写自己的自定义插件。编写自定义插件必须遵循某些准则。
编写自定义 Nagios 插件的指南
在 Nagios 中编写自定义插件时,您需要遵循以下指南 -
- 插件应提供“-V”命令行选项(验证配置更改)
- 只打印一行文本
- 仅打印诊断信息和部分帮助消息
- 网络插件使用DEFAULT_SOCKET_TIMEOUT来超时
- “-v”或“--verbose“与详细级别相关
- “-t”或“--timeout”(插件超时);
- “-w”或“--warning”(警告阈值);
- “-c”或“--ritic”(临界阈值);
- “-H”或“--hostname”(要检查的主机名)
多个 Nagios 插件同时运行并执行检查,为了让所有插件都能顺利运行,Nagios 插件遵循一个状态代码。下表列出了退出代码状态及其描述 -
退出代码 | 地位 | 描述 |
---|---|---|
0 | 好的 | 工作正常 |
1 | 警告 | 工作正常,但需要注意 |
2 | 批判的 | 无法正常工作 |
3 | 未知 | 当插件无法确定主机/服务的状态时 |
Nagios 插件使用选项进行配置。以下是 Nagios 插件接受的一些重要参数 -
先生编号 | 选项和说明 |
---|---|
1 | -h,--帮助 这提供了帮助 |
2 | -V,--版本 这会打印插件的确切版本 |
3 | -v, --详细 这使得插件可以提供有关其正在执行的操作的更详细信息 |
4 | -t, --超时 这提供了超时(以秒为单位);在此时间之后,插件将报告 CRITICAL 状态 |
5 | -w, --警告 这为警告状态提供了特定于插件的限制 |
6 | -c,--关键 这提供了针对 CRITICAL 状态的特定于插件的限制 |
7 | -H, --主机名 这提供了要与之通信的主机名、IP 地址或 Unix 套接字 |
8 | -4, --使用-ipv4 这使您可以使用 IPv4 进行网络连接 |
9 | -6, --使用-ipv6 这使您可以使用 IPv6 进行网络连接 |
10 | -p,--端口 这用于连接到 TCP 或 UDP 端口 |
11 | -s, -- 发送 这提供了将发送到服务器的字符串 |
12 | -e,--期望 这提供了应该从服务器发回的字符串 |
13 | -q,--退出 这提供了发送到服务器以关闭连接的字符串 |
Nagios 插件包有很多检查可供主机和服务监控基础设施。让我们尝试使用 Nagios 插件来执行一些检查。
SMTP 是一种用于发送电子邮件的协议。Nagios 标准插件具有用于执行 SMTP 检查的命令。SMTP 的命令定义 -
define command { command_name check_smtp command_line $USER2$/check_smtp -H $HOSTADDRESS$ }
让我们使用Nagios插件来监控MySQL。Nagios 提供了 2 个插件来监控 MySQL。第一个插件检查 mysql 连接是否正常,第二个插件用于计算运行 SQL 查询所需的时间。
两者的命令定义如下 -
define command { command_name check_mysql command_line $USER1$/check_mysql –H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d $ARG3$ -S –w 10 –c 30 } define command { command_name check_mysql_query command_line $USER1$/check_mysql_query –H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d $ARG3$ -q $ARG4$ –w $ARG5$ -c $ARG6$ }
注- 这两个命令中都需要用户名、密码和数据库名称作为参数。
Nagios 提供插件来检查所有分区上安装的磁盘空间。命令定义如下
define command { command_name check_partition command_line $USER1$/check_disk –p $ARG1$ –w $ARG2$ -c $ARG3$ }
大多数检查可以通过标准 Nagios 插件完成。但有些应用程序需要特殊检查来监视它们,在这种情况下,您可以使用第 3 方 Nagios 插件,它将对应用程序提供更复杂的检查。当您使用 Nagios Exchange 的第三方插件或从其他网站下载插件时,了解安全和许可问题非常重要。
Nagios-NRPE
Nagios 守护进程在 NRPE(Nagios 远程插件执行器)中运行检查远程计算机。它允许您在其他计算机上远程运行 Nagios 插件。您可以监控远程计算机的指标,例如磁盘使用情况、CPU 负载等。它还可以通过一些 Windows 代理插件检查远程 Windows 计算机的指标。
让我们看看如何在需要监控的客户端机器上逐步安装和配置NRPE。
步骤 1 - 运行以下命令在要监控的远程 Linux 计算机上安装 NRPE。
sudo apt-get install nagios-nrpe-server nagios-plugins
步骤 2 - 现在,在服务器目录中创建一个主机文件,并放置主机的所有必要定义。
sudo gedit /usr/local/nagios/etc/servers/ubuntu_host.cfg
# Ubuntu Host configuration file define host { use linux-server host_name ubuntu_host alias Ubuntu Host address 192.168.1.10 register 1 } define service { host_name ubuntu_host service_description PING check_command check_ping!100.0,20%!500.0,60% max_check_attempts 2 check_interval 2 retry_interval 2 check_period 24x7 check_freshness 1 contact_groups admins notification_interval 2 notification_period 24x7 notifications_enabled 1 register 1 } define service { host_name ubuntu_host service_description Check Users check_command check_local_users!20!50 max_check_attempts 2 check_interval 2 retry_interval 2 check_period 24x7 check_freshness 1 contact_groups admins notification_interval 2 notification_period 24x7 notifications_enabled 1 register 1 } define service { host_name ubuntu_host service_description Local Disk check_command check_local_disk!20%!10%!/ max_check_attempts 2 check_interval 2 retry_interval 2 check_period 24x7 check_freshness 1 groups admins notification_interval 2 notification_period 24x7 notifications_enabled 1 register 1 } define service { host_name ubuntu_host service_description Check SSH check_command check_ssh max_check_attempts 2 check_interval 2 retry_interval 2 check_period 24x7 check_freshness 1 contact_groups admins notification_interval 2 notification_period 24x7 notifications_enabled 1 register 1 } define service { host_name ubuntu_host service_description Total Process check_command check_local_procs!250!400!RSZDT max_check_attempts 2 check_interval 2 retry_interval 2 check_period 24x7 check_freshness 1 contact_groups admins notification_interval 2 notification_period 24x7 notifications_enabled 1 register 1 }
步骤 3 - 运行下面所示的命令来验证配置文件。
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
步骤 4 - 如果没有错误,请重新启动 NRPE、Apache 和 Nagios。
service nagios-nrpe-server restart service apache2 restart service nagios restart
步骤 5 - 打开浏览器并转到 Nagios Web 界面。可以看到需要监控的主机已经添加到Nagios核心服务中。同样,您可以添加更多由 Nagios 监控的主机。
Nagios - V Shell
V-Shell 是用 PHP 编写的 Nagios Core 的轻量级 Web 界面。它易于安装和使用,是 Nagios 输出的替代品。VShell 的前端位于 AngularJs 上,因此设计响应灵敏且现代。它提供快速搜索功能和由 CodeIgniter 提供支持的 RESTful API。
Nagios VShell 与 Nagios XI 和 Nagios Core 3.x 兼容。它需要 php 5.3 或更高版本,系统中安装 php-cli 和 apache。让我们看看如何安装 Nagios VShell。
步骤 1 - 转到 tmp 目录并下载 vshell tar 文件。
cd /tmp wget http://assets.nagios.com/downloads/exchange/nagiosvshell/vshell.tar.gz
步骤 2 - 提取 tar 文件。
tar zxf vshell.tar.gz
步骤 3 - 转到 vshell 目录并授予 install.php 文件可执行权限。最后,运行安装脚本。
cd vshell chmod +x install.php ./install.php
步骤 4 - 现在在浏览器中访问https://192.168.56.101/vshell ,使用 nagiosadmin 登录,您的 Vshell 将出现。
Nagios - 案例研究
在本章中,我们将研究两个成功实施 Nagios 的组织的案例研究。
Bitnetix 与 Nagios
Bitnetix 是一家 IT 咨询组织,专注于网络、数据中心、监控和 IP 语音。通过他们的产品,他们让小企业看起来很大。他们的解决方案可帮助您通过增加更多参与度并提高客户满意度来更好地管理客户关系。他们说他们从事的是沟通业务,因此在正确的时间向客户传达正确的信息对他们来说非常重要。
Bitnetix 正在与一位从事电子邮件营销的客户合作。他们用来监控动态分配的 AWS 服务器,并负责向客户发送数千封电子邮件。他们之前使用 Nagios 核心,但希望迁移到新的 Nagios XI 并与 Chef 集成,实现零停机时间。将 Nagios 核心上的实时状态配置转移到 Nagios XI 中的适当检查存在挑战。但通过 Nagios,他们能够设置集成了 Chef 的 Nagios XI 配置文件。他们能够以零停机时间将所有客户从 Nagios core 转移到 Nagios XI。Nagios XI 还能够与 PagerDuty 集成以发送即时通知。
EverWatch.gobal 与 Nagios
EverWatch.global 是一家为非营利组织和中小型组织提供帮助的 IT 管理和咨询组织。其总部位于纽约州罗彻斯特。他们因与 Nagios 的合作而赢得了无数奖项。
EverWatch.global 正在与一家年收入数十亿美元的电子商务零售客户合作。他们负责保持网站始终正常运行,监控购物车和结帐功能,并在发生诽谤时向必要的工作人员发送通知。面临的挑战是他们客户的服务器距离其纽约总部 500 英里。为了在同一平台上监控生产、分期、质量保证和开发,这两个区域的配置应该是唯一且相似的。
在 Nagios 的帮助下,他们能够为设备和网络运营中心创建 ssh 防火墙规则。他们还能够检查诽谤事件并减少误报。通过在 Nagios 中配置事件处理程序,通知数量大幅减少。Nagios 帮助他们将客户网站的正常运行时间从每年 85% 提高到了 98%,这是巨大的成功。
“以实际美元计算,公司因此实现了近 1.25 亿美元的额外销售额。” 埃里克·劳埃德 (Eric Loyd),EverWatch Global 首席执行官。