initial script
This commit is contained in:
		
							
								
								
									
										55
									
								
								load_per_cpu.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										55
									
								
								load_per_cpu.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,55 @@
 | 
				
			|||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WARNING=( 8 5 2 )
 | 
				
			||||||
 | 
					CRITICAL=( 10 8 3 )
 | 
				
			||||||
 | 
					while test $# -gt 0; do
 | 
				
			||||||
 | 
					    case $1 in
 | 
				
			||||||
 | 
					        (-h|--help) cat <<EOF
 | 
				
			||||||
 | 
					$0 [OPTIONS]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  -w, --warning   "a b c"   set warning threshold for:
 | 
				
			||||||
 | 
					                            a: 1min, b: 5min, c: 15min average
 | 
				
			||||||
 | 
					                            (default: ${WARNING[@]})
 | 
				
			||||||
 | 
					  -c, --critical  "a b c"   set critical threshold for:
 | 
				
			||||||
 | 
					                            a: 1min, b: 5min, c: 15min average
 | 
				
			||||||
 | 
					                            (default: ${CRITICAL[@]})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Icinga plugin to check load average per CPU. Shows 1min, 5min 15min
 | 
				
			||||||
 | 
					average per CPU. Different to check_load, the load is divided by the
 | 
				
			||||||
 | 
					number of CPU units and therefore normalized. So the same warning and
 | 
				
			||||||
 | 
					critical levels fit for any server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					                    exit;;
 | 
				
			||||||
 | 
					        (-w|--warning) shift; WARNING=( $1 );;
 | 
				
			||||||
 | 
					        (-c|--critical) shift; CRITICAL=( $1 );;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					    if test $# -lt 1; then
 | 
				
			||||||
 | 
					        echo "ERROR: missing option, try $0 --help"
 | 
				
			||||||
 | 
					        exit 1
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    shift
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a=( $(cut -d' ' -f 1-3 </proc/loadavg) )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo "before ${a[@]}"
 | 
				
			||||||
 | 
					level=0
 | 
				
			||||||
 | 
					txt=OK
 | 
				
			||||||
 | 
					for ((i=0;i<3;++i)); do
 | 
				
			||||||
 | 
					    a[$i]=$(bc -l <<< "${a[$i]}/$(nproc)")
 | 
				
			||||||
 | 
					    if test $level -lt 1 -a $(bc -l <<< "${a[$i]}>${WARNING[$i]}") -eq 1; then
 | 
				
			||||||
 | 
					        level=1
 | 
				
			||||||
 | 
					        txt=WARNING
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if test $level -lt 2 -a $(bc -l <<< "${a[$i]}>${CRITICAL[$i]}") -eq 1; then
 | 
				
			||||||
 | 
					        level=2
 | 
				
			||||||
 | 
					        txt=CRITICAL
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					echo $txt - load average: $(printf '%.2f, %.2f, %.2f|load1=%.3f;%.3f;%.3f;0; load5=%.3f;%.3f;%.3f;0; load15=%.3f;%.3f;%.3f;0;' ${a[@]} ${a[0]} ${WARNING[0]} ${CRITICAL[0]} ${a[1]} ${WARNING[1]} ${CRITICAL[1]} ${a[2]} ${WARNING[2]} ${CRITICAL[2]})
 | 
				
			||||||
 | 
					exit $level
 | 
				
			||||||
		Reference in New Issue
	
	Block a user