Monit 初步安装

monit是一款功能强大的系统状态、进程、文件、目录和设备的监控软件,用于*nix平台, 它可以自动重启那些已经挂掉的程序,非常适合监控系统关键的进程和资源,如:nginx、apache、mysql和cpu占有率等。而监控管理Python进程,常用的是supervisor,后续会另外撰文介绍。


下面分别介绍monit的安装、配置和启动。

安装

Step 1 创建 M/Monit 库

 /usr/local/mysql/bin/mysqladmin create mmonit -uUSER -pPASSWD

/usr/local/mysql/bin/mysql -f -h localhost -uUSER -pPASSWD -e "use mysql; grant all privileges on  mmonit.* to mmonit@localhost identified by 'mmonit';"

/usr/local/mysql/bin/mysql -f -h localhost -uUSER -pPASSWD -e "use mysql; flush privileges;"


查看数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| mmonit             |
| mysql              |
| test               |
+--------------------+


Step 2 安装tar包

下载monit源码包 http://mmonit.com/download/

 tar zxf monit-5.1.1.tar.gz
 cd monit-5.1.1

/monit-5.1.1]# ./configure

/monit-5.1.1]# gmake

/monit-5.1.1]#  gmake install

/usr/bin/install -c  -m 755 -d /usr/local/bin || exit 1
/usr/bin/install -c  -m 755 -d /usr/local/share/man/man1 || exit 1
/usr/bin/install -c  -m 555 -s monit /usr/local/bin || exit 1
/usr/bin/install -c  -m 444 monit.1 /usr/local/share/man/man1/monit.1 || exit 1

Step 3 复制配置文件

/monit-5.1.1]# cp monitrc  /etc/


/mmonit-2.3.4/conf]# vi server.xml

           <Realm url="mysql://mmonit:[email protected]:3306/mmonit"
                  minConnections="5"
                  maxConnections="30"
                  reapConnections="300" />


配置

 vi /etc/monitrc

# 检查周期,默认为2分钟,在这设置为90秒
set daemon  90
 #     with start delay 240  #这是可选选项,首次检测工作延迟4分钟(一般情况下默认是的monit启动之后立即进行检测) 

# 日志文件

set logfile /var/log/monit.log

# monit进程号存放的位置

set idfile /var/.monit.id

#monit状态文件

set statefile /var/.monit.state

# 邮件通知服务器
set mailserver 119.254.72.233 

# 通知邮件的格式设置
set mail-format { from: [email protected] }

set mail-format { Subject: alert $HOST  $SERVICE $DESCRIPTION }

# 设置邮件通知接收者。建议发到gmail,方便邮件过滤
set alert [email protected]                       # receive all alerts

set alert [email protected]                       # receive all alerts

# set alert [email protected]  { timeout }  #只有监控的服务超时的时候才发送邮件通知到该邮件地址



set httpd port 2812 and                                               #设置http监控页面的端口
use address 119.254.72.248                                    #http监控页面的IP或域名
allow localhost                                                              #允许本地进行访问
allow 203.86.46.224/29                                              #允许此IP段访问
allow 203.86.63.133                                                    #允许此IP访问
allow USER:PASSWD                                                 #允许访问的用户名密码
   


#############################################################################
## Services
###############################################################################
#
# 系统整体运行状况监控,默认的就可以,可以自己去微调
# 系统名称,可以是IP或域名

   check system 119.254.72.248
    if loadavg (1min) > 4 then alert
    if loadavg (5min) > 2 then alert
    if memory usage > 75% then alert
    if cpu usage (user) > 70% then alert
    if cpu usage (system) > 30% then alert
    if cpu usage (wait) > 20% then alert


#-------------------->Http<----------------------#
check process apache with pidfile /usr/local/apache/logs/httpd.pid
start program = "/usr/local/apache/bin/apachectl start" with timeout 60 seconds
stop program  = "/usr/local/apache/bin/apachectl stop"
if failed host 119.254.72.248  port 80 protocol http then restart
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if children > 140 then restart


#-------------------->Http_post<----------------------#
check process httpd with pidfile /usr/local/http_post/logs/httpd.pid
start program = "/usr/local/http_post/bin/apachectl start" with timeout 60 seconds
stop program  = "/usr/local/http_post/bin/apachectl stop"
if failed host 119.254.72.248  port 8080 protocol http then restart


#-------------------->Nginx<----------------------#
check process nginx with pidfile /usr/local/nginx/logs/nginx.pid
start program = "/usr/local/nginx/sbin/nginx start" with timeout 60 seconds
stop program  = "/usr/local/nginx/sbin/nginx stop"
if failed host 119.254.72.248  port 81 protocol http then restart


#-------------------->Mysql<----------------------#
check process mysqld with pidfile /usr/local/mysql/var/m-g3.dns.com.cn.pid
start program = "/usr/local/mysql/bin/mysqlctl  start 3306" with timeout 60 seconds
stop program  = "/usr/local/mysql/bin/mysqlctl  stop 3306"
if failed host 119.254.72.248 port 3306  protocol  then restart
 
 
#-------------------->Nfs<----------------------#
check process nfsd with pidfile /var/run/mountd.pid
start program = "/etc/rc.d/nfsd start" with timeout 60 seconds
stop program  = "/etc/rc.d/nfsd stop"
if failed host 119.254.72.248 port 2049  protocol nfsd then restart
 
 
#-------------------->Spam<----------------------#
check process Spamd with pidfile /var/run/spamd.pid
start program = "/usr/local/sbin/spamctl  start" with timeout 60 seconds
stop program  = "/usr/local/sbin/spamctl  stop"
if 5 restarts within 5 cycles then timeout
if cpu usage > 99% for 5 cycles then alert
if mem usage > 99% for 5 cycles then alert


#磁盘空间
check filesystem  root with path /
    if space usage > 70% then alert
    if inode usage > 85% then alert
check filesystem home  with path /home
    if space usage > 50% for 5 times within 15 cycles then alert
        if inode usage > 85% then alert
check filesystem usr with path /usr
    if space usage > 70% then alert
        if inode usage > 85% then alert
check filesystem var  with path /var
    if space usage > 70% then alert
        if inode usage > 85% then alert

----------------------------------------------------------------

根据我的生产需求,到目前为止算是配置完成


启动

# /usr/local/bin/monit -c /etc/monitrc
monit: generated unique Monit id 3fc046bad3fc56f8959f6b0fe6d9267d and stored to '/var/.monit.id'
Starting monit daemon with http interface at [119.254.72.248:2812]


# ps -aux |grep monit
root     78633  0.0  0.1  6360  2836  ??  S     2:49PM   0:00.01 /usr/local/bin/monit


------------------------------------------------------------

monit的web配置见下篇



你可能感兴趣的:(apache,mysql,nginx,System,Path,interface)