文档章节

monit监控工具(客户端)

liky_cn
 liky_cn
发布于 2014/06/25 11:28
字数 2446
阅读 176
收藏 2
点赞 0
评论 0

1、安装Monit

RedhatCentOS可以到:http://pkgs.repoforge.org/monit/ 下载对应位数rpm包安装。 

Debian可以直接:apt-get install monit 安装。

官网下载最新版:http://mmonit.com/download/

 

源码编译安装:

相关依赖: yum install pam-devel

 

tar zxvf monit-5.7.tar.gz

cd monit-5.7

./configure --prefix=/usr/local/monit --sysconfdir=/usr/local/monit/etc

make

make install

mkdir -p /usr/local/monit/etc

cp monitrc /usr/local/monit/etc

chmod 600 /usr/local/monit/etc/monitrc

2、修改配置文件

CentOSRPM包安装的话配置文件在: /etc/monit.conf

Debian apt-get安装的话配置文件在:/etc/monit/monitrc

源码编译在安装目录 /etc/monit.conf

下面是一个简单的例子,配置文件中已经包含了大量的例子,可以看配置文件参考。

 

set daemon 120 #设置检测时间

set logfile /var/log/monit.log #monit日志

set httpd port 2812 and # monit内置了一个用于查看被监视服务

use address 192.168.10.197 # 设置这个http服务器的地址或注释使用所有本机IP

allow 192.168.10.0/24 # 允许本地访问

allow admin:monit # 设置使用用户名admin和密码monit

set mailserver smtp.12320.tv port 25 USERNAME "zsxlmonitor" PASSWORD "123456" #(设置发送邮件的服务器及邮箱)

#制定报警邮件的格式

set mail-format {

from: zsxlmonitor@12320.tv

subject: [From Monit]$SERVICE $EVENT at $DATE

message:Date:$DATE

ServerHost: $HOST

Item:$SERVICE

Problem: $DESCRIPTION.

Action:$ACTION

}

#指定邮件接收者

set alert zsxlmonitor@12320.tv with reminder on 3 cycles #3个周期发送一次警告

或者

set alert zsxlmonitor@12320.tv #每个错误都发送警告邮件

##################### 监控实例 #####################

#检测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

 

#检测mysql服务

check process mysql with pidfile /usr/local/mysql/var/vpser.pid

group database

start program = "/etc/init.d/mysql start"

stop program = "/etc/init.d/mysql stop"

if failed host 127.0.0.1 port 3306 then restart

if 5 restarts within 5 cycles then timeout

 

#检测nginx服务

check process nginx with pidfile /usr/local/nginx/logs/nginx.pid

start program = "/etc/init.d/nginx start"

stop program = "/etc/init.d/nginx stop"

if failed host localhost port 80 protocol http

then restart

 

自定义脚本:

if failed host localhost port 80 protocol http then exec “/usr/bin/restart.sh”

 

配置中的pid及启动、关闭脚本的路径一定要是全路径,且参数一定要正确否则会造成无法正常检测或正常启动。

如果添加了http可以直接使用http://192.168.10.197:2812 进行管理。

 

可以看到监控服务的运行状态:

3、启动/停止Monit

/usr/local/monit/bin/monit 启动

/usr/local/monit/bin/monit quit 关闭

 

Optional action arguments for non-daemon mode are as follows:

start all           - Start all services

start name          - Only start the named service

stop all            - Stop all services

stop name           - Only stop the named service

restart all         - Stop and start all services

restart name        - Only restart the named service

monitor all         - Enable monitoring of all services

monitor name        - Only enable monitoring of the named service

unmonitor all       - Disable monitoring of all services

unmonitor name      - Only disable monitoring of the named service

reload              - Reinitialize monit

status              - Print full status information for each service

summary             - Print short status information for each service

quit                - Kill monit daemon process

validate            - Check all services and start if not running

procmatch <pattern> - Test process matching pattern

 

4、参数配置语法

 

4.1 监控模块

         监控性能[运行中的程序,需指定PID]

CHECK PROCESS <unique name> <PIDFILE <path> | MATCHING <regex>>

监控文件

CHECK FILE <unique name> PATH <path>

 

CHECK FIFO <unique name> PATH <path>

监控文件系统

CHECK FILESYSTEM <unique name> PATH <path>

监控目录

CHECK DIRECTORY <unique name> PATH <path>

