Skip to content

Commit

Permalink
Merge "Close-Bug: #1443708. This is an enhancement to separate cmon t…
Browse files Browse the repository at this point in the history
…ables from galera cluster. Cluster monitor tables keep track of the galera cluster and need to be replicated" into R2.20
  • Loading branch information
Zuul authored and opencontrail-ci-admin committed Apr 20, 2015
2 parents 43586ed + 6bc5c7e commit 44e99ff
Show file tree
Hide file tree
Showing 5 changed files with 4,786 additions and 1 deletion.
195 changes: 195 additions & 0 deletions common/control_files/cmon
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
#!/bin/bash
# chkconfig: 235 99 20
# description: cmon start/stop script
### BEGIN INIT INFO
# Provides: cmon
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: cmon - cluster monitor
### END INIT INFO

# ClusterControl debian initscript
# Copyright (C) 2011-2014 severalnines.com

SBINDIR=/usr/local/cmon/sbin

CMON_CNF="/etc/cmon.cnf"

RUNNING_DIR=`grep -i pidfile $CMON_CNF | awk -F'=' '{print $2}'`

if [ -z "$RUNNING_DIR" ]; then
RUNNING_DIR="/var/run"
fi

PIDFILE=${RUNNING_DIR}/cmon.pid

PROGNAME="cmon"
mkdir -p /var/run/cmon
OPTIONS="-r /var/run/cmon"
STARTCMON="$SBINDIR/$PROGNAME $OPTIONS"
LOCKFILE=""
if [ -d /var/lock/subsys ]; then
LOCKFILE=/var/lock/subsys/cmon
else
LOCKFILE=/var/lock/cmon
fi

RETVAL=0
pidof_prog() {
if [ -f $PIDFILE ]; then
if pidof $PROGNAME | tr ' ' '\n' | grep $(cat $PIDFILE); then
return 0
fi
fi
return 1
}

pidof_prog2() {
if pidof $PROGNAME | tr ' ' '\n' ; then
return 0
fi
return 1
}

start() {
echo -n "Starting $PROGNAME $OPTIONS :"
PID=`pgrep -xf "$SBINDIR/$PROGNAME $OPTIONS"`
if [ -n "$PID" ]; then
printf "$PROGNAME is already running with pid $PID\n"
return 0
else
export LD_LIBRARY_PATH=$LIBDIR
if [ ! -f $SBINDIR/$PROGNAME ]; then
echo -n "$PROGNAME executable not found in $SBINDIR"
fi
LC_ALL=C $STARTCMON
if [ $? -ne 0 ]; then
echo -n "Starting $PROGNAME $OPTIONS :"
echo " failed"
return 0
fi
echo -n "Starting $PROGNAME $OPTIONS :"
sync
#echo $! > $PIDFILE
touch $LOCKFILE
sleep 1
PID=`cat $PIDFILE`
if [ "$PID" ]; then
sed -i '/pidof/ s/# *//' /etc/cron.d/cmon &> /dev/null
echo " ok"
return 1
else
echo " failed"
return 0
fi
fi
}

stop() {
echo -n "Stopping $PROGNAME : "
sed -i '/^\*.*pidof/s/^/# /' /etc/cron.d/cmon &> /dev/null
PID=$(pidof_prog)
KILLED=0
if [ -n "$PID" ]; then
kill -15 $PID 2>&1
KILLED=1
fi

if [ $KILLED -eq 1 ]; then
I=0
while [ $I -lt 60 ];
do
PID=$(pidof_prog)
if [ -z "$PID" ]; then
echo " ok"
return 1
fi
I=`expr $I + 1`
echo -n .
sleep 1
done
fi

PID=`pgrep -xf "$SBINDIR/$PROGNAME $OPTIONS"`
if [ -n "$PID" ]; then
pkill -9 -xf "$SBINDIR/$PROGNAME $OPTIONS"
else
# `rm -f ${PIDFILE}`
`rm -f ${LOCKFILE}`
sleep 2
echo " failed"
return 0
fi
i=1
while [ "`pgrep -xf "$SBINDIR/$PROGNAME $OPTIONS"`" ];
do
if [ $i -eq 60 ]; then
echo "giving up after 60 secods"
return 0
fi
i=`expr $i + 1`
sleep 1
done
PID=`pgrep -xf "$SBINDIR/$PROGNAME $OPTIONS"`
if [ -n "$PID" ]; then
sleep 2
echo " failed"
return 0
else
# `rm -f ${PIDFILE}`
`rm -f ${LOCKFILE}`
sleep 2
echo " ok"
return 1
fi
}

case "$1" in
init|initial)
initial
;;
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
status)
PID=`pgrep -xf "$SBINDIR/$PROGNAME $OPTIONS"`
if [ -z "$PID" ]; then
PID=$(pidof_prog)
fi
if [ -n "$PID" ]; then
echo "$PROGNAME is running (pid $PID)."
else
echo "$PROGNAME is NOT running."
fi
RETVAL=$?
;;
condrestart|try-restart)
PID=`pgrep -xf "$SBINDIR/$PROGNAME $OPTIONS"`
if [ -n "$PID" ]; then
stop
sleep 2
start
echo "$PROGNAME is running (pid $PID)."
fi
RETVAL=$?
;;
restart|reload|force-reload)
stop
sleep 2
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac

exit $?

69 changes: 69 additions & 0 deletions common/control_files/cmon_data.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
USE cmon;

set @cid:=1;

INSERT IGNORE INTO cmon_cluster_counters(id, var, enabled) VALUES (1,'ABORTS','1'),(2,'COMBINED','1'),(3,'COMMITS','1'),(4,'OPERATIONS','1'),(5,'RANGE_SCANS','1'),(6,'READS_ALL','1'),(7,'SIMPLE_READS','1'),(8,'TABLE_SCANS','1'),(9,'TRANSACTIONS','1'),(10,'WRITES','1');

