开源轻量级进程监控工具monit的使用以及monit进程监控工具常用的监控配置案例示例大全

news2024/11/15 11:11:00

一、开源轻量级进程监控工具monit的应用

    今天在服务器杀进程时,发现有一个进程一直在重启,寻找服务器各种定时任务未发现有定时程序,也没有发现supervisord的进程管理服务,后来才发现服务器上启用了monit这个工具,monit是一个开源的轻量级监控工具,功能挺强大,基本可以满足大多数的需求,它能从多个层面进行监控,比如可以通过PID文件,可以通过端口号等来监控进程,也可以对服务器的负载内存等各数据进行监制,以自动维护进程,发送报警等。monit介绍:

系统监控:进程状态,系统负载,cpu负载,内存占用等。
进程监控:monit可以监控守护进程,当被监控进程异常退出时,可以自动被拉起。
文件系统:Monit可以监控本地文件、目录、文件系统的变化,包括时间戳、校验值、大小的变化。例如,可以监控文件sha1以及md5的值,来监控文件是否发生变化
网络监控:monit可以监控网络连接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。

        monit安装使用起来都特别简单,一个命令安装完毕,修改一下配置文件,启动进程就完成了进程监控。

第一步:monit安装

        安装非常简单,sudo yum install -y monit

[online@ER9 src]$ sudo yum install -y monit
......
Resolving Dependencies
--> Running transaction check
---> Package monit.x86_64 0:5.25.1-1.el6 will be installed
--> Finished Dependency Resolution
Installed:......
Complete!

 第二步:配置文件整理

    修改配置文件,比如我这里用来监控nginx服务。编辑/etc/monit.conf,在最后添加以下四行配置文本,其中各行的意思是:
    第一行,check process searchd with pidfile指明nginx的pid文件位置。process后面的nginx为监控的名称,在status可以看到。
    第二三行,start program和stop program 分别编辑好进程启动和停止命令sh文件位置,必须是绝对路径
    第四行,指定if failed host IP地址的port失败,然后进行停止再启动。配置文本如下:

[online@ER9 nginx]$ vim /etc/monit.conf
#检测间隔时间配置,默认是120s
set daemon  30
set mailserver localhost
set mail-format { from: test@04007.cn }
set alert test@04007.cn
#在最后添加以下配置并编辑
check process nginx with pidfile /opt/data/pid/nginx/nginx.pid
  start program = "/opt/modules/nginx/sbin/start.sh"
  stop program = "/opt/modules/nginx/sbin/stop.sh"
  if failed host 192.168.168.11 port 80 then restart
 #对应的启动停止命令文本
[online@ER9 nginx]$ sudo cat /opt/modules/nginx/sbin/start.sh
#!/usr/bin/env bash
cd /opt/modules/nginx
        /opt/modules/nginx/sbin/nginx
exit $?
[online@ER9 nginx]$ sudo cat /opt/modules/nginx/sbin/stop.sh 
#!/usr/bin/env bash
cd /opt/modules/nginx
killall nginx
exit $?

 第三步:启动monit进程

        可以通过monit status查看监控列表,比如监控的Process

[online@ER9 nginx]$ which monit
/usr/bin/monit
[online@ER9 nginx]$ sudo /usr/bin/monit
 New Monit id: bfada1971c1890edd164f7951d5d1a69
 Stored in '/root/.monit.id'
Starting Monit 5.25.1 daemon with http interface at [localhost]:2812
#查看monit的状态
[online@ER9 nginx]$ sudo monit status
Monit 5.25.1 uptime: 0m
Process 'nginx'
  status                       OK
  monitoring status            Monitored
  monitoring mode              active
  on reboot                    start
  pid                          23273
  parent pid                   1
  uid                          0
  effective uid                0
  gid                          0
  uptime                       19m
  threads                      1
  children                     16
  cpu                          -
  cpu total                    -
  memory                       0.0% [1.9 MB]
  memory total                 2.9% [454.3 MB]
  security attribute           (null)
  disk write                   0 B/s [8 kB total]
  port response time           0.140 ms to 192.168.168.11:80 type TCP/IP protocol DEFAULT
  data collected               Tue, 19 Mar 2019 15:53:19

