在 Linux 上用 Bash 指令碼監控 messages 日誌
目前市場上有許多開源監控工具可用於監控 Linux 系統的效能。當系統達到指定的閾值限制時,它將傳送電子郵件警報。它可以監視 CPU 利用率、記憶體利用率、交換利用率、磁碟空間利用率等所有內容。
如果你只有很少的系統並且想要監視它們,那麼編寫一個小的 shell 指令碼可以使你的任務變得非常簡單。
在本教程中,我們新增了一個 shell 指令碼來監視 Linux 系統上的 messages 日誌。
我們過去新增了許多有用的 shell 指令碼。如果要檢視這些內容,請導航至以下連結。
此指令碼將檢查 /var/log/messages
檔案中的 “warning“、“error” 和 “critical”,如果發現任何有關的東西,就給指定電子郵件地址發郵件。
如果伺服器有許多匹配的字串,我們就不能經常執行這個可能填滿收件箱的指令碼,我們可以在一天內執行一次。
為了解決這個問題,我讓指令碼以不同的方式觸發電子郵件。
如果 /var/log/messages
檔案中昨天的日誌中找到任何給定字串,則指令碼將向給定的電子郵件地址傳送電子郵件警報。
注意:你需要更改電子郵件地址,而不是我們的電子郵件地址。
# vi /opt/scripts/os-log-alert.sh
#!/bin/bash
#Set the variable which equal to zero
prev_count=0
count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l)
if [ "$prev_count" -lt "$count" ] ; then
# Send a mail to given email id when errors found in log
SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`""
# This is a temp file, which is created to store the email message.
MESSAGE="/tmp/logs.txt"
TO="2daygeek@gmail.com"
echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE
echo "Hostname: `hostname`" >> $MESSAGE
echo -e "\n" >> $MESSAGE
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
echo "Error messages in the log file as below" >> $MESSAGE
echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >> $MESSAGE
mail -s "$SUBJECT" "$TO" < $MESSAGE
#rm $MESSAGE
fi
為 os-log-alert.sh
檔案設定可執行許可權。
$ chmod +x /opt/scripts/os-log-alert.sh
最後新增一個 cron 任務來自動執行此操作。它將每天 7 點鐘執行。
# crontab -e
0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh
注意:你將在每天 7 點收到昨天日誌的電子郵件提醒。
輸出:你將收到類似下面的電子郵件提醒。
ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin.
+-----------------------------------------------------+
Error messages in the log file as below
+-----------------------------------------------------+
Jul 3 02:40:11 ns1 kernel: php-fpm[3175]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
Jul 3 02:50:14 ns1 kernel: lmtp[8249]: segfault at 20 ip 00007f9cc05295e4 sp 00007ffc57bca1a0 error 4 in libdovecot-storage.so.0.0.0[7f9cc04df000+148000]
Jul 3 15:36:09 ns1 kernel: php-fpm[17846]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
Jul 3 15:45:54 ns1 pure-ftpd: (?@5.188.62.5) [WARNING] Authentication failed for user [daygeek]
Jul 3 16:25:36 ns1 pure-ftpd: (?@104.140.148.58) [WARNING] Sorry, cleartext sessions and weak ciphers are not accepted on this server.#012Please reconnect using TLS security mechanisms.
Jul 3 16:44:20 ns1 kernel: php-fpm[8979]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
作者:Magesh Maruthamuthu 選題:lujun9972 譯者:wxy 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- 透過shell指令碼監控日誌切換頻率指令碼
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- 黑盒監控、日誌監控
- Linux下使用GoAccess監控Nginx訪問日誌LinuxGoNginx
- Mysql事件監控日誌MySql事件
- linux實現shell指令碼監控磁碟記憶體達到閾值時清理catalina.out日誌Linux指令碼記憶體
- Linux-通用性日誌切割指令碼Linux指令碼
- 小程式日誌監控工具
- 03-Loki 日誌監控Loki
- 【shell】磁碟監控指令碼指令碼
- 在 Linux 上監控 CPU 和 GPU 溫度LinuxGPU
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- ELK監控nginx日誌總結Nginx
- Grafana、Prometheus、mtail-日誌監控GrafanaPrometheusAI
- 部署Sentry日誌監控系統
- 世界上最短的bash指令碼指令碼
- 在linux上怎麼檢視tomcat日誌LinuxTomcat
- Bash指令碼指令碼
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼
- PostgreSQL之鎖監控指令碼SQL指令碼
- ORACLE CRS日誌中的ClssnmPollingThread Missed Checkins MessagesOraclethread
- 前端異常日誌監控 – 使用Sentry前端
- mongodb profiling慢請求監控日誌MongoDB
- Zabbix如何監控Oracle的告警日誌Oracle
- 跟我一起學docker(15)--監控日誌和日誌管理Docker
- linux中用shell指令碼對tomcat和nginx做日誌切割Linux指令碼TomcatNginx
- 線上公開課 | 監控與日誌的黃金法則
- 日誌監控實踐 - 監控Agent整合Lua引擎實現多維度日誌採集
- Linux編寫Bash指令碼的10個技巧Linux指令碼
- 從一個埋點日誌上報指令碼說起指令碼
- 監控系統告警指令碼集合指令碼
- 利用 Shell 指令碼來監控 Linux 系統的記憶體指令碼Linux記憶體
- 如何優雅地上報前端監控日誌前端
- 分散式系統監控(五)- 日誌分析分散式
- 使用zabbix監控oracle的後臺日誌Oracle
- 爬蟲日誌監控 -- Elastc Stack(ELK)部署爬蟲AST
- zabbix-mongodb監控指令碼(高效能、低佔用)MongoDB指令碼