让 Monit 检查 OpenVPN 客户端连接状态

让 Monit 检查 OpenVPN 客户端连接状态

我们经营着一家多站点企业,每个站点都连接到中央 OpenVPN 服务器以提供对内部系统的访问。我目前正在使用 Monit 检查 OpenVPN 客户端是否正在运行以及远程服务器是否正常工作,但由于一些站点运行在不稳定的 4G 调制解调器上,VPN 连接有时会中断而进程不会终止,这让 monit 认为一切正常。对 VPN 网关进行简单的 ping 即可显示连接是否正常工作,但当我阅读 monit 文档时,ping 检查似乎不能与进程检查混合使用,因此我可以添加检查但实际上无法使用它重新启动进程。

是否存在一些我所忽略的明显方法可以做到这一点,或者是否有其他方法可以使 OpenVPN 能够自行从此类问题中恢复?

这是我的监控检查(基本上是从手册中剪切粘贴的):

check process openvpn with pidfile /var/run/openvpn.client.pid
    start program = "/etc/init.d/openvpn start"
    stop  program = "/etc/init.d/openvpn stop"
    if failed host *my-vpn-gateway* port 1194 type udp then restart
    group net
    depends openvpn_init
    depends openvpn_bin

check file openvpn_init with path /etc/init.d/openvpn
    group net

check file openvpn_bin with path /usr/sbin/openvpn
    group net

答案1

解决办法似乎是进行 2 次检查:1 次检查进程,1 次检查确保网关主机可访问

check process vpn-network with pidfile /var/run/vpn-network.pid
   start program = "/etc/init.d/openvpn start vpn-network.com"
   stop program = "/etc/init.d/openvpn stop vpn-network.com"
 
check host tap0 with address 1.1.1.1
    start program = "/etc/init.d/openvpn start vpn-network.com"
    stop program = "/etc/init.d/openvpn stop vpn-network.com"
    if failed
        icmp type echo count 5 with timeout 15 seconds
    then restart

相关内容