System 'BFG-OSER-4469'
  status                       OK
  monitoring status            Monitored
  monitoring mode              active
  on reboot                    start
  load average                 [0.00] [0.00] [0.00]
  cpu                          0.0%us 0.0%sy 0.0%wa
  memory usage                 1.8 GB [11.6%]
  swap usage                   180 kB [0.0%]
  uptime                       746d 23h 59m
  boot time                    Thu, 02 Mar 2017 15:53:35
  data collected               Tue, 19 Mar 2019 15:53:19

 现在,可以在服务上执行stop.sh,然后等着monit起作用将nginx进程启来吧。

二、monit进程监控工具常用的监控配置案例示例大全

1. monit监控检测语法

IF <TEST> THEN ACTION [ELSE IF SUCCEEDED THEN ACTION]
【action】包括 altert,start,stop.restart,exec
【alert】 触发报警邮件
【start|stop|restart】 就是触发start、stop、restart program。restart就是先执行stop再执行start.

【exec】 可以自定义一个脚本来执行

2.monit监控配置常用写法及案例

        monit可以将启动停止命令写在单独的shell文件中,也可将启动停止命令直接写在配置中;可以监控服务IP,也可以指定域名host主机;可以指定监控循环周期,遵循分时日月周定时任务配置,也可以指定排除在哪些时间段不用检测等等设置。看到有一个网页有比较详细的介绍,链接:http://www.cnblogs.com/52fhy/p/6412547.html  此处也收集了很多monit的常用监控案例,如有需要可以搜索进来快速查看和应用,笔记收录于此:

#将启动停止命令写在单独的shell文件中
check process nginx with pidfile /opt/data/pid/nginx/nginx.pid
  start program = "/opt/modules/nginx/sbin/start.sh"
  stop program = "/opt/modules/nginx/sbin/stop.sh"
  if failed host 192.168.162.11 port 80 then restart
  if failed host www.04007.cn port 443 then restart
  # 设置在10个监视周期内重,启了9次则超时,不再监视这个服务。
  if 9 restarts within 10 cycles then timeout
  # 如果在5个周期内该服务的cpu使用率都超过90%则提示
  if cpu usage > 90% for 5 cycles then alert
  # 若连续5个周期打开url都失败(120秒超时,超时也认为失败)则重启服务
  if failed url http://127.0.0.1:4000/ timeout 120 seconds for 5 cycles then restart

  #exec监控再执行另外的脚本
  check host 192.168.11.12 with address 192.168.11.12
      if failed port 80 with timeout 1 seconds for 2 cycles then exec "/opt/monit/contrab/notify.py"

#也可将启动停止命令直接写在配置中
check process nginx with pidfile /usr/local/nginx/run/nginx.pid
start program = "/usr/local/nginx/sbin/nginx" with timeout 30 seconds
stop  program = "/usr/local/nginx/sbin/nginx -s stop"
if failed host 192.168.162.11 port 80 protocol http then restart
if 5 restarts within 5 cycles then timeout

#可以指定监控循环周期,遵循分时日月周定时任务配置
check process nginx with pidfile /var/run/nginx.pid
   every 2 cycles
Example 2: Check every workday 8AM-7PM
 check program checkOracleDatabase with
       path /var/monit/programs/checkoracle.pl
   every “* 8-19 * * 1-5”
Example 3: 在这个时间端,就不要检测  Sunday 0AM-3AM
 check process mysqld with pidfile /var/run/mysqld.pid
   not every “* 0-3 * * 0”

#可以用expect做数据推送
 check process apache with pidfile /var/run/httpd.pid
       start “/etc/init.d/httpd start”
       stop  “/etc/init.d/httpd stop”
       if failed 
          host www.sol.no port 80 and
          send “GET / HTTP/1.1\r\nHost: www.04007.cn\r\n\r\n”
          expect “HTTP/[0-9\.]{3} 200.*”
       then alert

#监控配置文件修改后重启各种应用
check file monit.conf path /etc/monit.conf
group system
if changed sha1 checksum
then exec "/usr/bin/monit -c /etc/monit.conf reload"
 
#监控sshd服务
check process sshd with pidfile /var/run/sshd.pid
   start program  "/etc/init.d/sshd start"
   stop program  "/etc/init.d/sshd stop"
   if failed port 22 protocol ssh then restart
   if 5 restarts within 5 cycles then timeout

