OOM 如何监控可视化、告警推送、服务自愈

news2024/11/26 9:39:34

OOM,out of memory,就是内存用完了耗尽了的意思。会触发kernel调用OOM killer杀进程来解除这种状况。

OOM分为虚拟内存OOM和物理内存OOM,两者是不一样的。

虚拟内存OOM发生在用户空间,用户空间分配的就是虚拟内存,不能分配物理内存,用户空间虚拟内存OOM表现为malloc、mmap等内存分配接口返回失败,错误码为ENOMEM。

程序在运行的时候触发缺页异常从而需要分配物理内存,kernel 自身在运行的时候也需要分配物理内存,如果此时物理内存不足了,就会发生物理内存OOM。

OOM是非常严重的问题,那我们如何监控、告警、甚至自愈呢?

1、采用 node_export + grafna +  prometheus + alertmanager  监控

1.1、node_export 监控数据采集 --collector.vmstat

/opt/exporter/bin/node_exporter_51233 --web.listen-address=0.0.0.0:51233 --collector.cpu.info --collector.arp --collector.cpu --collector.diskstats --collector.filesystem --collector.loadavg --collector.meminfo --collector.mountstats --collector.nfs --collector.stat --collector.tcpstat --collector.vmstat

1.2、grafna 中写PromQL 制定 OOM 可视化

-- oom 频率increase(node_vmstat_oom_kill{host=~"$host"}[1m])
-- oom 总次数node_vmstat_oom_kill > 0

1.3、 prometheus 设定 rules oom 告警阈值

 /opt/prometheus/rules/node_rules.yml 文件添加 oom 告警阈值

 ##alert for host oom
  - alert: IOV-HostOomKillDetected
    expr: increase(node_vmstat_oom_kill[1m]) > 0
    for: 0m
    labels:
      level: 3
    annotations:
      cur_value: '{{ $value }}'
      description: "OOM kill detected"

 1.4、alertmanager 配置告警推送规则

alertmanager.yml 中配置,具体配置略

2、systemd服务自愈

systemd服务异常自动重启很好用,OOM就是通过kill -9来杀进程,没有

RestartPreventExitStatus 限定的情况下 服务异常中断会自愈重启。

但有的时候希望某些服务只在特定情况下进行重启,

systemd的[Service]段落里支持一个参数,叫做RestartPreventExitStatus

该参数从字面上看,意思是当符合某些退出状态时不要进行重启。

该参数的值支持exit code和信号名2种,可写多个,以空格分隔,例如

  RestartPreventExitStatus=143 137 SIGTERM SIGKILL

[Unit]
  Description=mytest
  [Service]
  Type=simple
  ExecStart=/root/mytest.sh
  Restart=always
  RestartSec=5
  StartLimitInterval=0
  [Install]
  WantedBy=multi-user.target

重点参数详解
Restart=always: 只要不是通过systemctl stop来停止服务,任何情况下都必须要重启服务,默认值为no
RestartSec=5: 重启间隔,比如某次异常后,等待5(s)再进行启动,默认值0.1(s)
StartLimitInterval: 无限次重启,默认是10秒内如果重启超过5次则不再重启,设置为0表示不限次数重启

 

附上效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【裸机驱动LED】使用汇编代码驱动LED(四)—— 驱动格式开发篇

上一篇使用C语言代码来驱动LED,之前我们是手动设置的每一个寄存器的地址,但是这样的效率太低,而且很麻烦。此时我们注意到同属于 GPIO_CCGRx 这一类的寄存器地址,他们之间都相差 4 个字节。 我们要利用这一特性,将之前…

SciencePub学术 | 【CCF推荐】计算机决策类重点SCIEI征稿中

SciencePub学术 刊源推荐: 【CCF推荐】计算机决策类重点SCI&EI征稿中!信息如下,录满为止: 一、期刊概况: CCF推荐|计算机决策类重点SCI&EI 【期刊简介】IF:3.5-4.0,JCR2区,中科院3/4区…

OpenCV 数据类型及赋值取值

在之前的博客 OpenCV 32F 与 8U Mat数据类型相互转换(C版) 已经提到,OpenCV Mat 类型及对应编号,如下表: 其中C1~C4为通道数,经常使用的数据类型对应如下表所示: 其中: FLT_MAX 3.402823466e38 FLT_MIN …

从亿点点失误,到一点点失误,我是如何做的【工作失误怎么办】

前言 只要我们还在做事,或者说还活着,就没有不犯错的时候。作为一名前端搬砖工,哪怕工作中再仔细小心,也免不了一些失误。 那这是不是说,失误很正常,改了就是嘛? 这么说好像没错。作为失误本…

[Java基础]面向对象-内存解析

因为内存解析篇幅较长,我们单独拿出来讲解。 我们知道,方法执行,其实就对内存的操作,但具体是如何进行的呢?下面我们以生成“圆”为例,从内存的角度解析程序执行过程。 /** * 圆 **/ public class Circle…

5年测试面试要20K,面试三个问题把我打发走了···

