使用 Prometheus 监控 OOM
monitoring OOM with Prometheus
我想利用 Prometheus 来监控 Debian / Ubuntu 上系统 OOM 杀手的出现。特殊情况是,有时 Redis 由于 OOM 而被杀死,并且由于发生得太快而没有触发已经存在的可用内存不足警报。但我想让解决方案尽可能智能和通用,并且不想花太多时间在上面,所以让我们不要专注于 Redis 本身。目前我的想法:
- 使用现有的与内存相关的 Prometheus 指标,仅在极低值(即剩余 1% 内存)和低 "for" 值(即 5 秒)时触发它们 - 此解决方案可能有效并且非常有效易于实施,但我认为它可能不可靠(不一定在所有 OOM 上触发并且仅在 OOM 上触发)
- 创建一个 bash 脚本,定期检查 dmesg 并根据适当的 grep 结果创建指标 - 可能有效,但问题可能在于正确识别已经从新消息中 grep 的 dmesg 消息(不要提醒在同一个 OOM 上两次);这个解决方案也不是很优雅
- 创建自定义 Prometheus 导出器 - 如果编写得当可能会按预期工作,但创建它可能需要大量工作,我希望避免这种情况
想征求一下大家的建议和意见。谢谢!
节点导出器的 node_vmstat_oom_kill
指标会告诉您这一点。
我想利用 Prometheus 来监控 Debian / Ubuntu 上系统 OOM 杀手的出现。特殊情况是,有时 Redis 由于 OOM 而被杀死,并且由于发生得太快而没有触发已经存在的可用内存不足警报。但我想让解决方案尽可能智能和通用,并且不想花太多时间在上面,所以让我们不要专注于 Redis 本身。目前我的想法:
- 使用现有的与内存相关的 Prometheus 指标,仅在极低值(即剩余 1% 内存)和低 "for" 值(即 5 秒)时触发它们 - 此解决方案可能有效并且非常有效易于实施,但我认为它可能不可靠(不一定在所有 OOM 上触发并且仅在 OOM 上触发)
- 创建一个 bash 脚本,定期检查 dmesg 并根据适当的 grep 结果创建指标 - 可能有效,但问题可能在于正确识别已经从新消息中 grep 的 dmesg 消息(不要提醒在同一个 OOM 上两次);这个解决方案也不是很优雅
- 创建自定义 Prometheus 导出器 - 如果编写得当可能会按预期工作,但创建它可能需要大量工作,我希望避免这种情况
想征求一下大家的建议和意见。谢谢!
节点导出器的 node_vmstat_oom_kill
指标会告诉您这一点。