{"id":38763641,"url":"https://github.com/angelopoerio/oom-notifier","last_synced_at":"2026-01-17T11:59:15.387Z","repository":{"id":46690617,"uuid":"380816629","full_name":"angelopoerio/oom-notifier","owner":"angelopoerio","description":"Notify about oomed processes reporting full command line","archived":false,"fork":false,"pushed_at":"2022-01-14T22:53:18.000Z","size":63,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-08-04T01:12:07.103Z","etag":null,"topics":["devops","kubernetes","linux","observability","rust","site-reliability-engineering","sre"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angelopoerio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-27T18:57:11.000Z","updated_at":"2023-07-27T11:48:06.000Z","dependencies_parsed_at":"2022-09-23T18:21:58.722Z","dependency_job_id":null,"html_url":"https://github.com/angelopoerio/oom-notifier","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/angelopoerio/oom-notifier","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelopoerio%2Foom-notifier","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelopoerio%2Foom-notifier/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelopoerio%2Foom-notifier/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelopoerio%2Foom-notifier/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angelopoerio","download_url":"https://codeload.github.com/angelopoerio/oom-notifier/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelopoerio%2Foom-notifier/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28508464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T11:50:55.898Z","status":"ssl_error","status_checked_at":"2026-01-17T11:50:55.569Z","response_time":85,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","kubernetes","linux","observability","rust","site-reliability-engineering","sre"],"created_at":"2026-01-17T11:59:15.271Z","updated_at":"2026-01-17T11:59:15.377Z","avatar_url":"https://github.com/angelopoerio.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\noom-notifier is a small daemon to be notified about processes killed by the Linux [oom-killer](https://utcc.utoronto.ca/~cks/space/blog/linux/OOMKillerWhen). It can report the full command line of the killed out of memory process (something that it's not printed in the kernel ring buffer).\n\n\n# How to build\nYou need a working installation of the [Rust](https://www.rust-lang.org/) compiler, then you can build the service issuing the following command:\n```bash\ncargo build --release\n```\nif the build completes then you will find the compiled service at the following path in the current directory: **target/release/oom-notifier**\n\n\n# Run as a docker container\nIt is possible to build a docker image of the service issuing the following command:\n```bash\ndocker build -t oom-notifier .\n```\nand then run it:\n```bash\ndocker run -v /proc:/proc --privileged  oom-notifier /oom-notifier\n```\n\n\n# How to use\nThe daemon needs to run with enough privileges to access **/dev/kmsg** (kernel logs) so it can know about OOMs happening in the system.\nThe events can be sent to different backends, at the moment **Syslog**, **Elasticsearch**, **Kafka** and **Slack** are supported.\nSend events to an elasticsearch cluster:\n```bash\n./oom-notifier --elasticsearch-server https://my-elasticsearch-cluster:9200 --elasticsearch-index my-index\n```\n\nSend events to a remote syslog server (over TCP):\n```bash\n./oom-notifier --syslog-server my-syslog-server:9999 --syslog-proto tcp\n```\n\nSend events to a Kafka cluster:\n```bash\n./oom-notifier --kafka-topic oom-events --kafka-brokers broker1:9092,broker2:9092,broker3:9092\n```\n\nSend events to a Slack channel (learn more [here](https://api.slack.com/messaging/webhooks)):\n```bash\n./oom-notifier --slack-webhook https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX --slack-channel #oom-notifications\n```\n\n\nYou can adjust the logging level of the daemon setting the environment variable **LOGGING_LEVEL** (default level is info).\n\n# Run on Kubernetes\nIt is possible to run the service as a [Daemonset](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) on a Kubernetes cluster.\nIt must be run as a **privileged** Daemonset and with the option **hostPID** enabled (see [here](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) and [here](https://kubernetes.io/docs/concepts/policy/pod-security-policy/#host-namespaces)). A YAML template ready to be deployed (after adapting it to your environment) is available at **k8s/daemonset.yaml**.\n\n\n# Caveats\nThe tool can only notify about OOMs caused by the Linux oom killer. If you use a userspace mechanism then it will not be able to detect them.\nSome example of userspace services that act as oom-killer:\n* [oomd](https://github.com/facebookincubator/oomd)\n* [earlyoom](https://github.com/rfjakob/earlyoom)\n\nIf you want to prevent the daemon itself to be killed by the oom-killer you can adjust the **oom_adj** parameter as described [here](https://backdrift.org/oom-killer-how-to-create-oom-exclusions-in-linux)\n\n\n# Author\nAngelo Poerio \u003cangelo.poerio@gmail.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelopoerio%2Foom-notifier","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangelopoerio%2Foom-notifier","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelopoerio%2Foom-notifier/lists"}