【发布时间】:2015-12-08 10:03:14
【问题描述】:
我想在将成为centralized server 的服务器上设置monit 以监视在remote servers 上运行的进程。我检查了许多与 setup monit 相关的文档,但找不到如何设置远程服务器进程。例如,centralized monit server 应该监视在A server 上运行的nginx,在B server 上运行的mongod 等等。有什么建议吗?
【问题讨论】:
我想在将成为centralized server 的服务器上设置monit 以监视在remote servers 上运行的进程。我检查了许多与 setup monit 相关的文档,但找不到如何设置远程服务器进程。例如,centralized monit server 应该监视在A server 上运行的nginx,在B server 上运行的mongod 等等。有什么建议吗?
【问题讨论】:
在文档中,Monit 可以使用 tcp 或 udp 远程测试连接,您可以做的是提供一个小型状态文件,该文件会针对您打算监控的每项技术进行刷新,然后让 Monit 命中通过http等方式获取status文件,可以如下使用:
check host nginxserver with address www.nginxserver.com
if failed port 80 protocol http
and request "/some_file"
then alert
由于您正在测试可以通过上述方式轻松完成的 Web 服务器。作为说明,以下是有关Monit连接测试的部分:
连接测试 Monit 能够通过以下方式执行连接测试 网络端口或通过 Unix 套接字。连接测试只能是 在检查过程中或在检查主机服务条目中使用 监控控制文件。
如果服务侦听一个或多个套接字,Monit 可以连接到 端口(使用 tcp 或 udp)并验证服务是否接受 一个连接,并且可以从 插座。如果连接不被接受或连接有问题 socket i/o,Monit 会假设有问题并执行 指定的动作。如果 Monit 是用 openssl 编译的,那么基于 ssl 也可以测试网络服务。
用于连接测试的语句的完整语法如下 如下(关键字大写,可选语句 [括号]),
IF FAILED [host] 端口 [type] [protocol|{send/expect}+] [timeout] [重试] [[] CYCLES] THEN action [ELSE IF SUCCEEDED [[] 循环] 然后行动]
或者对于 Unix 套接字,
如果失败 [unixsocket] [type] [protocol|{send/expect}+] [timeout] [重试] [[] CYCLES] THEN action [ELSE IF SUCCEEDED [[] 循环] 然后行动]
host:HOST 主机名。 (可选)指定要连接的主机。如果 如果使用此测试,则未给出主机,则假定为 localhost 在进程条目内。如果在远程主机内部使用此测试 条目,则假定条目的远程主机。虽然主机是 用于在运行的 HTTP 服务器中测试基于名称的虚拟主机 在本地或远程主机上,它确实允许连接语句 用于测试在另一台机器上运行的服务器。这可能有用; 例如,如果您使用 Apache httpd 作为前端和 application-server 作为在另一台机器上运行的后端,这 语句可用于测试后端服务器是否正在运行,并且 如果不发出警报。
端口:端口号。要连接的端口号
unixsocket:UNIXSOCKET 路径。指定 Unix 套接字的路径。 基于 Unix 套接字的服务器总是在本地机器上运行并执行 不使用端口。
【讨论】: