使用 Prometheus 监控 OOM

the*_*heo 0 prometheus

我想利用 Prometheus 来监控 Debian / Ubuntu 上系统 OOM 杀手的发生。特殊情况是,有时 Redis 会因为 OOM 被杀死,并且由于发生得太快而不会触发已经存在的可用内存不足警报。但我想让解决方案尽可能智能和通用,并且不会花太多时间在上面,所以让我们不要专注于 Redis 本身。我到目前为止的想法:

  • 使用现有的与内存相关的 Prometheus 指标,仅在极低的值(即剩余 1% 内存)和低“for”值(即 5 秒)时触发它们 - 此解决方案可能有效且实施起来非常简单,但我相信它可能不可靠(不一定在所有 OOM 上触发,仅在 OOM 上触发)
  • 创建一个 bash 脚本,定期检查 dmesg 并根据适当的 grep 结果创建指标 - 可能会起作用,但问题可能在于正确识别已经从新消息中获取的 dmesg 消息(不要在同一个 OOM 上发出两次警报);这个解决方案也不是很优雅
  • 创建一个自定义的 Prometheus 导出器 - 如果编写得当可能会按预期工作,但创建它可能需要很多工作,我想避免

我想征求您的建议和意见。谢谢!

bri*_*zil 7

node_vmstat_oom_kill节点导出器的指标会告诉您这一点。