root / plugins / mysql / mysql_report @ c561076a
Historique | Voir | Annoter | Télécharger (4,67 ko)
| 1 | ce0d15ac | M?ller Zsolt | #!/bin/sh |
|---|---|---|---|
| 2 | # |
||
| 3 | # Plugin to graph numeric result of the specified MySQL queries. |
||
| 4 | # |
||
| 5 | # Parameters: |
||
| 6 | # |
||
| 7 | # config (required) |
||
| 8 | # autoconf (optional - used by lrrd-config) |
||
| 9 | # |
||
| 10 | # Configuration example |
||
| 11 | # |
||
| 12 | # [mysql_report] |
||
| 13 | # env.names query1 query2 |
||
| 14 | # env.hostname www.example.com |
||
| 15 | # env.database mysql |
||
| 16 | # env.username report |
||
| 17 | # env.password secret |
||
| 18 | # env.errorvalue 60 |
||
| 19 | # env.max 120 |
||
| 20 | # |
||
| 21 | # env.label_query1 Example query#1 (number of users) |
||
| 22 | # env.hostname_query1 www1.example.com |
||
| 23 | 23f17f67 | Oded Ben Ozer | # env.draw_query1 AREA |
| 24 | # env.colour_query1 FF0000 |
||
| 25 | ce0d15ac | M?ller Zsolt | # env.database_query1 mysql |
| 26 | # env.username_query1 user1 |
||
| 27 | # env.password_query1 secret1 |
||
| 28 | # env.query_query1 select count(*) from `exampledb`.`users` |
||
| 29 | # env.warning_query1 5 |
||
| 30 | # env.critical_query1 8 |
||
| 31 | # |
||
| 32 | # env.label_query2 Example query#2 (number of successful logins) |
||
| 33 | # env.query_query2 select count(*) from `exampledb`.`login_log` |
||
| 34 | # env.type_query2 DERIVE |
||
| 35 | 23f17f67 | Oded Ben Ozer | # env.draw_query2 LINE2 |
| 36 | # env.colour_query2 000080 |
||
| 37 | ce0d15ac | M?ller Zsolt | # env.mysqlopts_query2 --defaults-extra-file=/etc/mysql/debian.cnf --port=4507 |
| 38 | # |
||
| 39 | 23f17f67 | Oded Ben Ozer | # env.cdefnames cdef1 |
| 40 | # env.cdef_cdef1 result1,result2,+ |
||
| 41 | # env.cdeflbl_cdef1 Users and successful logins sum |
||
| 42 | |||
| 43 | # |
||
| 44 | ce0d15ac | M?ller Zsolt | # $Log$ |
| 45 | # |
||
| 46 | # Revision 1.0 2010/04/19 14:18:32 muzso@muzso.hu |
||
| 47 | # Initial version |
||
| 48 | # |
||
| 49 | 23f17f67 | Oded Ben Ozer | # Revision 1.01 2010/7/14 oded@pageonce.com |
| 50 | ce0d15ac | M?ller Zsolt | #%# family=auto |
| 51 | #%# capabilities=autoconf |
||
| 52 | |||
| 53 | mysqlbin=$(which mysql) |
||
| 54 | |||
| 55 | default_errorvalue=30 |
||
| 56 | default_title="Results from MySQL queries" |
||
| 57 | default_category="mysql" |
||
| 58 | default_vlabel="value / sec" |
||
| 59 | default_info="This graph shows results of one or more SQL queries." |
||
| 60 | default_args="--base 1000 -l 0" |
||
| 61 | default_scale="no" |
||
| 62 | |||
| 63 | if [ "${1}" = "autoconf" ]; then
|
||
| 64 | result=0 |
||
| 65 | if [ -z "${mysqlbin}" ]; then
|
||
| 66 | echo "no" |
||
| 67 | else |
||
| 68 | echo "yes" |
||
| 69 | fi |
||
| 70 | exit $result |
||
| 71 | fi |
||
| 72 | |||
| 73 | if [ -z "${names}" ]; then
|
||
| 74 | echo "Configuration required" |
||
| 75 | exit 1 |
||
| 76 | fi |
||
| 77 | |||
| 78 | [ -n "${errorvalue}" ] || errorvalue=${default_errorvalue}
|
||
| 79 | [ -n "${title}" ] || title="${default_title}"
|
||
| 80 | [ -n "${category}" ] || category="${default_category}"
|
||
| 81 | [ -n "${vlabel}" ] || vlabel="${default_vlabel}"
|
||
| 82 | [ -n "${info}" ] || info="${default_info}"
|
||
| 83 | [ -n "${args}" ] || args="${default_args}"
|
||
| 84 | [ -n "${scale}" ] || scale="${default_scale}"
|
||
| 85 | |||
| 86 | if [ "${1}" = "config" ]; then
|
||
| 87 | cat << EOH1 |
||
| 88 | graph_title ${title}
|
||
| 89 | graph_args ${args}
|
||
| 90 | graph_scale ${scale}
|
||
| 91 | graph_vlabel ${vlabel}
|
||
| 92 | graph_category ${category}
|
||
| 93 | graph_info ${info}
|
||
| 94 | EOH1 |
||
| 95 | [[ -n "${period}" ]] && echo "graph_period ${period}"
|
||
| 96 | I=1 |
||
| 97 | for name in ${names}; do
|
||
| 98 | eval iquery='${query_'${name}'}'
|
||
| 99 | if [ -n "${iquery}" ]; then
|
||
| 100 | eval ilabel='${label_'${name}':-host${I}}'
|
||
| 101 | eval iwarning='${warning_'${name}':-${warning}}'
|
||
| 102 | eval icritical='${critical_'${name}':-${critical}}'
|
||
| 103 | eval imax='${max_'${name}':-${max}}'
|
||
| 104 | eval itype='${type_'${name}':-${type}}'
|
||
| 105 | 5df115fa | Oded Ben Ozer | eval idraw='${draw_'${name}':-${draw}}'
|
| 106 | eval icolour='${colour_'${name}':-${colour}}'
|
||
| 107 | ce0d15ac | M?ller Zsolt | iquery=$(echo "${iquery}" | tr '\n\r' ' ')
|
| 108 | cat << EOH2 |
||
| 109 | result${I}.label ${ilabel}
|
||
| 110 | result${I}.info Result of the query: ${iquery}
|
||
| 111 | result${I}.min 0
|
||
| 112 | EOH2 |
||
| 113 | [ -n "${imax}" ] && echo "result${I}.max ${imax}"
|
||
| 114 | [ -n "${itype}" ] && echo "result${I}.type ${itype}"
|
||
| 115 | 5df115fa | Oded Ben Ozer | [ -n "${idraw}" ] && echo "result${I}.draw ${idraw}"
|
| 116 | [ -n "${icolour}" ] && echo "result${I}.colour ${icolour}"
|
||
| 117 | ce0d15ac | M?ller Zsolt | [ -n "${iwarning}" ] && echo "result${I}.warning ${iwarning}"
|
| 118 | [ -n "${icritical}" ] && echo "result${I}.critical ${icritical}"
|
||
| 119 | I=$((I+1)) |
||
| 120 | fi |
||
| 121 | done |
||
| 122 | 5df115fa | Oded Ben Ozer | for cdefname in ${cdefnames} ;do
|
| 123 | eval icdef='${cdef_'${cdefname}'}'
|
||
| 124 | if [ -n "${icdef}" ]; then
|
||
| 125 | eval icdeflbl='${cdeflbl_'${cdefname}':-${cdeflbl}}'
|
||
| 126 | cat << EOH4 |
||
| 127 | ${cdefname}.cdef ${icdef}
|
||
| 128 | ${cdefname}.label ${icdeflbl}
|
||
| 129 | EOH4 |
||
| 130 | fi |
||
| 131 | done |
||
| 132 | ce0d15ac | M?ller Zsolt | exit 0 |
| 133 | fi |
||
| 134 | |||
| 135 | I=1 |
||
| 136 | for name in ${names}; do
|
||
| 137 | eval iquery='${query_'${name}'}'
|
||
| 138 | if [ -n "${iquery}" ]; then
|
||
| 139 | eval ihostname='${hostname_'${name}':-${hostname}}'
|
||
| 140 | [ -n "${ihostname}" ] && opts="${opts} --host=${ihostname}"
|
||
| 141 | eval idatabase='${database_'${name}':-${database}}'
|
||
| 142 | eval iusername='${username_'${name}':-${username}}'
|
||
| 143 | [ -n "${iusername}" ] && opts="${opts} --user=${iusername}"
|
||
| 144 | eval ipassword='${password_'${name}':-${password}}'
|
||
| 145 | [ -n "${ipassword}" ] && opts="${opts} --password=${ipassword}"
|
||
| 146 | eval ierrorvalue='${errorvalue_'${name}':-${errorvalue}}'
|
||
| 147 | eval imysqlopts='${mysqlopts_'${name}':-${mysqlopts}}'
|
||
| 148 | iquery=$(echo "${iquery}" | tr '\n\r' ' ')
|
||
| 149 | #echo "The command to be executed: echo \"${iquery}\" | ${mysqlbin} ${imysqlopts} --batch --skip-column-names ${opts} ${idatabase} 2>&1"
|
||
| 150 | output=$(echo "${iquery}" | ${mysqlbin} ${imysqlopts} --batch --skip-column-names ${opts} ${idatabase} 2>&1)
|
||
| 151 | if [ $? -ne 0 -a ${ierrorvalue} -ne 0 ]; then
|
||
| 152 | result=${ierrorvalue}
|
||
| 153 | else |
||
| 154 | result=$(echo "${output}" | head -n 1 | sed 's/^\([0-9]\+\).*/\1/')
|
||
| 155 | fi |
||
| 156 | echo "result${I}.value ${result}"
|
||
| 157 | I=$((I+1)) |
||
| 158 | fi |
||
| 159 | done |
||
| 160 | |||
| 161 | 5df115fa | Oded Ben Ozer |
