原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://heqin.blog.51cto.com/8931355/1863924

一:前言

Monit是一个开源监控管理工具(类似supervisor),能够监控linux系统的负载、文件、进程等。当系统负载过高、监控文件被篡改、进程异常退出时,能够发送邮件报警,并能够自动启动或关闭异常进程。Monit内嵌web界面,能够看到当前主机上的监控项状态。

M/Monit是一个集中式管理多台Monit的可视化工具,也是收费工具,可以免费试用30天。

 

二:规划

M/Monit(集中管理)  192.168.0.1

Monit(监控机)      192.168.0.2

Monit(监控机)      192.168.0.3

 

三:安装M/Monit

(1)安装M/Monit

1
2
3
4
$cd /opt
$wget https://mmonit.com/dist/mmonit-3.5.1-linux-x64.tar.gz
$tar xf mmonit-3.5.1-linux-x64.tar.gz
$cd mmonit-3.5.1

(2)配置M/Monit

1:MMonit的配置文件是conf/server.xml,不需要任何改动即可使用,默认配置是8080端口。

1
<Connector address="*" port="8080" processors="10" />

2:MMonit默认使用的是包内自带的sqlite3数据库,默认配置如下

1
2
3
4
<Realm url="sqlite:///db/mmonit.db?synchronous=normal&heap_limit=8000&foreign_keys=on&journal_mode=wal"
                  minConnections="5"
                  maxConnections="25"
                  reapConnections="300" />

也可以改成mysql和postgresql数据库.以myqsl为例(使用默认的sqlite可以跳过):

  • 修改sqlite配置为

1
2
3
4
<Realm url="mysql://mmonit:passwd@10.10.10.10/mmonit"
                  minConnections="5"
                  maxConnections="25"
                  reapConnections="300" />
  • 并导入mysql数据库

1
$mysql -ummonit -ppasswd < /opt/mmonit-3.5.1/db/mmonit-schema.mysql

(3)启动M/Monit

1
$bin/mmonit -c conf/server.xml

(4)启动M/Monit

访问 192.168.0.1:8080,显示登录页。

默认用户名

user

password

权限

admin

swordfish

管理员

monit

monit

普通用户

登录进去后,里面是空白的,No hosts,这是因为monit还没有加入进来,下面配置monit

四:安装配置monit

 

(1)安装Monit

  • 192.168.0.2 192.168.0.3

1
2
3
4
$cd /opt
$wget https://mmonit.com/monit/dist/binary/5.19.0/monit-5.19.0-linux-x64.tar.gz
$tar xf monit-5.19.0-linux-x64.tar.gz
$cd monit-5.19.0

(2)配置Monit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
$vim conf/monitrc
#检测周期
set daemon  30
#进程文件配置
set logfile syslog
set pidfile /var/run/monit.pid
set idfile /var/.monit.id
set statefile /var/.monit.state
#事件队列
set eventqueue basedir /var/monit slots 100          
#配置mmonit(将监控数据发送至MMonit进行统一展示)
set mmonit http://monit:monit@192.168.0.1:8080/collector
#邮件服务器地址
set mailserver 10.10.10.10 port 25
   username "monit@cctv.com" password "monit"
#自定义发送邮件格式($DATE等都是monit内置变量)
set mail-format {
   from:    Monit@cctv.com
   subject: monit alert --  $EVENT $SERVICE
   message: $EVENT Service $SERVICE
                 Date:        $DATE
                 Action:      $ACTION
                 Host:        $HOST
                 Description: $DESCRIPTION
 }
#设置报警收件人
set alert zhangsan@cctv.com
set alert lisi@cctv.com
#配置https,用于web界面,由于使用MMonit的界面管理,也可以不配置.
set httpd port 2812 and
    use address localhost 
    allow localhost       
    allow admin:monit     
#----以下为监控项,以几个常见监控项为例----#
#检查monit配置文件更新
check file monitrc path /opt/monit-5.19.0/conf/monitrc
    if changed sha1 checksum
    then exec "/opt/monit-5.19.0/bin/monit -c /opt/monit-5.19.0/conf/monitrc reload"
#检查系统负载
check system 192.168.0.2
    group system
    if loadavg (1min) > 4 then alert
    if loadavg (5min) > 2 then alert
    if cpu usage > 95% for 10 cycles then alert
    if memory usage > 75% then alert
    if swap usage > 25% then alert
#磁盘各目录空间
check filesystem root with path /
    group system
    if space usage > 90% then alert
check filesystem usr with path /usr
    group system
    if space usage > 80% then alert
check filesystem var with path /var
    group system
    if space usage > 90% then alert
