plugin-mysql_size: mysql_size.5

File mysql_size.5, 1.9 kB (added by david82, 4 years ago)

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
20 MYSQLOPTS="$mysqlopts"
21 MYSQL=${mysql:-mysql}
22 MYSQL_VER="4.1"
23
24 if [ "$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
40 fi
41
42 if [ "$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
56 fi
57
58 MT=$($MYSQL --version | grep '4.0' 2>&1);
59 if echo $MT | grep "4.0" >/dev/null; then
60   MYSQL_VER=4.0
61 elif echo $MT | grep "3.23" >/dev/null; then
62   MYSQL_VER=3.23
63 fi
64
65 for DB in $($MYSQL $MYSQLOPTS -s -e 'show databases');
66 do 
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
76 done