我花了好几天的时间阅读多页神秘莫测、难以理解的文档以及不完整或记录不全的示例。
我找不到从哪里开始——这令人困惑!
基本上,我只想在目标服务器上运行一个简单的 shell 脚本,并让 nagios 根据结果采取行动。我不想学习“C”并花几个月的时间开发插件,这就是它的样子。
例如我想写一个脚本来执行“select count(*) from loaded_loggedin_users”
并让 nagios graph 绘制结果数字(甚至发出警报)
我可以在数据库机器上编写一个 5 行脚本,该脚本可在大约 10 秒内返回状态和信息。问题是如何让 Naigos 读取这个值。
我读过很多关于插件的信息,也看过很多插件“脚本”,但这些信息从来没有提到插件在哪里运行,它们是在服务器上运行,还是在客户端上运行,还是两者都运行,现在它们是如何配置的。我不想让服务器拥有数据库密码,所以我只想在目标服务器上编写一个任意的 shell 脚本并监控结果。
目标服务器已经安装了称为 nrpe 的东西,我希望它可以让我编写一个简单的 shell 脚本,但它的所有“命令”都是二进制的,而且完全是神秘的,我找不到任何概述文档。
有人能建议从哪里开始吗?有人写过“hello world”脚本吗?我找不到返回任何相关结果的谷歌搜索字符串。难道地球上没有人想通过nagios监控简单自定义脚本的结果吗?
更好的是有一个 mysql 插件,它允许您插入自己的一些 sql,但我找不到类似的东西。
谢谢!
答案1
是的,您可以在目标服务器上运行 nrpe 服务器。在 nagios 服务器上,您可以使用 check_nrpe 插件,该插件以命令为参数。此命令应在目标服务器上定义 nrpe 服务器。因此,您的脚本将由 nrpe 服务器在目标服务器上执行。
以下是一个例子:
nrpe.cfg
您可以在目标服务器的文件中定义如下命令:
command[check_my_query]=/usr/lib/nagios/plugins/check_my_query.sh
您需要在目标服务器上编写脚本/usr/lib/nagios/plugins/check_my_query.sh
。当然,您可以照常传递任何所需的参数。
在nagios服务器上,定义检查命令如下:
define service{
use generic-service
host_name My_Target_Server
service_description My_Query
check_command check_nrpe_1arg!check_my_query
notifications_enabled 1
}
check_nrpe_1arg
您需要使用在 nagios 配置中找到的正确名称。它可以被定义为:
define command {
command_name check_nrpe_1arg
command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 15
}
答案2
听起来您真的想了解如何使用 check_nrpe 和一组自定义的参数应用于现有插件。
首先在您的 mysql 服务器上安装 mysql 检查插件。确定您要执行的命令以及所需的任何参数。记下这些设置。
在您的 mysql 服务器上安装 NRPE 守护程序。如有必要,请在 iptables 中打开端口 5666。编辑文件 /etc/nagios/nrpe.cfg 并添加如下行。
command[annoying_mysql_check]=/usr/lib/nagios/plugins/check_mysql -w 5 -c 10 "select top 10 from .. order by"
从您的 Nagios 服务器(在命令行)
check_nrpe -H <your mysql host> -c annoying_mysql_check
这将返回您在上面第一组说明中找到的结果。
一旦您在 Nagios 服务器上的命令行中运行此命令,请将其转换为 Nagios 使用的语法和配置文件,以自动安排检查。这是核心 Nagios 文档的一部分。
答案3
http://nagiosplugins.org/man/check_mysql_query这是 Ubuntu 上 Nagios 软件包的一部分。不确定它是否在 CentOS 的 Nagios 软件包中(它可能与直接的 Nagios 服务器软件包不同)。
检查输出只需将 check_mysql_query 作为“命令”放入 Nagios 中,然后让 Nagios 服务器运行它即可。您可以从任何可以访问 MySQL 服务器的机器执行该命令,无论是 Nagios 服务器还是其他机器(在这种情况下,您需要在该机器上设置 NRPE,Nagios 服务器将访问该机器来运行该命令)。
制图是另一回事。您可以使用 nagiosgraph,但我发现设置它非常麻烦。还有 Munin。