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 包含各种产品,如下所述:
Nagios XI
它提供对完整 IT 基础设施组件(如应用程序、服务、网络、操作系统等)的监控。它提供基础设施和业务流程的完整视图。GUI 易于定制,使用户能够灵活地进行操作。该工具的标准版售价为 1995 美元,企业版售价为 3495 美元。
Nagios Core
它是监控 IT 基础设施的核心。Nagios XI 产品也基本基于 Nagios Core。每当基础设施出现任何故障问题时,它都会向管理员发送警报/通知,管理员可以快速采取措施解决问题。此工具完全免费。
Nagios 日志服务器
它使日志数据的搜索非常简单易用。它将所有日志数据保存在一个位置,并具有高可用性设置。如果在日志数据中发现任何问题,它可以轻松发送警报。它可以扩展到数千台服务器,为您的日志分析平台提供更高的性能、速度、存储和可靠性。此工具的价格取决于实例数量 - 1 个实例 3995 美元,2 个实例 4995 美元,3 个实例 5995 美元,4 个实例 6995 美元,10 个实例 14995 美元。
Nagios Fusion
此产品提供了完整监控系统的集中视图。使用 Nagios Fusion,您可以为不同的地区设置单独的监控服务器。它可以轻松地与 Nagios XI 和 Nagios Core 集成,以提供基础设施的完整可见性。此工具售价 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 → https://127.0.0.1/nagios。现在使用您之前设置的用户名 nagiosadmin 和密码登录 Nagios。Nagios 的登录屏幕如下面的屏幕截图所示:
如果您正确地完成了所有步骤,您的 Nagios Web 界面将显示出来。您可以找到如下所示的 Nagios 仪表板:
Nagios - 配置
在上一章中,我们已经看到了 Nagios 的安装。在本章中,让我们详细了解它的配置。
Nagios 的配置文件位于 /usr/local/nagios/etc。这些文件在下面的屏幕截图中显示:
让我们现在了解每个文件的重要性:
nagios.cfg
这是 Nagios Core 的主配置文件。此文件包含 Nagios 的日志文件位置、主机和服务的状体更新间隔、锁文件和 status.dat 文件。在此文件中定义了运行实例的 Nagios 用户和组。它包含所有单个对象配置文件的路径,例如命令、联系人、模板等。
cgi.cfg
默认情况下,Nagios 的 CGI 配置文件名为 cgi.cfg。它告诉 CGI 在哪里可以找到主配置文件。CGI 将读取主配置文件和主机配置文件以获取它们可能需要的任何其他数据。它包含所有用户和组信息及其权限。它还包含 Nagios 所有前端文件的路径。
resource.cfg
您可以在此文件中定义 $USERx$ 宏,这些宏又可以在主机配置文件中的命令定义中使用。$USERx$ 宏对于存储敏感信息(如用户名、密码等)很有用。
它们对于指定插件和事件处理程序的路径也很方便 - 如果您决定将来将插件或事件处理程序移动到不同的目录,您可以只更新一两个 $USERx$ 宏,而不是修改许多命令定义。资源文件也可用于存储外部数据源(如 MySQL)的配置指令。
objects 目录内的配置文件用于定义命令、联系人、主机、服务等。
commands.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$ }
contacts.cfg
此文件包含 Nagios 的联系人及组信息。默认情况下,已经存在一个联系人 Nagios 管理员。
示例
define contact { contact_name nagiosadmin use generic-contact alias Nagios Admin email [email protected] } define contactgroup { contactgroup_name admins alias Nagios Administrators members nagiosadmin }
templates.cfg
此配置文件为您提供了一些示例对象定义模板,其他配置文件中的其他主机、服务、联系人等的定义都会参考这些模板。
timeperiods.cfg
此配置文件为您提供了一些示例时间段定义,您可以在主机、服务、联系人及依赖项定义中参考这些定义。
Nagios - 功能
Nagios 是一款具有多种功能的监控工具,如下所示:
Nagios Core 是开源的,因此可以免费使用。
功能强大的监控引擎,可以扩展和管理数千台主机和服务器。
全面的 Web 仪表板,提供完整网络组件和监控数据的可见性。
它具有多租户功能,多个用户可以访问 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,带有一个参数:'$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 守护进程定期处理的 commands 文件中来在 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 进程中的检查逻辑启动主动检查。为了监控远程机器上运行的主机和服务,Nagios 执行插件并告知要收集哪些信息。然后插件在远程机器上执行,在远程机器上收集所需信息并将其发送回 Nagios 守护进程。根据接收到的主机和服务状态,采取适当的操作。
下图显示了一个主动检查:
这些检查按 check_interval 和 retry_interval 定义的定期间隔执行。
被动检查由外部进程执行,并将结果返回给 Nagios 进行处理。
被动检查的工作原理如下:
外部应用程序检查主机/服务的状态并将结果写入外部命令文件。当 Nagios 守护进程读取外部命令文件时,它会读取并发送队列中的所有被动检查以供稍后处理。定期处理这些检查时,将根据检查结果中的信息发送通知或警报。
下图显示了一个被动检查:
因此,主动检查和被动检查之间的区别在于,主动检查由 Nagios 运行,而被动检查由外部应用程序运行。
当您无法定期监控主机/服务时,这些检查非常有用。
Nagios 存储其正在监控的主机和服务的状态,以确定它们是否正常工作。在许多情况下,故障将随机发生并且是暂时的;因此,Nagios 使用状态来检查主机或服务的当前状态。
有两种状态:
- 软状态
- 硬状态
软状态
当主机或服务在很短的时间内停止运行并且其状态未知或与先前状态不同时,则使用软状态。主机或服务将反复测试,直到状态永久为止。
硬状态
当执行 max_check_attempts 并且主机或服务的状态仍然不是 OK 时,则使用硬状态。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 插件使用的默认端口如下:
- check_nt (nsclient++) 12489
- NRPE 5666
- NSCA 5667
- NCPA 5693
- MSSQL 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”或“--critical”(严重阈值);
- “-H”或“--hostname”(要检查的主机名称)
多个 Nagios 插件同时运行并执行检查,为了使它们能够顺利地一起运行,Nagios 插件遵循状态代码。下表显示了退出代码状态及其描述:
退出代码 | 状态 | 描述 |
---|---|---|
0 | OK | 工作正常 |
1 | 警告 | 工作正常,但需要关注 |
2 | 严重 | 工作不正常 |
3 | 未知 | 当插件无法确定主机/服务的状态时 |
Nagios 插件使用选项进行配置。以下是 Nagios 插件接受的一些重要参数:
序号 | 选项和说明 |
---|---|
1 | -h, --help 提供帮助 |
2 | -V, --version 打印插件的确切版本 |
3 | -v, --verbose 使插件提供有关其正在执行的操作的更详细信息 |
4 | -t, --timeout 提供超时时间(以秒为单位);在此时间之后,插件将报告严重状态 |
5 | -w, --warning 提供插件特定警告状态的限制 |
6 | -c, --critical 提供插件特定严重状态的限制 |
7 | -H, --hostname 提供主机名、IP 地址或与之通信的 Unix 套接字 |
8 | -4, --use-ipv4 允许您使用 IPv4 进行网络连接 |
9 | -6, --use-ipv6 允许您使用 IPv6 进行网络连接 |
10 | -p, --port 用于连接到 TCP 或 UDP 端口 |
11 | -s, --send 提供将发送到服务器的字符串 |
12 | -e, --expect 提供服务器应发回的字符串 |
13 | -q, --quit 提供要发送到服务器以关闭连接的字符串 |
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插件完成。但是有些应用程序需要特殊的检查来监控它们,在这种情况下,您可以使用第三方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咨询公司,从事网络、数据中心、监控和VoIP业务。通过他们的产品,他们让小型企业看起来更大。他们的解决方案帮助您更好地管理客户关系,通过增加更多互动并提高客户满意度。他们说他们的业务是沟通,因此在正确的时间向客户传达正确的讯息对他们非常重要。
Bitnetix曾与一家从事电子邮件营销的客户合作。他们过去监控动态分配的AWS服务器,这些服务器负责向客户发送数千封电子邮件。他们之前使用Nagios core,但希望迁移到新的Nagios XI并与Chef集成,且零停机。将Nagios core上的实时状态配置迁移到Nagios XI中的相应检查存在挑战。但借助Nagios,他们能够使用集成了Chef的Nagios XI配置文件。他们能够将所有客户从Nagios core迁移到Nagios XI,且零停机。Nagios XI还可以与PagerDuty集成以发送即时通知。
EverWatch.global与Nagios
EverWatch.global是一家IT管理和咨询公司,帮助非营利组织和中小型组织。其总部位于纽约州罗切斯特。他们因其在Nagios方面的工作赢得了无数奖项。
EverWatch.global曾与一家年收入数十亿美元的电子商务零售客户合作。他们负责始终保持网站正常运行,监控购物车和结账功能,并在诽谤发生时向必要的工作人员发送通知。挑战在于其客户的服务器距离其位于纽约的总部500英里。为了在同一平台上监控生产、暂存、质量保证和开发,配置应该在两个区域都独一无二且相似。
借助Nagios,他们能够为设备和网络运营中心创建SSH防火墙规则。他们还能够检查诽谤事件并减少误报。通过在Nagios中配置事件处理程序,通知数量大幅减少。Nagios帮助他们将客户网站的年正常运行时间从85%提高到98%,这是一个巨大的成功。
“用实际美元计算,该公司因此获得了近1.25亿美元的额外销售额。”——Eric Loyd,EverWatch Global首席执行官。