监控主机

CHECK HOST <unique name> ADDRESS <host address>

监控系统

CHECK SYSTEM <unique name>

监控程序

CHECK PROGRAM <unique name> PATH <executable file> [TIMEOUT <number> SECONDS]

 

4.2 动作[action]

ALERT               执行报警动作

RESTART           执行重启[根据定义的start programstop program,先执行stop,然后start]

START                执行启动[直接执行定义的start program]

STOP                  执行关闭[直接执行定义的stop program]

EXEC                  执行脚本[直接执行 “ ” 内指定脚本(全路径)]

UNMONITOR   停止监控

 

4.3 资源项目[RESOURCE]

--PROCESS

CPU([user|system|wait])                  CPU明细

CPU                                                         CPU使用<%>

TOTALCPU                                             CPU使用率【含子进程】<%>

SWAP                                                       交换分区使用< Byte, kB, MB, GB >

CHILDREN                                             子进程

MEMORY                                                        内存使用< Byte, kB, MB, GB >

TOTALMEMORY                                   内存使用【含子进程】< Byte, kB, MB, GB >

LOADAVG([1min|5min|15min])       系统负载

UPTIME                                                  运行时间< "SECONDS", "MINUTES", "HOURS", or "DAYS" >

 

--FILE

SIZE                                                         大小< "B","KB","MB","GB" >

Permission                                             权限

UID

GID

PID

PPID

TIMESTAMP                                          时间戳< "SECONDS", "MINUTES", "HOURS", or "DAYS" >

 

-- SYSTEMFILE

usage                                                      已使用

SPACE                                                      距离项存在[]

INODE                                                     inode</%>

 

--HOST

host []                                                     主机[IP、域名]

port []                                                      端口[]

type []                                                     传输协议[TCP|UDP|TCPSSL]

protocol []                                              服务协议[APACHE-STATUS DNS DWP FTP GPS HTTP IMAP CLAMAV LDAP2 LDAP3 LMTP MEMCACHE MYSQL NNTP NTP3 POP POSTFIX-POLICY RADIUS RDATE RSYNC SIP SMTP SSH TNS PGSQL]

The HTTP protocol supports in addition:

         REQUEST

         HOSTHEADER

         CHECKSUM

 

The Apache-status protocol supports in addition:

         logging (loglimit)

         closing connections (closelimit)

         performing DNS lookups (dnslimit)

         in keepalive with a client (keepalivelimit)

         replying to a client (replylimit)

         receiving a request (requestlimit)

         initialising (startlimit)

         waiting for incoming connections (waitlimit)

         gracefully closing down (gracefullimit)

         performing cleanup procedures (cleanuplimit)

 

-- PROGRAM

status                                                     程序执行状态

 

4.4 判断测量[TEST]

FAILED [RESOURCE] 项的值为错误

CHANGED [RESOURCE] 项存在变化

EXIST [] 存在[]

DOES NOT EXIST 不存在[]

 

4.4 比较语法

"<", ">", "!=", "=="

"gt", "lt", "eq", "ne"

"greater", "less", "equal", "notequal" then

 

4.5 监测时间

 

EVERY [number] CYCLES

every 2 cycles #2个周期监测一次

 

EVERY [cron]

every "* * * * *" 周,*所有 x-y表示Xy,“,”指定某个点

every "* 8-19 * * 1-5" #每周15,每天早上8点至晚上7点内,按周期间隔监测

 

NOT EVERY [cron] 用法与VERY [cron]相反

 

5、实例语法

 

1.系统性能

 

#监控系统性能,定义监控名称myhost

check system myhost

 

#如果1分钟内系统负载大于4,则执行报警

if loadavg (1min) > 4 then alert

 

#如果5分钟内系统负载大于2,则执行报警

if loadavg (5min) > 2 then alert

 

#如果总内存使用率高于75%,则执行报警

if memory usage > 75% then alert

 

#如果交换空间使用率大于25%,则执行报警

if swap usage > 25% then alert

 

#如果CPU(user)使用率高于70%,则执行报警

if cpu usage (user) > 70% then alert

 

#如果CPU(system)使用率高于30%,则执行报警

if cpu usage (system) > 30% then alert

 

#如果CPU(wait)使用率高于20%,则执行报警

if cpu usage (wait) > 20% then alert

 

2.硬盘监控

 

