monit介紹和配置
monit介紹和配置
1.介紹
monit監控和管理程序、程式、檔案、目錄和Unix系統的檔案的工具。可以進行自動維護和修理,在錯誤的情況下執行有意義的因果關係的行動。比如,某個程序沒有執行啟動它;沒有響應重啟它;佔用太多資源停止該程序等等。也可以用來監控檔案、目錄或系統檔案的變化,如時間戳的改變,檢驗和的改變或大小的改變
2.安裝:(需先裝epel源)
yum install monit -y
3.配置
3.1 monit 的配置檔案monit.conf
set daemon 30 監控檢查的時間間隔
set logfile syslog 預設日誌為syslog,還可以設定為自定義路徑下的檔案
set pidfile /var/run/monit.pid 設定pid檔案的位置
set idfile /var/.monit.id 設定監控專案唯一ID的檔案位置 預設在$HOME/.monit.id
set statefile /var/.monit.state 預設儲存每個週期內monitorinig 狀態的檔案
set mailserver mail.bar.baz 主的郵件伺服器
backup.bar.baz port 10025 備的郵件伺服器
mailserver 支援格式為:
SET MAILSERVER <hostname|ip-address [PORT number] [USERNAME string] [PASSWORD string] [using SSLAUTO|SSLV2|SSLV3|TLSV1|TLSV11|TLSV12] [CERTMD5 checksum]>, ...
[with TIMEOUT X SECONDS]
[using HOSTNAME hostname]
set eventqueue #預設當郵件伺服器不可用時使用eventqueue儲存報警事件
basedir /var/monit
slots 100 #限制佇列大小
set mail-format { 設定郵件告警的格式
from: monit@$HOST
subject: monit alert -- $EVENT $SERVICE
message: $EVENT Service $SERVICE
Date: $DATE
Action: $ACTION
Host: $HOST
Description: $DESCRIPTION
Your faithful employee,
Monit
}
set alert [email protected] 設定接收告警的郵箱
以上是全域性的配置,具體的services監控語法後面會介紹
3.2 程序監控
在 /etc/monit.d/下建立 nginx ,,並重啟monit。內容如下
check process nginx with pidfile /usr/local/xywy/nginx/run/nginx.pid start program = "/usr/local/xywy/nginx/sbin/nginx" with timeout 30 seconds stop program = "/usr/local/xywy/nginx/sbin/nginx -s stop"
3.3 監控檔案
在/etc/monit.d/下建立monit_test ,並重啟monit,內容如下
check file monit.conf path /etc/monit.conf group system if changed sha1 checksum then exec "/usr/local/bin/monit -c /etc/monit.conf reload"
3.4 監控檔案裝置
check device VAR_LOG with path /var/log if space usage > 85% then alert check filesystem tmpfs with path /var if space usage > 80% then alert
下面是配置綜合案例
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 check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysqld start" stop program = "/etc/init.d/mysqld stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout check process nginx with pidfile /var/run/nginx.pid start program = "/etc/init.d/nginx start" stop program = "/etc/init.d/nginx stop" if failed host www.vpsee.com port 80 protocol http then restart check process php_cgi with pidfile /var/run/php_cgi.pid start program = "/etc/init.d/php_cgi start" stop program = "/etc/init.d/php_cgi stop" if failed host 127.0.0.1 port 9000 then restart if 5 restarts within 5 cycles then timeout check process apache with pidfile /var/run/httpd.pid group www start program = "/etc/init.d/httpd start" stop program = "/etc/init.d/httpd stop" if failed host www.vpsee.com port 8080 protocol http then restart if cpu is greater than 80% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if totalmem > 512 MB for 5 cycles then restart if children > 200 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout
3.5 monit命令使用
-c 指定配置檔案
-d 後臺執行
-l 指定logfile
-p 指定pid file
-s 指定statefile
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style