2
0
mirror of https://github.com/munin-monitoring/contrib.git synced 2018-11-08 00:59:34 +01:00
contrib-munin/plugins/other/mysql_innodb
Stig Sandbeck Mathisen dbe7684a67 Initial version
2011-12-18 15:10:05 +01:00

65 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
#
# Munin plugin to monitor free space in MySQL's InnoDB tablespace.
# Mostly useful if you use InnoDB on a block device, or if you for
# some reason don't want to do autoextend on the last file.
#
# 2007-03-18 Stig Sandbeck Mathisen <ssm@fnord.no>
#
# Configuration parameters for /etc/munin/plugin-conf.d/mysql_innodb,
# if you need to override the defaults below:
#
# [mysql_innodb]
# env.mysqlopts - Options to pass to mysql (host, username, password)
# env.warning - Generate a warning if free space goes below this level
# env.critical - Generate a critical if free space goes below this level
#
# For security reasons, this plugin uses its own schema with a simple,
# empty table using the InnoDB engine.
#
# You need to run this to get this plugin to work:
# mysql> CREATE DATABASE munin_innodb;
# mysql> USE munin_innodb
# mysql> CREATE TABLE something (anything int) ENGINE=InnoDB;
## Tunable parameters with defaults
MYSQL="${mysql:-/usr/bin/mysql}"
MYSQLOPTS="${mysqlopts:---user=munin --password=munin --host=localhost}"
WARNING=${warning:-2147483648} # 2GB
CRITICAL=${critical:-1073741824} # 1GB
## No user serviceable parts below
if [ "$1" = "config" ]; then
echo 'graph_title MySQL InnoDB free tablespace'
echo 'graph_args --base 1024'
echo 'graph_vlabel Bytes'
echo 'graph_category mysql'
echo 'graph_info Amount of free bytes in the InnoDB tablespace'
echo 'free.label Bytes free'
echo 'free.type GAUGE'
echo 'free.min 0'
echo 'free.warning' $WARNING:
echo 'free.critical' $CRITICAL:
exit 0
fi
# Get freespace from mysql
freespace=$($MYSQL $MYSQLOPTS --batch --skip-column-names --execute \
"SELECT table_comment FROM tables WHERE TABLE_SCHEMA = 'munin_innodb'" \
information_schema);
retval=$?
# Sanity checks
if (( retval > 0 )); then
echo "Error: mysql command returned status $retval" 1>&2
exit -1
fi
if [ -z "$freespace" ]; then
echo "Error: mysql command returned no output" 1>&2
exit -1
fi
# Return freespace
echo $freespace | awk '/InnoDB free:/ {print "free.value", $3 * 1024}'