37 lines
		
	
	
		
			875 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			875 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| #
 | |
| # Reports Linux OOM Killer activity
 | |
| #
 | |
| set -e
 | |
| 
 | |
| cd "$(dirname "$0")"
 | |
| 
 | |
| # shellcheck source=scripts/oom-score-adj.sh
 | |
| source oom-score-adj.sh
 | |
| 
 | |
| # shellcheck source=scripts/configure-metrics.sh
 | |
| source configure-metrics.sh
 | |
| 
 | |
| [[ $(uname) = Linux ]] || exit 0
 | |
| 
 | |
| syslog=/var/log/syslog
 | |
| [[ -r $syslog ]] || {
 | |
|   echo Unable to read $syslog
 | |
|   exit 1
 | |
| }
 | |
| 
 | |
| # Adjust OOM score to reduce the chance that this script will be killed
 | |
| # during an Out of Memory event since the purpose of this script is to
 | |
| # report such events
 | |
| oom_score_adj "self" -500
 | |
| 
 | |
| while read -r victim; do
 | |
|   echo "Out of memory event detected, $victim killed"
 | |
|   ./metrics-write-datapoint.sh "oom-killer,victim=$victim,hostname=$HOSTNAME killed=1"
 | |
| done < <( \
 | |
|   tail --follow=name --retry -n0 $syslog \
 | |
|   | sed --unbuffered -n 's/^.* Out of memory: Kill process [1-9][0-9]* (\([^)]*\)) .*/\1/p' \
 | |
| )
 | |
| 
 | |
| exit 1
 |