#监控sshd服务
check process mysql with pidfile /var/run/mysqld/mysqld.pid
   group database
   start program = "/etc/init.d/mysqld start"
   stop program = "/etc/init.d/mysqld stop"
   if failed host 127.0.0.1 port 3306 then restart
   if 5 restarts within 5 cycles then timeout

#监控php
 check process php_fpm with pidfile /var/run/php_fpm.pid
    start program = "/etc/init.d/php_fpm start"
    stop program  = "/etc/init.d/php_fpm stop"
    if failed host 127.0.0.1 port 9000 then restart
    if 5 restarts within 5 cycles then timeout

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

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

相关文章

初识Redis:JavaSpring客户端

第一步&#xff0c;需要在添加依赖的时候&#xff0c;选中这两个依赖。 第二步&#xff0c;修改配置文件 此处可以用properties也可以用yml。 第三步&#xff0c;完善controller 之前使用jedis&#xff0c;是通过jedis对象里面的各种方法来操作redis的&#xff0c;此处Spring中…

粘包、半包和Netty中的自定义帧解码器间的关系

之前学习Netty的时候学到自定义编解码器这一部分后就没再继续学习&#xff0c;同时对于这部分知识学习不深入。一直有个误区&#xff1a;自定义编码以及解码服务器就能够解决TCP作为流式协议传输&#xff08;无消息边界&#xff09;导致的粘包、半包问题。实则上面这句话有非常…

Pr:代理预设

在 Adobe Premiere Pro 中&#xff0c;“创建代理” Create Proxies对话框中的“代理”预设提供了六种格式选项。 ProRes QuickTime 代理 ProRes 是 Apple 开发的高质量中间编解码器&#xff0c;广泛应用于专业视频编辑领域。它提供了出色的色彩保真度和较低的压缩损失&#xf…

SPR系列单点激光雷达测距传感器|模组之CAN-OPEN软件调试说明

SPR系列单点激光雷达测距传感器|模组利用激光束的时间飞行原理来测量距离。它们发射出一个脉冲激光&#xff0c;并测量激光从传感器发射到击中物体并返回的时间来计算距离。 SPR系列单点激光雷达测距传感器|模组在测量精度要求较高的应用中常被使用&#xff0c;应用范围广泛&a…

PWM(Pulse-width modulation)脉冲宽度调制

PWM&#xff08;Pulse-width modulation&#xff09;是脉冲宽度调制 脉冲宽度调制是一种模拟信号电平数字编码方法。脉冲宽度调制PWM是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率的一种方式。所以根据面积等效法则&#xff0c;可以通过对改变脉冲的时…

《高等代数》“么”字型行列式

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;“么”字型行列式总共有8种形式 2&#xff09;“么”字型行列式的求解方法有三种&#xff1a;&#xff08;1&#xff09;用长斜边消去短斜边 &#xff0…

Open3D mesh 精细化处理-loop剖分

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 参数详解 返回值 2.2完整代码 三、实现效果 3.1原始mesh 3.2剖分后mesh Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长…

Vue 3.5 中的 base watch 函数与 Vue 模块化设计探索

在 Vue.js 的发展历程中&#xff0c;每一个版本的更新都带来了新特性和性能优化&#xff0c;而 Vue 3.5-beta.3 引入的 base watch 函数&#xff0c;虽然名字上听起来像是传统 watch API 的基础版本&#xff0c;但实际上它标志着 Vue 内部架构的一次重要调整。这次调整不仅影响…

Jupyter如何使用Anaconda的虚拟环境

Anaconda的虚拟环境大家应该都知道是什么&#xff0c;我们可以建立多个虚拟环境并在对应的环境中安装不同的python三方库从而运行不同的python项目&#xff0c;那么在jupyter中如何使用Anaconda的虚拟环境呢&#xff0c;今天就为大家分享一个这样的操作教程。 请参考图文进行以…

VSCode设置复制 Ctrl+D想下复制

VSCode 默认向下复制当前行是 shift Alt ↓,但是我们习惯了IDE和webStrom的CtrlD的想下复制.下面是VSCode自定义快捷键. VSCode设置复制 CtrlD想下复制 1.文件->首选项->键盘快捷方式(ctrk 在案ctrs)2.输入 copy line down->右键->更改键绑定3.完成 1.文件->首…