#监控文件系统:/dev/sdb1,定义监控名称为datafs

check filesystem datafs with path /dev/sdb1

 

#挂载、卸载文件系统,注意开启这个功能。

#start program  = "/bin/mount /data"

#stop program  = "/bin/umount /data"

 

#检测文件系统的权限不为660时,则停止监控

if failed permission 660 then unmonitor

 

#检测文件系统的UID不为root时,则停止监控

if failed uid root then unmonitor

 

#检测文件系统的GID不为disk时,则停止监控

if failed gid disk then unmonitor

 

#检测文件系统的空间使用率超过80%,则执行报警

if space usage > 80% for 5 times within 15 cycles then alert

 

#检测文件系统的空间使用率超过90%,则执行卸载文件系统

#if space usage > 99% then stop

 

#检测文件系统的inode使用数超过30000,则执行报警

if inode usage > 30000 then alert

 

#检测文件系统的inode使用率超过99%,则执行卸载文件系统

if inode usage > 99% then stop

 

3.文件监控

#监控文件:/data/mydatabase.db,定义监控名称为database

check file database with path /data/mydatabase.db

 

#检测文件系统的权限不为700时,则停止监控

if failed permission 700 then alert

 

#检测文件的UID不为data时,则执行报警

if failed uid data then alert

#检测文件的GID不为data时,则执行报警

if failed gid data then alert

 

#检测文件的时间戳大于15分钟时,则执行报警

if timestamp > 15 minutes then alert

 

#检测文件的大小如果大于100M,则执行脚本

if size > 100 MB then exec "/my/cleanup/script" as uid dba and gid dba

 

4.目录监控

#监控目录:/bin,定义监控名称为bin

check directory bin with path /bin

 

#如果目录权限不为755,则停止监控

#    if failed permission 755 then unmonitor

#如果目录的UID不为0,则停止监控

#    if failed uid 0 then unmonitor

#如果目录的GID不为0,则停止监控

#    if failed gid 0 then unmonitor

 

5.进程监控

 

#监控进程,指定进程的pid文件:/usr/local/apache/logs/httpd.pid,定义监控名称为Apache

 

check process Apache with pidfile /usr/local/apache/logs/httpd.pid

start program = "/usr/local/apache/bin/httpd -k start"

stop program  = "/usr/local/apache/bin/httpd -k stop"

 

#检测进程的CPU占用率高于60%时,则执行报警

if cpu > 60% for 5 cycles then alert

 

#检测进程的CPU占用率高于80%时,则执行重启

if cpu > 80% for 10 cycles then restart

 

#检测进程的总内存占用高于200MB时,则执行重启

#    if totalmem > 200.0 MB for 5 cycles then restart

 

#检测进程的子进程数高于200个,则执行报警

if children > 200 for 3 times within 5 cycles then alert

 

#检测进程的子进程数高于500个,则执行重启

if children > 500 for 5 times within 15 cycles then restart

 

#检测进程5分钟内的平均负载大于10时,则执行停止

#if loadavg(5min) greater than 10 for 8 cycles then stop

 

#检测127.0.0.180端口如果超时[5s]、错误,则执行重启

if failed host 127.0.0.1 port 80 protocol http for 5 times within 10 cycles then restart

 

#检测访问http://127.0.0.1/check.php,如果返回内容不是”OK”,则执行报警

if failed url http://127.0.0.1/check.php

and content == 'ok'

then alert

 

#检测访问127.0.0.1:80//somefile.html如果错误,则执行重启

if failed host 127.0.0.1 port 80 protocol http and request "/somefile.html" then restart

 

#检测指定主机,发送请求,判断返回值,执行指令

if failed host 127.0.0.1 port 80

send "GET / HTTP/1.0\r\nHost: 127.0.0.1\r\n\r\n"

expect "HTTP/[0-9\.]{3} 200 OK"

then alert

 

#检测apache-status判断值,执行指令

if failed host 127.0.0.1 port 80 protocol apache-status

                loglimit > 10% or

                dnslimit > 50% or

                waitlimit < 20%

 then alert

 

#if failed port 443 type tcpssl protocol http with timeout 15 seconds then restart

 

#如果在5个周期内重启3次进程,则判断为超时

#if 3 restarts within 5 cycles then timeout

 

#depends on apache_bin

#group server

 

6.监控主机

