Skip to main content

Collects OOM Killer messages from /var/log/messages and represents the data for Prometheus.

Project description

OOM Messages Exporter

An exporter for providing OOM Killer's kills in the Prometheus format. The exporter is compatible with containers runtimes and could be useful to investigate OOM Killer activity inside containers, servers or vms.

Examples

The main metrics are 'oom_messages_exporter_last_killed_pid' and 'oom_messages_exporter_last_killed_time' those provide values of the last pid and the last time of killed processes since the exporter has started. You can configure Alertmanager on the ..._time metric (value > now - last Xh) or on a change of the ..._pid metric by expression delta(_pid[xH]) != 0 function. Also you can combine both metric to get better alerts experience.

Provided labels are:

  • command - a proc title of a killed process;
  • namespace (opt, containers runtimes only)
  • pod (opt, containers runtimes only)
  • container (opt, containers runtimes only)

OOM inside kubernetes containers

oom_messages_exporter_last_killed_pid{command="php-fpm: pool w",container="php-fpm",namespace="oldwebsite",pod="a-legacy-app"} 235362.0
oom_messages_exporter_last_killed_time{command="framework",container="nodejs",namespace="lovely-project",pod="awesome-backend"} 1.69484585513779e+09

OOM on bare metal servers or VMs

For this case labels about containers runtime should be as 'None'

oom_messages_exporter_last_killed_pid{command="node /opt/www/p",container="None",namespace="None",pod="None"} 24190.0
oom_messages_exporter_last_killed_time{command="node /opt/www/p",container="None",namespace="None",pod="None"} 1.6948459852485702e+09

How to run

Examples

Collecting OOM Killer messages about processes in an operating system:

# ./examples/exporter-container.sh

Collecting OOM Killer messages inside containers:

# ./examples/exporter-systemd.sh

Output (exporter-container.sh):

$ curl -s http://localhost:9001/ | egrep -v '^#' | grep oom_messages_exporter_last_killed_
oom_messages_exporter_last_killed_pid{command="framework",container="nodejs",namespace="lovely-project",pod="awesome-backend"} 1.990532e+06
oom_messages_exporter_last_killed_pid{command="php-fpm: pool w",container="php-fpm",namespace="oldwebsite",pod="a-legacy-app"} 235362.0
oom_messages_exporter_last_killed_time{command="framework",container="nodejs",namespace="lovely-project",pod="awesome-backend"} 1.69484585513779e+09
oom_messages_exporter_last_killed_time{command="php-fpm: pool w",container="php-fpm",namespace="oldwebsite",pod="a-legacy-app"} 1.694845840949523e+09

Alerting rules

expr:

time() - max_over_time(oom_messages_exporter_last_killed_time{container!="None"}[Xh]) < X*60*60

where: Xh - a time period in hours for looking the last OOM Killer kill.

annotations.description:

the last kill was in ns={{ $labels.namespace }}, pod={{ $labels.pod }}, ct={{ $labels.container }}, proc={{ $labels.command }}, {{ $value | humanizeDuration }} ago

Production

# pip install oom_messages_exporter
# python3.9 oom_messages_exporter.py

Config

All runtime configuration provides by environment variables:

  • oom_messages_exporter_PORT - an exporter port (default: 9001)
  • oom_messages_exporter_POLL_INTERVAL - log polling interval (default: 1 (sec))
  • oom_messages_exporter_MESSAGES_LOG - a path to log (default: /var/log/messages)

Dependencies

  • python 3.9
  • prometheus_client

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oom_messages_exporter-20230918.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

oom_messages_exporter-20230918-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file oom_messages_exporter-20230918.tar.gz.

File metadata

File hashes

Hashes for oom_messages_exporter-20230918.tar.gz
Algorithm Hash digest
SHA256 88c8bb3ae7bdb2995be3143b15e2b95b7e76709f89f3095a72bcf18feb718b6d
MD5 3ca71ec0f0974cf83feab173afbddb59
BLAKE2b-256 eb4f3327bdb5135183d9d7802cc5e243a450af2ff658a47e48b355c9e62f936f

See more details on using hashes here.

File details

Details for the file oom_messages_exporter-20230918-py3-none-any.whl.

File metadata

File hashes

Hashes for oom_messages_exporter-20230918-py3-none-any.whl
Algorithm Hash digest
SHA256 04d37c390b0b44c82390436649220126de89b4df8bf90ca83fd32f1c92e86395
MD5 88021bc5e2310c60637a8b7e84bdb7ba
BLAKE2b-256 1001ad15b414f2472f82256db9d81c315407ab832191d9987e30106160ffdbd8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page