您好,登錄后才能下訂單哦!
這篇文章主要為大家分析了怎么使用Monit部署服務器監控系統的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“怎么使用Monit部署服務器監控系統”的知識吧。
Monit 對系統管理員來說所謂是神器,它是一款功能非常豐富的進程、文件、目錄和設備的監測軟件,下面就和大家詳細介紹一下使用Monit部署服務器監控系統。
Monit已經被包含在多數Linux發行版的軟件倉庫中了。
Debian、Ubuntu或者Linux Mint:
$ sudo aptitude install monit
Fedora或者CentOS/RHEL:
在CentOS/RHEL中,你必須首先啟用EPEL或者Repoforge軟件倉庫.
# yum install monit
Monit自帶一個文檔完善的配置文件,其中包含了很多例子。主配置文件在/etc/monit.conf(Fedora/CentOS/RHEL 中),或者/etc/monit/monitrc(Debian/Ubuntu/Mint 中)。Monit配置文件有兩部分:“Global”(全局)和“Services”(服務)。
Monit可以使用郵件服務來發送通知,也可以使用HTTP/HTTPS頁面來展示。我們先使用如下配置的web狀態頁面吧:
Monit監聽1966端口。
對web狀態頁面的訪問是通過SSL加密的。
使用monituser/romania作為用戶名/口令登錄。
只允許通過localhost、myhost.mydomain.ro和在局域網內部(192.168.0.0/16)訪問。
Monit使用pem格式的SSL證書。
之后的步驟,我會使用一個基于Red Hat的系統。在基于Debian的系統中的步驟也是類似的。
首先,在/var/cert生成一個自簽名的證書(monit.pem):
# mkdir /var/certs# cd /etc/pki/tls/certs# ./make-dummy-cert monit.pem# cp monit.pem /var/certs# chmod 0400 /var/certs/monit.pem
現在將下列代碼片段放到Monit的主配置文件中。你可以創建一個空配置文件,或者基于自帶的配置文件修改。
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
然后,我們來設置Monit的郵件通知。我們至少需要一個可用的SMTP服務器來讓Monit發送郵件。這樣就可以(按照你的實際情況修改):
郵件服務器的機器名:smtp.monit.ro
Monit使用的發件人:monit@monit.ro
郵件的收件人:guletz@monit.ro
郵件服務器使用的SMTP端口:587(默認是25)
有了以上信息,郵件通知就可以這樣配置:
set mailserver smtp.monit.ro port 587set mail-format { from: monit@monit.ro subject: $SERVICE $EVENT at $DATE on $HOST message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION. Yours sincerely, Monit }set alert guletz@monit.ro
就像你看到的,Monit會提供幾個內部變量($DATE、$EVENT、$HOST等),你可以按照你的需求自定義郵件內容。如果你想要從Monit所在機器發送郵件,就需要一個已經安裝的與sendmail兼容的程序(如postfix或者ssmtp)。
接下來就該配置Monit守護進程了。可以將其設置成這樣:
在120秒后進行第一次檢測。
每3分鐘檢測一次服務。
使用syslog來記錄日志。
如下代碼段可以滿足上述需求。
set daemon 120 with start delay 240set logfile syslog facility log_daemon
我們必須定義“idfile”,Monit守護進程的一個獨一無二的ID文件;以及“eventqueue”,當monit的郵件因為SMTP或者網絡故障發不出去,郵件會暫存在這里;以及確保/var/monit路徑是存在的。然后使用下邊的配置就可以了。
set idfile /var/monit/idset eventqueue basedir /var/monit
現在“Global”部分就完成了。Monit配置文件看起來像這樣:
# Global Section# status webpage and acl'sset 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# mail-serverset mailserver smtp.monit.ro port 587# email-formatset mail-format { from: monit@monit.ro subject: $SERVICE $EVENT at $DATE on $HOST message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION. Yours sincerely, Monit }set alert guletz@monit.ro# delay checksset daemon 120 with start delay 240set logfile syslog facility log_daemon# idfile and mail queue pathset idfile /var/monit/id set eventqueue basedir /var/monit
現在是時候驗證我們的工作了,你可以通過運行如下命令來驗證存在的配置文件(/etc/monit.conf):
# monit -tControl file syntax OK
如果monit提示任何錯誤,請再檢查下配置文件。幸運的是,錯誤/警告信息是可以幫助你發現問題的,比如:
monit: Cannot stat the SSL server PEM file '/var/certs/monit.pem' -- No such file or directory/etc/monit/monitrc:10: Warning: hostname did not resolve 'smtp.monit.ro'
一旦你確認配置文件沒問題了,可以啟動monit守護進程,然后等2到3分鐘:
# service monit start
如果你使用的是systemd,運行:
# systemctl start monit
現在打開一個瀏覽器窗口,然后訪問https://
如果你使用的是自簽名的SSL證書,你會在瀏覽器中看到一個警告信息。繼續訪問即可。
你完成登錄后,就會看到這個頁面。
在這個教程的其余部分,我們演示監控一個本地服務器和常見服務的方法。你會在官方wiki頁面看到很多有用的例子。其中的多數是可以直接復制粘貼的!
我們先來監控本地服務器的CPU、內存占用。復制如下代碼段到配置文件中。
check system localhost if loadavg (1min) > 10 then alert if loadavg (5min) > 6 then alert if memory usage > 75% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 60% then alert if cpu usage (wait) > 75% then alert
你可以很容易理解上邊的配置。最上邊的check是指每個監控周期(全局配置里設置的120秒)都對本機進行下面的操作。如果滿足了任何條件,monit守護進程就會使用郵件發送一條報警。
如果某個監控項不需要每個周期都檢查,可以使用如下格式,它會每240秒檢查一次平均負載。
if loadavg (1min) > 10 for 2 cycles then alert
先檢查我們的sshd是否安裝在/usr/sbin/sshd:
check file sshd_bin with path /usr/sbin/sshd
我們還想檢查sshd的啟動腳本是否存在:
check file sshd_init with path /etc/init.d/sshd
最后,我們還想檢查sshd守護進程是否存活,并且在監聽22端口:
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
我們可以這樣解釋上述配置:我們檢查是否存在名為sshd的進程,并且有一個保存其pid的文件存在(/var/run/sshd.pid)。如果任何一個不存在,我們就使用啟動腳本重啟sshd。我們檢查是否有進程在監聽22端口,并且使用的是SSH協議。如果沒有,我們還是重啟sshd。如果在最近的5個監控周期(5×120秒)至少重啟5次了,sshd就被認為是不能用的,我們就不再檢查了。
現在我們來設置一個檢查遠程SMTP服務器(如192.168.111.102)的監控。假定SMTP服務器運行著SMTP、IMAP、SSH服務。
check host MAIL with address 192.168.111.102 if failed icmp type echo within 10 cycles then alert if failed port 25 protocol smtp then alert else if recovered then exec "/scripts/mail-script" if failed port 22 protocol ssh then alert if failed port 143 protocol imap then alert
我們檢查遠程主機是否響應ICMP協議。如果我們在10個周期內沒有收到ICMP回應,就發送一條報警。如果監測到25端口上的SMTP協議是異常的,就發送一條報警。如果在一次監測失敗后又監測成功了,就運行一個腳本(/scripts/mail-script)。如果檢查22端口上的SSH或者143端口上的IMAP協議不正常,同樣發送報警。
至此關于使用Monit部署服務器監控系統的教程就暫時分享到此,這只是Monit功能的冰山一角。
關于“怎么使用Monit部署服務器監控系統”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。