Nagios 插件
插件有助于通过 Nagios 监控数据库、操作系统、应用程序、网络设备、协议。插件是已编译的可执行文件或脚本(Perl 或非 Perl),可扩展 Nagios 功能以监控服务器和主机。 Nagios 将执行一个插件来检查服务或主机的状态。 Nagios 可以在支持嵌入式 Perl 解释器的情况下进行编译,以执行 Perl 插件。没有它,Nagios 通过派生和执行插件作为外部命令来执行 Perl 和非 Perl 插件。
Nagios 插件的类型
Nagios 有以下插件可用:
官方 Nagios 插件-有 50 个官方 Nagios 插件。官方 Nagios 插件由官方 Nagios 插件团队开发和维护。
社区插件-数百名 Nagios 社区成员开发了 3,000 多个第三方 Nagios 插件。
自定义插件-您还可以编写自己的自定义插件。编写自定义插件必须遵循某些准则。
编写自定义 Nagios 插件的指南
在 Nagios 中编写自定义插件时,您需要遵循以下指南:
- 插件应提供"-V"命令行选项(验证配置更改)
- 只打印一行文本
- 打印诊断信息和部分帮助消息
- 网络插件使用 DEFAULT_SOCKET_TIMEOUT 超时
- "-v"或"--verbose"与详细程度有关
- "-t" 或 "--timeout" (插件超时);
- "-w"或"--warning"(警告阈值);
- "-c"或"--critical"(临界阈值);
- "-H"或"--hostname"(要检查的主机名)
多个 Nagios 插件同时运行和执行检查,为了它们一起顺利运行,Nagios 插件遵循一个状态代码。下面给出的表格告诉退出代码状态及其描述:
退出代码 | 状态 | 说明 |
0 | OK | 工作正常 |
1 | WARNING | 工作正常,但需要注意 |
2 | CRITICAL | 工作不正常 |
3 | UNKNOWN | 当插件无法确定主机/服务的状态时 |
Nagios 插件使用选项进行配置。以下是Nagios插件接受的几个重要参数:
选项和说明 |
-h,--help 这提供帮助 |
-V,--version 这会打印插件的确切版本 |
-v,--verbose 这使得插件提供关于它正在做什么的更详细的信息 |
-t,--timeout 这提供了超时时间(以秒为单位);过了这个时间,插件会报告CRITICAL状态 |
-w,--warning 这提供了插件特定的警告状态限制 |
-c,--critical 这为 CRITICAL 状态提供了插件特定的限制 |
-H,--hostname 这提供主机名、IP 地址或 Unix 套接字以与之通信 |
-4,--use-ipv4 这让您可以使用 IPv4 进行网络连接 |
-6,--use-ipv6 这让您可以使用 IPv6 进行网络连接 |
-p,--port 用于连接TCP或UDP端口 |
-s,--send 这提供了将发送到服务器的字符串 |
-e,--expect 这提供了应该从服务器发回的字符串 |
-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 插件完成。但是有些应用程序需要特殊检查来监视它们,在这种情况下,您可以使用 3rd 方 Nagios 插件,它可以对应用程序提供更复杂的检查。当您使用 Nagios 交易所的 3rd 方插件或从其他网站下载插件时,了解安全和许可问题很重要。
Nagios 守护进程在 NRPE(Nagios Remote Plugin Executor)中对远程机器运行检查。它允许您在其他机器上远程运行 Nagios 插件。您可以监控远程机器指标,例如磁盘使用情况、CPU ...