Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。
在CentOS 6.4上配置Monit的步骤:
我们以服务器IP地址:10.153.126.189,为例进行配置,监控10.153.110.12, 10.153.75.78这两台服务器。
一、安装EPEL。在命令行输入:
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
二、安装Monit。在命令行输入:
# yum install monit –y
这一步可能会报错:
1
2
3
4
|
# yum install monit –y Loaded plugins: fastestmirror, security Determining fastest mirrors Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
|
解决方法:
1
|
vi /etc/yum.repos.d/epel.repo |
编辑[epel]下的baseurl前的#号去掉,mirrorlist前添加#号。正确配置如下:
1
2
3
4
5
6
7
8
|
[epel] name =Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG- KEY -EPEL-6
|
三、至此Monit安装完毕,接下来配置monit.conf文件。
1、文件位置在/etc/monit.conf,修改常见配置:
1)检测时间、日志位置:
1
2
3
|
set daemon 120
with start delay 240
set logfile syslog facility log_daemon
|
每120s检测一次;启动后延时240s开始检测;
日志文件位置;
2)id文件
1
2
3
|
set idfile /var/monit/id
set eventqueue
basedir /var/monit
|
我们必须定义“idfile”,Monit守护进程的一个独一无二的ID文件;
“eventqueue”,当monit的邮件因为SMTP或者网络故障发不出去,邮件会暂存在这里;以及确保/var/monit路径是存在的。然后使用下边的配置就可以了;
3)设置web界面:
1
2
3
4
5
6
7
|
set httpd port 1966 and
SSL ENABLE
PEMFILE /var/certs/monit.pem
allow monituser:romania
allow localhost
allow 192.168.0.0/16
allow myhost.mydomain.ro
|
2、监控信息可以直接写到/etc/monit.conf文件中,也可以单独创建一个.cfg后缀的文件,将check... if 语句添加到里面,然后在monit.conf文件末尾加入include路径。
-
set daemon 120 #设置检测时间
-
-
set logfile /var/log/monit.log #monit日志
-
-
set httpd port 2812 and # monit内置了一个用于查看被监视服务
-
-
use address 192.168.10.197 # 设置这个http服务器的地址
-
-
allow 192.168.10.0/24 # 允许本地访问
-
-
allow admin:monit # 设置使用用户名admin和密码monit
-
-
set mailserver smtp.sina.com port 25 USERNAME "linlianpengit@sina.com" PASSWORD "***" #(设置发送邮件的服务器及邮箱)
-
-
#制定报警邮件的格式
-
-
set mail-format {
-
-
from: linlianpengit@sina.com
-
-
subject: $SERVICE $EVENT at $DATE
-
-
message: Monit $ACTION $SERVICE at $DATE on $HOST: $DESCRIPTION.
-
-
}
-
-
#指定邮件接收者
-
-
set alert XXX@qq.com with reminder on 3 cycles
-
-
#检测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
配置中的pid及启动、关闭脚本的路径一定要是全路径,且参数一定要正确否则会造成无法正常检测或正常启动。
如果添加了http可以直接使用http://192.168.10.197:2812 进行管理。
可以看到监控服务的运行状态:
3、启动/停止Monit
CentOS:
chkconfig monit on //加入开机启动
/etc/init.d/monit {start|stop|restart|force-reload|syntax}
Debian:
编辑:/etc/default/monit 文件,查找 startup=0 ,将0改为1,保存。
update-rc.d -f monit defaults
/etc/init.d/monit {start|stop|restart|force-reload|syntax}