我已设置 nagios 警报,通过 jabber 使用 http 链接发送至 ack。
是否有可能我可以从远程工作站上的终端运行一个脚本,该脚本以主机名作为参数并确认警报?
./ack 主机名
虽然看似平凡,但好处却有三点。首先,减轻了 nagios 的 http 负载。其次,nagios http 页面可能需要 10-20 秒才能加载,因此我想在这方面节省时间。第三,避免使用较慢的鼠标 + Web 界面 + Firefox/其他令人烦恼的慢速浏览器。
理想情况下,我希望将脚本绑定到键盘快捷键,以便简单地确认最新的警报。最后,我希望从操纵杆、按钮等获取输入,并将其中一个连接到绑定到脚本的大红色按钮,这样我只需按下按钮即可确认最新的 nagios 警报。(如果按钮外壳上有一个屏幕,显示正在确认的警报文本,那也太酷了,哈哈)
随便你怎么取笑我,但这对我来说确实很有用。如果我可以节省每条警报 5 秒钟的时间,而我每天需要确认 200 条警报,那么每天就可以节省 15 分钟。系统管理员的重点不就是自动化可以自动化的事情吗?
谢谢!
答案1
这绝对是可能的,但请记住,你正在深入研究 Nagios 的内部结构,学习曲线很陡峭。这应该是一个有趣且有益的学习曲线。
您可以使用 Nagios外部命令允许外部程序将命令插入 Nagios 命令队列。有许多命令。将其与远程访问以及命令行和 shell 脚本的可能性结合起来,可能性就相当大了。
以下是一个示例:从远程框,通过 SSH 进入 Nagios 主机。该命令~/bin/ack
将插入一条命令到命令文件队列。Nagios 随后将读取 command_file,并执行您的命令。该命令可能类似于:
ssh nagios.example.org ~/bin/ack hostA
另一个例子:要从远程主机禁用 Nagios 上的所有通知,命令如下:
ssh nagios.example.org "echo \"[\"
日期 +%s\"] DISABLE_NOTIFICATIONS\" > /var/spool/nagios/cmd/nagios.cmd"
理论上,你也可以用其他守护进程来做这件事,利用 Netcat 监听端口并将命令导入文件,甚至可以使用 Jabber、IRC 等来做这件事。我知道有一个小组使用 xinitd 监听某些端口来做这件事。非常小心考虑允许未经身份验证的远程访问您的 Nagios 主机的安全隐患。
Nagios 手册中有更多关于外部命令的信息。请参阅Nagios Core:外部命令
以下是一个例子执行来自 Munin 的命令。他们利用国家计算机协会
答案2
如果安全性不是你的首要任务,那么每边一些 netcat + xinetd + 脚本就可以了。如果你需要一些安全性和/或你不想自己编写,你可能想要给国家疾病预防控制中心或者国家安全局试试看。或者看看这个名为nagios_commander
答案3
鉴于标准核心中已分发的内容,我认为不行。但如果您扩展网站的 cgi.c 和支持模块代码,您也许可以做到这一点。URI 可能看起来不太好看。一个可能的问题是请求身份验证以授权执行命令。
您是否检查过 nagios 交换站点并可能在那里发布了一些内容?