Monit is a free open source utility for managing and monitoring, processes, files, directories and filesystems on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations. (unofficial mirror)
I want monitor MariaDB with monit tools. my monit script is:
check process mariadb_pid with pidfile /var/lib/MySQL/db1.pid
check program telnet with path "/root/telnet.sh"
if status eq 99 then exec "/usr/bin/systemctl restart mariadb.service"
What I want is this, if MariaDB this server failed then execute my script /root/tenlet.sh and check MariaDB another server (by telnet script), then if the database of other servers is up, finally start MariaDB on this server.
and telnet script is:
#!/bin/bash
cat /root/ips | \
while read host port; do
result=$(bash -c 'exec 3<> /dev/tcp/'$host'/'$port';echo $?' 2>/dev/null)
echo $result
if [ "$result" != "0" ]; then
exit 99
fi
done
ips file is:
192.168.10.10 3306
192.168.10.20 3306
Now, it is expected if mariadb ip1 and ip2 in ips file is up, then execute
if status eq 99 then exec "/usr/bin/systemctl restart mariadb.service"
But not running. please look monit log.
[EST Mar 5 00:34:19] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:24] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:29] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:34] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:39] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:44] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:49] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:54] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:34:59] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:04] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:09] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:14] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:19] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:24] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:29] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:34] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:39] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:44] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:49] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:35:54] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:36:00] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:36:05] error : 'telnet' status failed (99) -- 1
also, when restart monit, This line runs for the first time.
[EST Mar 5 00:39:15] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:20] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:25] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:26] info : Reinitializing monit daemon
[EST Mar 5 00:39:26] info : Reinitializing Monit -- control file '/etc/monitrc
[EST Mar 5 00:39:26] info : 'db1' Monit reloaded
[EST Mar 5 00:39:31] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:31] info : 'telnet' exec: '/usr/bin/systemctl restart mariadb.service'
[EST Mar 5 00:39:36] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:41] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:46] error : 'telnet' status failed (99) -- 1
[EST Mar 5 00:39:51] error : 'telnet' status failed (99) -- 1
I want monitor
MariaDB
with monit tools. my monit script is:What I want is this, if MariaDB this server failed then execute my script
/root/tenlet.sh
and check MariaDB another server (by telnet script), then if the database of other servers is up, finally start MariaDB on this server.and telnet script is:
ips file is:
Now, it is expected if
mariadb
ip1 and ip2 inips
file is up, then executeif status eq 99 then exec "/usr/bin/systemctl restart mariadb.service"
But not running. please look monit log.
also, when restart monit, This line runs for the first time.
Does anyone have any experience in this field?