都说金三银四,金九银十跳槽涨薪季,我是着急忙慌的准备简历——5年软件测试经验,可独立测试大型产品项目,熟悉项目测试流程…薪资要求?5年测试经验起码能要个20K吧。 我加班肝了一页半简历,投出去一周&…

22种不同的社交媒体内容类型(2023年指南)

您是否觉得自己的社交媒体帖子陷入了无休止的循环?您是否已经无话可说并且感到厌烦了?看起来你没有得到任何牵引力吗? 别担心 — 这些感觉在营销人员和小企业主中很常见。今天,我们将探索社交媒体内容的世界,并为您提…

React-Router 5.0 制作导航栏+页面参数传递

React使用路由 使用React构建SPA应用(单页面应用),要想实现页面间的跳转,首先想到的就是使用路由。在React中,常用的有两个包可以实现这个需求,那就是react-router和react-router-dom。本文主要针对react-router-dom进行说明。 …

麒麟V10服务器 安装samba 软件,并且实现远程连接(压缩包形式)

目录 1 安装包2 实现3 如何查看安装的sambd 的版本4 使用 1 安装包 百度网盘 链接: https://pan.baidu.com/s/1l6HDAGE4_Itj-cp7XtpUNg 提取码: 100w 复制这段内容后打开百度网盘手机App,操作更方便哦2 实现 以下是在Linux系统中使用压缩包方式安装Samba服务的步…

angular框架-通过依赖注入方式挂载loading以实现任意地方一行代码调用全局loading

前言 本文主要阐述关于在angular项目中,loading的常见的使用方式,以及如何全局挂载loading,实现一行代码控制loading开,一行代码控制loading关闭。 正文 首先在angular中增加loading,主要就是组件级和全局挂载&…

Python+appium自动化测试-调用服务器接口

当前很多APP登录都需要绑定手机号,但当我们需要足够多的模拟新用户的注册登录时,无法提供大量的手机号来测试,所以可以让服务器给出一个清除账号的接口,在写自动化脚本的时候可以调用这个接口,保证能够使用一个账号进行…

pycharm的基本使用

废话文学 本人记录笔记始终遵循“能动手绝不动脑,能动脑绝不动手”的基本原则。不会的操作,跟着笔记干就完事了,还动啥脑袋?留着脑细胞刷抖音擦边小姐姐他不香吗? 什么是IDE IDE即【集成开发环境】,Inte…

【Algorithm】Java刷题中要熟练使用的容器Api、Stream流、Lambda表达式

Java刷题中要熟练使用的Stream流、Lambda表达式、容器Api 1.Stream流1.概述2.分类3.具体用法流的常用创建方法 2.Lambda表达式函数式接口Lambda书写语法方法引用 3.各类Api 1.Stream流 1.概述 Stream Api是「集合操作」的一种简化表达形式。其特点是惰性求值,流在…

maven repositories更新失败

在项目的pom文件中添加以下配置 <repositories><repository><id>alimaven</id><name>Maven Aliyun Mirror</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url><releases><enabled>tr…

视频批量剪辑软件开发源码+SaaS

工具能力 API 描述 上传素材接口 开发者可通过本接口将使用素材上传至抖音服务器。 上传临时素材接口 上传临时素材接口。 获取素材列表接口 获取素材列表接口。 删除素材接口 删除素材接口。 小程序接口能力 获取小程序接口能力。 模拟webhook事件 模拟webhook事…

基于Python的接口自动化-HTTP接口基本组成和网页构成

目录 引言 1、HTTP简介 2、HTTP原理和网页基础 2.1、 HTTP基本原理 2.2、 HTTP请求过程 2.3、 网页构成 【自动化测试工程师学习路线】 引言 在我们进行接口测试时&#xff0c;了解HTTP接口的基本组成和网页构成是非常重要的。 而Python作为一门功能强大、易学易用的编程…

亚马逊美国站 解压神器减压小玩具CPC认证

解压玩具又称减压玩具Relaxing toys&#xff0c;包括挤压、摔砸、揉捏、旋转等多种类型&#xff0c;主要供成年人使用&#xff0c;帮助释放压力。 当提到解压玩具时&#xff0c;通常指的是一类旨在缓解压力、放松心情的小型玩具。以下是几种常见的解压玩具及其简要介绍&#x…

一键开启GPT 平行时空模式

不知道大家日常使用GPT的时候&#xff0c;在一次会话中是如何完成同类任务的对话的? 简单点来说&#xff0c;假设你已经完成了角色设定&#xff0c;比如你设定GPT是一名文案编辑&#xff0c;那么接下来你会多次给它提交稿件让它进行编辑&#xff0c;那么在多次提交的时候&…

基于jsp+mysql+Spring+mybatis+VUE的SpringBoot电影院会员积分管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…

【剑指offer专项突破版】数组篇——“C“

文章目录 前言一 . 排序数组中两个数字的和题目分析思路分析法①代码——双指针法②代码——二分查找 二. 数组中和为 0 的三个数题目分析问题转换代码 三. 和大于等于 target 的最短子数组题目分析思路分析代码 四. 乘积小于 K 的子数组题目分析思路分析代码 五. 和为 k 的子数…