使用M/Monit进行可视化集中进程管理
一:前言
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$tarxf mmonit-3.5.1-linux-x64.tar.gz$cdmmonit-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$tarxf monit-5.19.0-linux-x64.tar.gz$cdmonit-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#检测周期setdaemon  30#进程文件配置setlogfile syslogsetpidfile /var/run/monit.pidsetidfile /var/.monit.idsetstatefile /var/.monit.state#事件队列seteventqueue basedir /var/monitslots 100          #配置mmonit(将监控数据发送至MMonit进行统一展示)setmmonit http://monit:monit@192.168.0.1:8080/collector#邮件服务器地址setmailserver 10.10.10.10 port 25   username "monit@cctv.com"password "monit"#自定义发送邮件格式($DATE等都是monit内置变量)setmail-format{   from:    Monit@cctv.com   subject: monit alert --  $EVENT $SERVICE   message: $EVENT Service $SERVICE                 Date:        $DATE                 Action:      $ACTION                 Host:        $HOST                 Description: $DESCRIPTION }#设置报警收件人setalert zhangsan@cctv.comsetalert lisi@cctv.com#配置https,用于web界面,由于使用MMonit的界面管理,也可以不配置.sethttpd port 2812 and    use address localhost     allow localhost           allow admin:monit     #----以下为监控项,以几个常见监控项为例----##检查monit配置文件更新check filemonitrc path /opt/monit-5.19.0/conf/monitrc    ifchanged sha1 checksum    thenexec"/opt/monit-5.19.0/bin/monit -c /opt/monit-5.19.0/conf/monitrc reload"#检查系统负载check system 192.168.0.2    group system    ifloadavg (1min) > 4 thenalert    ifloadavg (5min) > 2 thenalert    ifcpu usage > 95% for10 cycles thenalert    ifmemory usage > 75% thenalert    ifswap usage > 25% thenalert#磁盘各目录空间check filesystem root with path /    group system    ifspace usage > 90% thenalertcheck filesystem usr with path /usr    group system    ifspace usage > 80% thenalertcheck filesystem var with path /var    group system    ifspace usage > 90% thenalert#监控ssh服务check process sshd with pidfile /var/run/sshd.pid     start program "/etc/init.d/sshd start"     stop program "/etc/init.d/sshd stop"     iffailed host 127.0.0.1 port 22 protocol sshthenrestart#监控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"    ifchanged pid for5 cycles thenrestart    iffailed port 80 protocol http with timeout 2 seconds thenalert | 
(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进行可视化集中进程管理的更多相关文章
- 12个Linux进程管理命令介绍(转)
		12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ... 
- 理解Docker容器的进程管理
		摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ... 
- [转帖]十二 个经典 Linux 进程管理命令介绍
		https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看. 随笔- 109 ... 
- Linux 进程管理 笔记
		https://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.htmlLinux 进程管理剖析 进程可以是短 ... 
- nodeJS进程管理器pm2
		pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的. PM2是开源的基于Nodejs的进程管 ... 
- 进程管理工具之supervisor[详解]
		原文链接:https://blog.csdn.net/weixin_42390791/article/details/88866237 一.问题背景1.背景 如何才能让一个进程摆脱终端,获得相对 ... 
- 十天学会CS之操作系统——进程管理01
		进程管理01 进程的概念 进程是计算机中一个非常重要的概念,在整个计算机发展历史中,操作系统中程序运行机制的演变按顺序大致可以分为: 单道程序:通常是指每一次将一个或者一批程序(一个作业)从磁盘加载进 ... 
- Python—守护进程管理工具(Supervisor)
		一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ... 
- 《Linux内核设计与实现》读书笔记 第三章 进程管理
		第三章进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限于 ... 
随机推荐
- 精读《Monorepo 的优势》
			1. 引言 本周精读的文章是 The many Benefits of Using a Monorepo. 现在介绍 Monorepo 的文章很多,可以分为如下几类:直接介绍 Lerna API 的: ... 
- .net core 学习小结之 配置介绍(config)以及热更新
			命令行的配置 var settings = new Dictionary<string, string>{ { "name","cyao"}, {& ... 
- P1074 靶形数独  dfs+预处理
			https://www.luogu.org/problemnew/show/P1074 显然是dfs 而且没有什么剪枝记忆化之类的 但是预处理比较麻烦 我用三个二维数组存状态:visx[x][i]代表 ... 
- java8 stream取出 最大值/最小值
			注:转载请注明出处!!! 这里直接用取出多个对象中某个值 最大/最小 来进行举例 直接看代码 /** * 时间测试类 */ class TimeTest { private Date time; pu ... 
- Java中字符编码和字符串所占字节数 .
			首 先,java中的一个char是2个字节.java采用unicode,2个字节来表示一个字符,这点与C语言中不同,C语言中采用ASCII,在大多数 系统中,一个char通常占1个字节,但是在0~12 ... 
- es6 js数组常用方法
			一:会改变自身的方法 1.array.push(element1, ...elementN) 添加一个或多个元素到数组的末尾,并返回数组新的长度 2.array.unshift(element1, . ... 
- 2019 CSP-S初赛游记
			2019-10-19 ——这个注定要被载入史册的日子 作为一名初中生,和lpy大佬一同参加提高组的比赛,而今年普及组和提高组的时间竟然不一样,于是——凌晨六点半,来到了pdyz和高中生一起坐车去. 高 ... 
- [BZOJ 4668]冷战(带边权并查集+启发式合并)
			[BZOJ 4668]冷战(并查集+启发式合并) 题面 一开始有n个点,动态加边,同时查询u,v最早什么时候联通.强制在线 分析 用并查集维护连通性,每个点x还要另外记录tim[x],表示x什么时间与 ... 
- Period II
			For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SIZE(S)-p-1], then the ... 
- MATLAB图像的代数运算
			1.图像旋转与缩放 bm=imread("3.png"); %subplot(1,3,1); imshow(bm); %缩放图片 %bt=imresize(bm,0.5,'near ... 
