Nagios - 附加组件/插件
插件帮助使用 Nagios 监控数据库、操作系统、应用程序、网络设备和协议。插件是编译后的可执行文件或脚本(Perl 或非 Perl),它扩展了 Nagios 的功能以监控服务器和主机。Nagios 将执行插件以检查服务或主机的状态。Nagios 可以编译为支持嵌入式 Perl 解释器以执行 Perl 插件。如果没有,Nagios 将通过 fork 并将插件作为外部命令执行来执行 Perl 和非 Perl 插件。
Nagios 插件类型
Nagios 提供以下插件:
官方 Nagios 插件 - 有 50 个官方 Nagios 插件。官方 Nagios 插件由官方 Nagios 插件团队开发和维护。
社区插件 - 有超过 3000 个由数百名 Nagios 社区成员开发的第三方 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 插件接受的一些重要参数:
序号 | 选项和描述 |
---|---|
1 | -h, --help 提供帮助 |
2 | -V, --version 打印插件的精确版本 |
3 | -v, --verbose 使插件提供关于其正在执行的操作的更详细信息 |
4 | -t, --timeout 提供超时时间(以秒为单位);超过此时间后,插件将报告 CRITICAL 状态 |
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 上的第三方插件或从其他网站下载插件时,了解安全和许可问题非常重要。