手把手教你从开发进度划分测试

一.单元测试&#xff08;Unit Testing&#xff09; 单元测试&#xff1a;软件单元测试的对象是可独立编译或汇编的程序模块。测试的对象是软件测试中的最小单位&#xff1a;模块。 测试阶段&#xff1a;编码后或者编码前&#xff08;TDD&#xff1a;测试驱动开发&#xff09;…

记录一些信息收集方法

未完成 百度谷歌关键词搜索&#xff08;已经很久远了&#xff0c;基本上起不到作用&#xff09; 查询域名的备案信息 查询相关证书 企查查&#xff0c;天眼查查内部资产 搜索引擎fofa或者钟馗之眼等东西&#xff0c;然后这个里面的东西可以通过http请求头都可以看见&#…

TLB的刷新方式--linux 2.4

TLB刷新的时机(i386) struct tlb_state cpu_tlbstate[NR_CPUS] {[0...NR_CPUS-1] {&init_mm, 0}}; 一般情况各个CPU的cpu_tblstate的state设置成TLBSTATE_OK&#xff0c;表示如果正在使用中的页面目录或页面表内容发生了变化就要刷新TLB的内容。 与vmalloc有关与HIGHM…

工业控制之“什么叫RTO?”

读研究生时&#xff0c;过程控制领域经常涉及“APC”、“RTO”等字眼&#xff0c;导师也经常性提及&#xff0c;现在在工作中也开始提了&#xff0c;可能意识到先进控制的重要性了。 今天谈一下RTO在工业上的应用&#xff0c;曾经和一个博士生对“RTO涉及哪些算法”发生过激烈…

C++ 设计模式——访问者模式

目录 C 设计模式——访问者模式1. 主要组成成分2. 逐步构建访问者模式步骤1: 创建元素接口和具体元素步骤2: 创建抽象访问者和具体访问者步骤3:创建对象结构步骤4: 客户端使用访问者模式 3. 访问者模式 UML 图UML 图解析 4. 访问者模式的优点5. 访问者模式的缺点6. 访问者模式适…

spring security 记住我在web和前后端分离如何使用

一、传统web开发准备工作 如果不懂原理的话&#xff0c;去看上一篇文章&#xff1a;CSDNhttps://mp.csdn.net/mp_blog/creation/editor/141716695 导入需要的依赖包&#xff0c;在传统web页面开发比较简单&#xff0c;我们设置只需要在页面请求参数加上一个remember-me 即可&a…

Linux-gcc/g++使用

文章目录 概念gccg 编译过程预处理(进行宏替换)编译&#xff08;生成汇编&#xff09;汇编&#xff08;生成机器可识别代码&#xff09;连接&#xff08;生成可执行文件或库文件&#xff09;函数库 gcc选项 概念 Linux中的gcc和g是GNU Compiler Collection&#xff08;GNU编译…

RESP图形化界面远程连接虚拟机Redis教程

参考优质大佬文章&#xff1a; Redis安装以及RESP连接Redis服务器_resp 连接-CSDN博客 《Redis&#xff1a;小白入门》RESP远程连接问题_redis配置文件更改为可以远程连接-CSDN博客 目录 环境 第一步&#xff1a;修改redis配置文件 第二步&#xff1a;关闭Linux防火墙 第三…

功能需求文档-自适应巡航控制ACC

本文以特斯拉Model3为例&#xff0c;展示如何撰写其主动巡航控制功能的功能需求文档&#xff1b;详情请参照用户手册 功能概述 主动巡航控制(ACC)是指系统实时监控车辆前方行驶环境&#xff0c;在设定的速度范围内&#xff0c;通过控制油门和制动&#xff0c;自动调整行驶速度…

Mybatis 潦草笔记

准备工作&#xff08;创建springboot工程、数据库表、实体类&#xff09;引入Mybatis的相关依赖&#xff0c;配置Mybatis&#xff08;数据库连接信息&#xff09;编写SQL语句&#xff08;注解/XML&#xff09; 创建springboot工程 选中两项 MyBatis Framework&#xff1a;My…