root / plugins / other / healthcheck_process @ 788fe28e
Historique | Voir | Annoter | Télécharger (2,76 ko)
| 1 | 788fe28e | rti | #!/bin/bash |
|---|---|---|---|
| 2 | # |
||
| 3 | #healthcheck on munin |
||
| 4 | #check process and alert. |
||
| 5 | # |
||
| 6 | #programed by rti (hiroyuki fujie) super.rti@gmail.com @super_rti |
||
| 7 | #LICENSE: NYSL (public domain) |
||
| 8 | # |
||
| 9 | #config file |
||
| 10 | # /etc/munin/plugin-conf.d/munin-node |
||
| 11 | # |
||
| 12 | #example minimum config |
||
| 13 | #--------------------------------------------------- |
||
| 14 | #[healthcheck_process] |
||
| 15 | #env.process_1 httpd |
||
| 16 | #--------------------------------------------------- |
||
| 17 | # |
||
| 18 | #chcek two process |
||
| 19 | #--------------------------------------------------- |
||
| 20 | #[healthcheck_process] |
||
| 21 | #env.process_1 httpd |
||
| 22 | #env.process_2 samba |
||
| 23 | #--------------------------------------------------- |
||
| 24 | # |
||
| 25 | #chcek three process |
||
| 26 | #--------------------------------------------------- |
||
| 27 | #[healthcheck_process] |
||
| 28 | #env.process_1 httpd |
||
| 29 | #env.process_2 samba |
||
| 30 | #env.process_3 mysqld |
||
| 31 | #--------------------------------------------------- |
||
| 32 | # |
||
| 33 | #set alert memory(MB) |
||
| 34 | #--------------------------------------------------- |
||
| 35 | #[healthcheck_process] |
||
| 36 | #env.process_1 httpd |
||
| 37 | #env.alertmemory_1 1024 #1G (sum all httpd process) |
||
| 38 | #--------------------------------------------------- |
||
| 39 | # |
||
| 40 | # |
||
| 41 | |||
| 42 | #edakari speed up. |
||
| 43 | CHECKMAX=`env | grep process_ | wc -l` |
||
| 44 | let CHECKMAX="$CHECKMAX + 1" |
||
| 45 | |||
| 46 | if [ "$1" = "autoconf" ]; then |
||
| 47 | if [ $CHECKMAX -le 1 ]; then |
||
| 48 | echo no |
||
| 49 | exit 1 |
||
| 50 | fi |
||
| 51 | echo yes |
||
| 52 | exit 0 |
||
| 53 | fi |
||
| 54 | |||
| 55 | if [ "$1" = "config" ]; then |
||
| 56 | MemTotal=`cat /proc/meminfo | grep MemTotal | awk '{ print $2 }'`
|
||
| 57 | let MemTotal="$MemTotal / 1024 " #MB |
||
| 58 | let MemTotal15="$MemTotal * 3 / 2" #$MemTotal*1.5 |
||
| 59 | |||
| 60 | echo 'graph_title process memory Usage(MB)' |
||
| 61 | echo "graph_args --base 1000 -l 0 --vertical-label MB" |
||
| 62 | echo 'graph_scale no' |
||
| 63 | echo 'graph_vlabel process memory' |
||
| 64 | echo 'graph_category healthcheck' |
||
| 65 | echo 'graph_info This graph shows the Memory used by process' |
||
| 66 | |||
| 67 | for(( I = 1; I < $CHECKMAX; ++I )) |
||
| 68 | do |
||
| 69 | eval process=\$process_${I}
|
||
| 70 | eval alertmemory=\$alertmemory_${I}
|
||
| 71 | if [ "x${process}" = "x" ]; then
|
||
| 72 | continue |
||
| 73 | fi |
||
| 74 | if [ "x${alertmemory}" = "x" ]; then
|
||
| 75 | alertmemory=${MemTotal}
|
||
| 76 | fi |
||
| 77 | |||
| 78 | echo "$process.label $process" |
||
| 79 | echo "$process.info Memory used by $process" |
||
| 80 | echo "$process.draw LINE2" |
||
| 81 | echo "$process.min -10" |
||
| 82 | echo "$process.max ${MemTotal15}"
|
||
| 83 | echo "$process.critical 0:${alertmemory}"
|
||
| 84 | done |
||
| 85 | |||
| 86 | exit 0 |
||
| 87 | fi |
||
| 88 | |||
| 89 | for(( I = 1; I < $CHECKMAX; ++I )) |
||
| 90 | do |
||
| 91 | eval process=\$process_${I}
|
||
| 92 | if [ "x${process}" = "x" ]; then
|
||
| 93 | continue |
||
| 94 | fi |
||
| 95 | |||
| 96 | vrets=(`ps u --no-headers -C $process | awk 'BEGIN { count = 0 ; sum = 0; } { count ++ ; sum += $6/1024 ; } END { printf("%d %d\n",count,sum); }'`)
|
||
| 97 | count=${vrets[0]}
|
||
| 98 | value=${vrets[1]}
|
||
| 99 | if [ $count -le 0 ]; then |
||
| 100 | echo "$process.value -10" |
||
| 101 | echo "$process.extinfo process down" |
||
| 102 | else |
||
| 103 | echo "$process.value $value" |
||
| 104 | fi |
||
| 105 | done |