check host myserver with address 192.168.1.1

if failed icmp type echo count 3 with timeout 3 seconds then alert

if failed port 3306 protocol mysql with timeout 15 seconds then alert

if failed url http://user:password@www.foo.bar:8080/?querystring and content == 'action="j_security_check"' then alert


© 著作权归作者所有

共有 人打赏支持
liky_cn
粉丝 0
博文 9
码字总数 3744
作品 0
中山
系统管理员
用monit监控mongodb和rabbitmq

什么是monit Monit是一个跨平台的用来监控Unix/linux系统(比如Linux、BSD、OSX、Solaris)的工具。Monit特别易于安装,而且非常轻量级(只有500KB大小),并且不依赖任何第三方程序、插件或...

jackjoe ⋅ 2017/10/31 ⋅ 0

linux 进程监控

资料来源:linux 进程监控 supervise Supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序。 使用: mkdi...

hiqj ⋅ 2015/07/28 ⋅ 0

Linux 进程管理与监控(supervisor and monit)

一、Supervisor 1、安装 宿主机环境:( Centos 6.5 ) pip2.7 install supervisor 2、创建配置文件 通过 echosupervisordconf 命令来创建配置文件: echosupervisordconf >/etc/supervisord.co......

qw87112 ⋅ 2016/07/19 ⋅ 0

Monit 5.7 发布,Unix 系统监控工具

Monit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况。 Monit 5.7发布。2014-02-20 Monit 是一个进程、文件、目录和文件系统监控...

fei ⋅ 2014/02/21 ⋅ 1

Monit监控工具使用简介

功能 你可以用monit来监控进程,尤其对监控守护进程很有用,比如:在系统启动时间启动的/etc/init.d;比如:sendmail,ssh,apache,mysql等 1)你可以用Monit来监控files,directories,文件系...

莫问viva ⋅ 2015/07/06 ⋅ 0

monit系统监控

   Monit 是用于对系统中的进程、文件、目录、以及设备等进行监视和管理的工具.当你所指定的server宕机或者没有反应,monit会将该进程杀死并重启该 server.并通过邮件进行通知.Monit 包含一...

贪睡猫仙mosen ⋅ 2014/07/17 ⋅ 0

神器monit监控报警设置手记

Posted on2011-11-24by54chen 系统监控工具monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,用于Unix平台。它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原...

雷志伟 ⋅ 2011/12/08 ⋅ 0

Monit 5.3 发布,UNIX系统监控

Monit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况。 Monit 5.3 发布,该版本增加了一个新的“检查程序”表达式,这使得MONIT...

小卒过河 ⋅ 2011/09/13 ⋅ 3

为 Ubuntu Server 配置自动发邮件警报的 Monit

前几天奇点的服务器因为 CPU 100% 而被限频了,导致最近服务器的响应非常慢。我一直没有在服务器上做一些最基本的监控服务「比如连续多久 CPU 使用过 95% 就发一封警报邮件」之类的,这次事件...

I'm TualatriX ⋅ 01/06 ⋅ 0

monit 5.2 发布,bug修复版本

Monit 是一个Linux/UNIX系统上开源的进程、文件、目录和文件系统监控和管理工具,可自动维护和修复一些错误的情况。 下载 monit 5.2

红薯 ⋅ 2010/09/24 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python模块/包/库安装(6种方法)

Python模块/包/库安装(6种方法) 冰颖机器人 2016-11-29 21:33:26 一、方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二、方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip...

cswangyx ⋅ 29分钟前 ⋅ 0

零基础学习大数据人工智能,学习路线篇!系统规划大数据之路?

大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统,这两个是学习大数据的基础,学习的顺序不分前后。 Python:Python 的排名从去年开始就借助人工智能持续上升,现在它已经...

董黎明 ⋅ 37分钟前 ⋅ 0

openJdk和sun jdk的区别

使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的OpenJDK, 那么到底什么是OpenJDK,它与SUN JDK有什么关系和区别呢? 历史上的原因是,Ope...

jason_kiss ⋅ 47分钟前 ⋅ 0

梳理

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 它是JS的状态容器,是一种解决问题的方式,所以即可以用于 react 也可以用于 vue。 需要理解其思想及实现方式。 应用中所有的 stat...

分秒 ⋅ 59分钟前 ⋅ 0

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 今天 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 今天 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部