Code前端首页关于Code前端联系我们

在 Linux 上使用 bash 脚本监控消息日志

terry 2年前 (2023-09-28) 阅读数 54 #未命名
Linux 上用 Bash 脚本监控 messages 日志

如果您只有几个系统并且想要监控它们,那么编写一个小的 shell 脚本可以使您的任务变得非常简单。
-- Magesh Maruthamuthu (作者)

当今市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它会发送电子邮件警报。它可以监控 CPU 使用情况、内存使用情况、交换使用情况、磁盘空间使用情况等一切内容。

如果您有多个系统并想要监控它们,一个小的 shell 脚本将非常轻松地完成您的工作。

在本教程中,我们添加了一个 shell 脚本来监视 Linux 系统上的消息日志。

此脚本检查 /var/log/messages 文件中的“警告”、“错误”和“严重”,如果发现相关内容,则会向指定的电子邮件地址发送电子邮件。

如果服务器有很多匹配的字符串,我们不能经常运行这个脚本,这可能会填满收件箱,我们可以每天运行一次。

为了解决这个问题,我让脚本以不同的方式触发电子邮件。

如果在 /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:00 收到昨天日志的电子邮件提醒。

输出:您将收到一封类似于以下内容的电子邮件警报。

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]

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门