使用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 $ 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进行可视化集中进程管理的更多相关文章
- 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进程 概念: 进程:处于执行期的程序.但不仅局限于 ...
随机推荐
- 【Linux开发】jpeglib使用指南
您可以到www.ijg.org网站下载libjpeg的源码, IJG JPEG Library就是jpeg压缩库,是以源码的形式提供给软件开发人员的,当然在软件包里也有编译好的库文件,我们这里就只用到 ...
- redis学习(二)
深入了解redis字符串,列表,散列和有序集合命令,了解发布,订阅命令和其他命令. 一,字符串 1.字符串可以存储3种类型的值 字符串,整数,浮点数 2.运算命令列表 incr : incr ...
- CentOS7linux通过http配置共享自动创建yum源的shell脚本
因工作需要用到,所以记录一下配置流程 环境介绍: 两台CentOS7系统 yum源服务主节点IP:192.168.1.78 从节点IP:192.168.1.79(79从78上获取yum源) 配置78节 ...
- 选择排序--python
def findSmallest(arr): smallest = arr[0] smallest_index = 0 for i in range(1, len(arr)): if arr[i] & ...
- [转帖]kafka基础知识点总结
kafka基础知识点总结 https://blog.csdn.net/qq_25445087/article/details/80270790 需要学习. 1.kafka简介 kafka是由Apach ...
- [19/09/08-星期日] Python的几个概念和语法
一.表达式.语句.程序.函数 1.表达式 就是一个类似于数学公式的东西 ,比如:10 + 5 8 - 4:表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响 如果在交互模式中输入一个表达式,解 ...
- [19/06/03-星期一] HTML基础_C/S与B/S的区别&标题标签(h1-h6)、段落标签(p)
一.C/S与B/S的区别 C/S(Client/Server):客户端/服务器 1)一般使用的软件都是C/S架构,比如QQ.360.office365: 2)C表示客户端,用户通过客户端来使用软件:S ...
- 使用eclipse创建mavenWeb项目,中途遇到的问题及解决方案!
创建MavenWeb项目的步骤,如下: 1).new--->Maven --->maven project,如图: 之后, next,最后finish,项目创建完成,项目的目录如下: 将w ...
- 数学: HDU1005 Number Sequence
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 分布式理论: CAP、BASE (转)
分布式系统的CAP理论是由Eric Brewer于1999年首先提出的,又被称作布鲁尔定理(Brewer's theorem),CAP是对Consistency(一致性).Availability(可 ...