PluginPortrait/mysql_size: mysql_size.5

File mysql_size.5, 1.9 KB (added by david82, at 2008-06-27T15:38:33+02:00)

some more special-char-fixes (munin field names)

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
19
20MYSQLOPTS="$mysqlopts"
21MYSQL=${mysql:-mysql}
22MYSQL_VER="4.1"
23
24if [ "$1" = "autoconf" ]; then
25        $MYSQL --version 2>/dev/null >/dev/null
26        if [ $? -eq 0 ]
27        then
28                $MYSQL $MYSQLOPTS -s -e "SHOW TABLE STATUS" 2>/dev/null >/dev/null
29                if [ $? -eq 0 ]
30                then
31                        echo yes
32                        exit 0
33                else
34                        echo "no (could not connect to mysql)"
35                fi
36        else
37                echo "no (mysql not found)"
38        fi
39        exit 1
40fi
41
42if [ "$1" = "config" ]; then
43        echo 'graph_title MySQL database sizes'
44        echo 'graph_vlabel bytes'
45        echo 'graph_category mysql'
46        echo 'graph_args --base 1000'
47        for DB in $($MYSQL $MYSQLOPTS -s -e 'show databases');
48        do
49           DB=`echo $DB |  sed "s/^[^A-Za-z_]/_/" | sed "s/[^A-Za-z0-9_]/_/g"`
50           echo "$DB.label $DB size (bytes)"
51           echo "$DB.info $DB size"
52           echo "$DB.type GAUGE"
53           echo "$DB.draw LINE2"
54        done
55        exit 0
56fi
57
58MT=$($MYSQL --version | grep '4.0' 2>&1);
59if echo $MT | grep "4.0" >/dev/null; then
60  MYSQL_VER=4.0
61elif echo $MT | grep "3.23" >/dev/null; then
62  MYSQL_VER=3.23
63fi
64
65for DB in $($MYSQL $MYSQLOPTS -s -e 'show databases');
66do
67        echo -n "$DB" | sed "s/^[^A-Za-z_]/_/" | sed "s/[^A-Za-z0-9_]/_/g"
68        echo -n ".value "
69        if [ $MYSQL_VER = "4.0" -o $MYSQL_VER = "3.23" ]; then
70          $MYSQL $MYSQLOPTS -s -e "SHOW TABLE STATUS FROM \`$DB\`" \
71            | awk 'BEGIN{s=0}{s+=$6;s+=$8}END{printf "%d\n", s}';
72        else
73          $MYSQL $MYSQLOPTS -s -e "SHOW TABLE STATUS FROM \`$DB\`" \
74            | awk 'BEGIN{s=0}{s+=$7;s+=$9}END{printf "%d\n", s}';
75        fi
76done