#监控ssh服务
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 host 127.0.0.1 port 22 protocol ssh then restart
#监控nginx(不仅可以监控进程PID文件的变化,还可以监控80端口)
check process nginx with pidfile /var/run/nginx.pid
    start program = "/etc/init.d/nginx start" with timeout 60 seconds
    stop program  = "/etc/init.d/nginx stop"
    if changed pid for 5 cycles then restart
    if failed port 80 protocol http with timeout 2 seconds then alert

(3)启动monit

1
$bin/monit -c conf/monitrc

(4)访问MMonit,192.168.0.1:8080

已经能够看到192.168.0.2和192.168.0.3两台机器。

点进去机器,可以看到该机器的监控项,包括系统监控、进程监控、文件系统、配置文件监控。

大功告成!!!!!

此时,你可以去机器上试一试,手动kill掉nginx进程,你会发现进程会自动被拉起。

下面放两张我使用监控ELK集群的图,机器多一点。

本文出自 “酱酱酱子” 博客,请务必保留此出处http://heqin.blog.51cto.com/8931355/1863924

使用M/Monit进行可视化集中进程管理的更多相关文章

  1. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  2. 理解Docker容器的进程管理

    摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...

  3. [转帖]十二 个经典 Linux 进程管理命令介绍

    https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看.   随笔- 109  ...

  4. Linux 进程管理 笔记

    https://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.htmlLinux 进程管理剖析 进程可以是短 ...

  5. nodeJS进程管理器pm2

    pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的. PM2是开源的基于Nodejs的进程管 ...

  6. 进程管理工具之supervisor[详解]

    原文链接:https://blog.csdn.net/weixin_42390791/article/details/88866237 一.问题背景1.背景​   如何才能让一个进程摆脱终端,获得相对 ...

  7. 十天学会CS之操作系统——进程管理01

    进程管理01 进程的概念 进程是计算机中一个非常重要的概念,在整个计算机发展历史中,操作系统中程序运行机制的演变按顺序大致可以分为: 单道程序:通常是指每一次将一个或者一批程序(一个作业)从磁盘加载进 ...

  8. Python—守护进程管理工具(Supervisor)

    一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...

  9. 《Linux内核设计与实现》读书笔记 第三章 进程管理

    第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ...

随机推荐

  1. Snow的追寻--线段树维护树的直径

    Snow终于得知母亲是谁,他现在要出发寻找母亲.王国中的路由于某种特殊原因,成为了一棵有n个节点的根节点为1的树,但由于"Birds are everywhere.",他得到了种种 ...

  2. 【Linux开发】计算机底层是如何访问显卡的?

    1. 显卡驱动是怎么控制显卡的, 就是说, 使用那些指令控制显卡, 通过端口么? 2. DirectX 或 OpenGL 或 CUDA 或 OpenCL 怎么找到显卡驱动, 显卡驱动是不是要为他们提供 ...

  3. 无法在发送 HTTP 标头之后进行重定向

    public ActionResult Index2() { Response.Buffer = true; Response.Clear(); return Redirect("/Wech ...

  4. c++ 取整:四舍五入 向上取整 向下取整

    对于数据的取整是经常需要考虑的 现在总结如下 #include<iostream> #include<cmath> using namespace std; int main( ...

  5. java基础笔记(4)

    二进制运算: &的应用:清零.得到指定位的数: |的应用:将指定位置取1: ^的应用:取反.保留原值:交换两个bian变量:A= A^B,B =A ^ B,A = A^B;(原理就是本身异或本 ...

  6. 洛谷 P5660 数字游戏 & [NOIP2019普及组]

    传送门 洛谷改域名了QAQ 解题思路 没什么好说的,一道红题,本不想发这篇博客 ,但还是尊重一下CCF吧QAQ,怎么说也是第一年CSP呢! 用getchar一个个读入.判断.累加,最后输出即可. 不过 ...

  7. Let's encrypt 通配域名DNS验证方式的证书自动更新

    通配符域名不同于一般的单域名证书. 为了解决之前一篇短文中通配域名通过DNS方式验证的证书自动更新问题. 需要使用到第三方域名提供商的API, 用于自动添加域名的TXT记录, 实现自动验证并完成证书更 ...

  8. 修改jar包中class文件

    某日,想要更改jar包中的某个class文件,有无rar无法解压jar文件,故找到如下方式进行操作 1.解压某个jar包:在需要解压的jar包目录下,打开命令行(cmd),输入如下命令,输入:C:\j ...

  9. Vue切换页面时中断axios请求

    一.概述 在Vue单页面开发过程中,遇到这样的情况,当我切换页面时,由于上一页面请求执行时间长,切换到该页面时,还未执行完,这时那个请求仍会继续执行直到请求结束,此时将会影响页面性能,并且可能对现在页 ...

  10. ECMAScript 6 学习笔记(二)

    ECMAScript 6 let和const命令 let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a ...