| 123456789101112131415161718192021222324252627282930313233343536 |
- #!/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/^.* earlyoom\[[0-9]*\]: Killing process .\(.*\). with signal .*/\1/p" \
- )
- exit 1
|