DELETE FROM cmon_mysql_counters;
DELETE FROM cmon_mysql_graphs;
DELETE FROM cluster_event_types;
INSERT IGNORE INTO `cluster_event_types` VALUES ('ArbitResult'),('ArbitState'),('CM_REGCONF'),('CM_REGREF'),('CommunicationClosed'),('CommunicationOpened'),('Connected'),('ConnectedApiVersion'),('CopyDict'),('CopyFragDone'),('CopyFragsCompleted'),('CopyFragsStared'),('Disconnected'),('FIND_NEIGHBOURS'),('GCP_TakeoverCompleted'),('GCP_TakeoverStarted'),('LCP_TakeoverCompleted'),('LCP_TakeoverStarted'),('LocalCheckpointCompleted'),('LocalCheckpointStarted'),('NodeFailCompleted'),('NODE_FAILREP'),('StartCompleted'),('StartPhaseCompleted'),('StartREDOLog'),('StopCompleted'),('StopStarted');
INSERT IGNORE INTO `cluster_severity_types` VALUES ('ALERT'),('CRITICAL'),('DEBUG'),('ERROR'),('INFO'),('WARNING');

INSERT IGNORE INTO `cmon_mysql_graphs` VALUES (1,'ABORTED_CLIENTS'),(2,'ABORTED_CONNECTS'),(3,'QUERIES'),(4,'OPENED_TABLES'),(7,'CREATED_TMP_DISK_TABLES'),(8,'CREATED_TMP_TABLES'),(5,'THREADS_CONNECTED'),(6,'THREADS_RUNNING');
INSERT IGNORE INTO `cmon_cluster_graphs` VALUES (1,'COMBINED'),(5,'COMMITS'),(2,'OPERATIONS'),(4,'RANGE_SCANS'),(6,'READS_ALL'),(8,'SIMPLE_READS'),(3,'TRANSACTIONS'),(7,'WRITES');


delete from mysql_states;

INSERT IGNORE INTO mysql_states(id,name,description) VALUES(0, 'MYSQL_OK', 'OK');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(1, 'MYSQL_DISCONNECTED', 'MySQL Server is disconnected');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(2, 'MYSQL_REPL_LAG', 'Replication is lagging behind');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(3, 'MYSQL_REPL_FAILED', 'Replication is stopped');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(4, 'MYSQL_REPL_ACTION_NEEDED', 'Check IO and SQL Thread, slave may have to be rebuilt.');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(5, 'MYSQL_REPL_REBUILD_NEEDED', 'Rebuild slave is needed');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(6, 'MYSQL_REPL_REBUILDING', 'Rebuilding slave');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(7, 'MYSQL_REPL_REBUILD_FAILED', 'Rebuild slave failed - try again');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(8, 'MYSQL_REPL_FASTFORWARD', 'Skipping ahead to a good position - data will be lost');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(9, 'MYSQL_REPL_USER_STOPPED', 'User initiated stop of slave');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(10, 'MYSQL_REPL_RESUME_SLAVE', 'Slave can be resumed now');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(11, 'MYSQL_GALERA_FAILED', 'Galera failed on node');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(12, 'MYSQL_GALERA_NODE_RECOVERY', 'Node recovery needed<br/>giving Galera a chance first');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(13, 'MYSQL_GALERA_CLUSTER_RECOVERY', 'Cluster recovery needed<br/>giving Galera a chance first<br/>Check /var/log/cmon.log');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(14, 'MYSQL_GALERA_READ_ONLY', 'Read-only');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(15, 'MYSQL_GALERA_NODE_RECOVERING', 'Galera node recovery in progress');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(16, 'MYSQL_GALERA_CLUSTER_RECOVERING', 'Galera cluster recovery in progress');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(17, 'MYSQL_GALERA_USER_SHUTDOWN', 'User initiated shutdown');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(18, 'MYSQL_CLUSTER_NOT_CONNECTED', 'Node not connected to NDB!<br/>Check http://support.severalnines.com/entries/21854907-node-not-connected-to-ndb for suggestions.');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(19, 'MYSQL_USER_SHUTDOWN', 'User initiated shutdown');
INSERT IGNORE INTO mysql_states(id,name,description) VALUES(20, 'MYSQL_GALERA_BLOCKED', 'Galera recovery blocked');


INSERT IGNORE INTO cmon_daily_job(cid,exectime,command) VALUES(1,'02:00',0);


INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'CPU_WARNING', '80');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'CPU_CRITICAL', '90');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'RAM_WARNING', '80');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'RAM_CRITICAL', '90');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'DISKSPACE_WARNING', '80');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'DISKSPACE_CRITICAL', '90');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'SWAPSPACE_WARNING', '5');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'SWAPSPACE_CRITICAL', '20');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'MYSQLMEMORY_WARNING', '80');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'MYSQLMEMORY_CRITICAL', '90');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'CMON_USE_MAIL', '0');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'CMON_MAIL_SENDER', '');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'ENABLE_DBGROWTH', '1');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'HTTP_PROXY', '');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'CCBINDIR', '');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'CMON_DB', 'cmon');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'SSH_OPTS_BG', '');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'MULTI_TENANT', 'yes');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'MYSQL_REPLICATION_AUTO_FAILOVER', '1');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'BACKUP_RETENTION', '7');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'GALERA_PORT', '4567');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'QUERY_SAMPLE_INTERVAL', '1');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'LONG_QUERY_TIME', '0.5');
INSERT IGNORE INTO cmon_configuration(cid, param, value) VALUES(@cid,'LOG_QUERIES_NOT_USING_INDEXES', '1');

0 comments on commit 44e99ff

Please sign in to comment.