arnaudsj / monit

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)
http://mmonit.com/monit/
Other
515 stars 63 forks source link

monit and run script #11

Open DFazeli opened 6 years ago

DFazeli commented 6 years ago

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  

Does anyone have any experience in this field?