78 lines
2.8 KiB
Bash
Executable File
78 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright (C) 2019 tribe29 GmbH - License: GNU General Public License v2
|
|
# This file is part of Checkmk (https://checkmk.com). It is subject to the terms and
|
|
# conditions defined in the file COPYING, which is part of this source code package.
|
|
|
|
# Reason for this no-op: shellcheck disable=... before the first command disables the error for the
|
|
# entire script.
|
|
:
|
|
|
|
# Disable unused variable error (needed to keep track of version)
|
|
# shellcheck disable=SC2034
|
|
CMK_VERSION="2.1.0p18"
|
|
|
|
# gets optional socket as argument
|
|
do_query() {
|
|
|
|
# we use the sockets full name as instance name:
|
|
INSTANCE_HEADER="[[$2]]"
|
|
|
|
# Check if mysqld is running and root password setup
|
|
echo "<<<mysql_ping>>>"
|
|
echo "$INSTANCE_HEADER"
|
|
mysqladmin --defaults-extra-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} ping 2>&1 || return
|
|
|
|
echo "<<<mysql>>>"
|
|
echo "$INSTANCE_HEADER"
|
|
mysql --defaults-extra-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -sN \
|
|
-e "show global status ; show global variables ;"
|
|
|
|
echo "<<<mysql_capacity>>>"
|
|
echo "$INSTANCE_HEADER"
|
|
mysql --defaults-extra-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -sN \
|
|
-e "SELECT table_schema, sum(data_length + index_length), sum(data_free)
|
|
FROM information_schema.TABLES GROUP BY table_schema"
|
|
|
|
echo "<<<mysql_slave>>>"
|
|
echo "$INSTANCE_HEADER"
|
|
mysql --defaults-extra-file="$MK_CONFDIR"/mysql.cfg ${1:+--socket="$1"} -s \
|
|
-e "show slave status\G"
|
|
|
|
}
|
|
|
|
if [ ! -f "${MK_CONFDIR}/mysql.local.cfg" ]; then
|
|
cat <<EOF >"${MK_CONFDIR}/mysql.local.cfg"
|
|
# This file is created because some versions of mysqladmin
|
|
# issue a warning if there are missing includes.
|
|
EOF
|
|
fi
|
|
|
|
if type mysqladmin >/dev/null; then
|
|
mysql_socket_string=$(grep -F -h socket "$MK_CONFDIR"/mysql{.local,}.cfg | sed -ne 's/.*socket=\([^ ]*\).*/\1/p')
|
|
alias_string=$(grep -F -h alias "$MK_CONFDIR"/mysql{.local,}.cfg | sed -ne 's/.*aliases=\([^ ]*\).*/\1/p')
|
|
|
|
if [ -z "$mysql_socket_string" ]; then
|
|
mysql_socket_string=$(ps -fww -C mysqld | grep "socket" | sed -ne 's/.*socket=\([^ ]*\).*/\1/p')
|
|
fi
|
|
if [ -z "$mysql_socket_string" ]; then
|
|
do_query "" ""
|
|
else
|
|
IFS=" " mapfile -t mysql_sockets <<<"$mysql_socket_string"
|
|
IFS="," read -r -a aliases <<<"$alias_string"
|
|
|
|
for i in "${!mysql_sockets[@]}"; do
|
|
socket="${mysql_sockets[i]}"
|
|
alias="${aliases[i]}"
|
|
if [ -z "$alias" ]; then
|
|
do_query "$socket" "$socket"
|
|
else
|
|
do_query "$socket" "$alias"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# In async execution the cache file would be removed if the plugin exits with non-zero exit code.
|
|
# Avoid this from happening, just because the last mysql command failed (due to missing permissions).
|
|
exit 0
|
|
fi
|