PluginPortrait/mysql_size: mysql_size.4

File mysql_size.4, 1.8 KB (added by david82, at 2008-06-27T15:01:08+02:00)

new version, properly escapes tablenames containing sprecial chars (such as '-')

Line 
1#!/bin/sh
2#
3# Plugin to monitor the size of databases in a mysql-server.
4#
5# Copyright: Rune Nordbøe Skillingstad <rune.skillingstad@ntnu.no>
6#
7# Parameters supported:
8#
9#       config
10#       autoconf
11#
12# Configuration variables
13#
14#       mysqlopts    - Options to pass to mysql
15#
16#%# family=auto
17#%# capabilities=autoconf
18
19MYSQLOPTS="$mysqlopts"
20MYSQL=${mysql:-mysql}
21MYSQL_VER="4.1"
22
23if [ "$1" = "autoconf" ]; then
24        $MYSQL --version 2>/dev/null >/dev/null
25        if [ $? -eq 0 ]
26        then
27                $MYSQL $MYSQLOPTS -s -e "SHOW TABLE STATUS" 2>/dev/null >/dev/null
28                if [ $? -eq 0 ]
29                then
30                        echo yes
31                        exit 0
32                else
33                        echo "no (could not connect to mysql)"
34                fi
35        else
36                echo "no (mysql not found)"
37        fi
38        exit 1
39fi
40
41if [ "$1" = "config" ]; then
42        echo 'graph_title MySQL database sizes'
43        echo 'graph_vlabel bytes'
44        echo 'graph_category mysql'
45        echo 'graph_args --base 1000'
46        for DB in $($MYSQL $MYSQLOPTS -s -e 'show databases');
47        do
48           echo "$DB.label $DB size (bytes)"
49           echo "$DB.info $DB size"
50           echo "$DB.type GAUGE"
51           echo "$DB.draw LINE2"
52        done
53        exit 0
54fi
55
56MT=$($MYSQL --version | grep '4.0' 2>&1);
57if echo $MT | grep "4.0" >/dev/null; then
58  MYSQL_VER=4.0
59elif echo $MT | grep "3.23" >/dev/null; then
60  MYSQL_VER=3.23
61fi
62
63for DB in $($MYSQL $MYSQLOPTS -s -e 'show databases');
64do
65        echo -n "$DB.value "
66        if [ $MYSQL_VER = "4.0" -o $MYSQL_VER = "3.23" ]; then
67          $MYSQL $MYSQLOPTS -s -e "SHOW TABLE STATUS FROM \`$DB\`" \
68            | awk 'BEGIN{s=0}{s+=$6;s+=$8}END{printf "%d\n", s}';
69        else
70          $MYSQL $MYSQLOPTS -s -e "SHOW TABLE STATUS FROM \`$DB\`" \
71            | awk 'BEGIN{s=0}{s+=$7;s+=$9}END{printf "%d\n", s}';
72        fi
73done