[MXS-915] Monitor external script set no command line arguments Created: 2016-10-14  Updated: 2017-02-07  Resolved: 2017-02-07

Status: Closed
Project: MariaDB MaxScale
Component/s: maxadmin, Monitor
Affects Version/s: 1.3.0
Fix Version/s: N/A

Type: Bug Priority: Major
Reporter: Shaun Adlam Assignee: markus makela
Resolution: Won't Fix Votes: 0
Labels: None
Environment:

Repository: Databases (openSUSE_13.1)
Name: MaxScale
Version: 1.3.0-4.2
Arch: i586
Vendor: obs://build.opensuse.org/server:database
Installed: Yes
Status: up-to-date



 Description   

The command line arguments not set and I need it in the external script.

maxscale.cnf

[Multi-Master Monitor]
type=monitor
module=mmmon
servers=GRAANTOETS,PHPDEV,PHPPRD,201W01,202W01
user=maxscale
passwd=xxx
monitor_interval=1000
script=/home/mail_to_admin.sh --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
events=master_down,master_up, slave_up, server_down ,server_up,lost_master,lost_slave,new_master,new_slave,server_down,server_up,synced_down,synced_up
disable_master_role_setting=true

and mail_to_admin.sh

#!/bin/bash

failover_master.sh

ARGS=$(getopt -o '' --long 'event:,initiator:,nodelist:' – "$@")
eval set – "$ARGS"

while true; do
case "$1" in
--event)
shift;
event=$1
shift;
;;
--initiator)
shift;
initiator=$1
shift;
;;
--nodelist)
shift;
nodelist=$1
shift;
;;
--)
shift;
break;
;;
esac
done

candidate=echo "$nodelist" | awk -F':' '

{print $1}'
maxscale_host=echo "$initiator" | awk F'' '{print $5}'
maxscale_host=echo "$maxscale_host" | awk -F':' '{print $1}

'

echo 'candidate' $candidate >> /home/output.log
echo 'maxscale_host' $maxscale_host >> /home/output.log

output.log

candidate $NODELIST
maxscale_host
candidate $NODELIST
maxscale_host
candidate $NODELIST
maxscale_host
candidate $NODELIST
maxscale_host
candidate $NODELIST
maxscale_host
candidate $NODELIST

It looks like maxscale called the script but set the arguments to a string that is "$NODELIST"

Here is another test:

maxscale -d
Info : MaxScale will be run in the terminal process.
Configuration file : /etc/maxscale.cnf
Log directory : /var/log/maxscale
Data directory : /var/lib/maxscale/data
Module directory : /usr/lib/maxscale
Service cache : /var/cache/maxscale

in the log:

2016-10-13 08:45:38 notice : Initialise the Multi-Master Monitor module V1.1.1.

2016-10-13 08:45:38 notice : Loaded module mmmon: V1.1.1 from /usr/lib/maxscale/libmmmon.so

MaxScale> list servers
Servers.
--------------------------------------------------------------------
Server | Address | Port | Connections | Status
--------------------------------------------------------------------
GRAANTOETS | 172.16.3.xxx | 3306 | 0 | Master, Running
201W01 | 172.17.5.xxx | 3306 | 0 | Master, Running
202W01 | 172.20.7.xxx | 3306 | 0 | Master, Running
PHPDEV | 172.16.2.xxx | 3306 | 0 | Master, Running
PHPPRD | 172.16.2.xxx | 3306 | 0 | Master, Running
--------------------------------------------------------------------

When I stop 201w01 the script is called with the following:

list servers
Servers.
--------------------------------------------------------------------
Server | Address | Port | Connections | Status
--------------------------------------------------------------------
GRAANTOETS | 172.16.3.xxx | 3306 | 0 | Master, Running
201W01 | 172.17.5.xxx | 3306 | 0 | Master, Running
202W01 | 172.20.7.xxx | 3306 | 0 | Down
PHPDEV | 172.16.2.xxx | 3306 | 0 | Master, Running
PHPPRD | 172.16.2.xxx | 3306 | 0 | Master, Running
--------------------------------------------------------------------

I tested echo $# $@ >> my_debug.log :

3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST
3 --event=$EVENT --initiator=$INITIATOR --nodelist=$NODELIST

The script is called by not logged in the maxscale log file, i dont know if I'm doing something wrong because I'm new to maxscale.



 Comments   
Comment by markus makela [ 2016-10-14 ]

If you are using 1.3.0, I recommend upgrading to 1.4.3 and testing again.

Comment by Shaun Adlam [ 2016-10-14 ]

I tried to upgrade but only 1.3 is available for opensuse.

Comment by Johan Wikman [ 2017-02-07 ]

Closing as, on the one hand, 1.3 is an old version and, on the other hand, we do not provide openSuse binaries.

Generated at Thu Feb 08 04:02:52 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.