在Linux上用Bash脚本监控messages日志

系统 Linux
目前市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它将发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。

 [[272435]]

目前市场上有许多开源监控工具可用于监控 Linux 系统的性能。当系统达到指定的阈值限制时,它将发送电子邮件警报。它可以监视 CPU 利用率、内存利用率、交换利用率、磁盘空间利用率等所有内容。

如果你只有很少的系统并且想要监视它们,那么编写一个小的 shell 脚本可以使你的任务变得非常简单。

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

我们过去添加了许多有用的 shell 脚本。如果要查看这些内容,请导航至以下链接。

此脚本将检查 /var/log/messages 文件中的 “warning“、“error” 和 “critical”,如果发现任何有关的东西,就给指定电子邮件地址发邮件。

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

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

如果 /var/log/messages 文件中昨天的日志中找到任何给定字符串,则脚本将向给定的电子邮件地址发送电子邮件警报。

注意:你需要更改电子邮件地址,而不是我们的电子邮件地址。

  1. # vi /opt/scripts/os-log-alert.sh
  1. #!/bin/bash
  2. #Set the variable which equal to zero
  3. prev_count=0
  4.  
  5. count=$(grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | egrep -wi 'warning|error|critical' | wc -l)
  6.  
  7. if [ "$prev_count" -lt "$count" ] ; then
  8. # Send a mail to given email id when errors found in log
  9. SUBJECT="WARNING: Errors found in log on "`date --date='yesterday' '+%b %e'`""
  10. # This is a temp file, which is created to store the email message.
  11. MESSAGE="/tmp/logs.txt"
  12. TO="2daygeek@gmail.com"
  13. echo "ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin." >> $MESSAGE
  14. echo "Hostname: `hostname`" >> $MESSAGE
  15. echo -e "\n" >> $MESSAGE
  16. echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
  17. echo "Error messages in the log file as below" >> $MESSAGE
  18. echo "+------------------------------------------------------------------------------------+" >> $MESSAGE
  19. grep -i "`date --date='yesterday' '+%b %e'`" /var/log/messages | awk '{ $3=""; print}' | egrep -wi 'warning|error|critical' >> $MESSAGE
  20. mail -s "$SUBJECT" "$TO" < $MESSAGE
  21. #rm $MESSAGE
  22. fi

os-log-alert.sh 文件设置可执行权限。

  1. $ chmod +x /opt/scripts/os-log-alert.sh

最后添加一个 cron 任务来自动执行此操作。它将每天 7 点钟运行。

  1. # crontab -e
  1. 0 7 * * * /bin/bash /opt/scripts/os-log-alert.sh

注意:你将在每天 7 点收到昨天日志的电子邮件提醒。

输出:你将收到类似下面的电子邮件提醒。

  1. ATTENTION: Errors are found in /var/log/messages. Please Check with Linux admin.
  2.  
  3. +-----------------------------------------------------+
  4. Error messages in the log file as below
  5. +-----------------------------------------------------+
  6. Jul 3 02:40:11 ns1 kernel: php-fpm[3175]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
  7. 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]
  8. Jul 3 15:36:09 ns1 kernel: php-fpm[17846]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]
  9. Jul 3 15:45:54 ns1 pure-ftpd: (?@5.188.62.5) [WARNING] Authentication failed for user [daygeek]
  10. 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.
  11. Jul 3 16:44:20 ns1 kernel: php-fpm[8979]: segfault at 299 ip 000055dfe7cc7e25 sp 00007ffd799d7d38 error 4 in php-fpm[55dfe7a89000+3a7000]

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2019-06-24 08:53:01

Bash脚本Linux系统运维

2021-10-08 14:14:03

jconsoleJavaLinux

2022-05-02 18:29:35

bashshellLinux

2019-06-03 20:00:09

LinuxCPU温度GPU温度

2019-11-18 11:40:41

CentOSRHELBash脚本

2020-10-13 19:04:58

Bash信号捕获Shell脚本

2019-08-01 09:52:46

LinuxNetData性能监控工具

2021-06-29 06:39:21

Linuxdust命令du命令

2022-01-09 15:00:16

LinuxAudacity声音编辑器

2023-05-11 13:55:00

LinuxKdenlive编辑视频

2021-12-03 15:04:06

FlatpakLinux

2019-11-11 15:10:37

FedoraLinuxbash

2010-01-27 09:58:59

Linuxunix程序日志

2014-01-02 15:16:42

PythonLinux服务器服务器监控

2019-11-07 15:02:00

Linuxstrace系统调用

2023-09-26 10:52:38

LinuxDoxygen

2021-07-18 11:43:58

Linux密码加密

2023-01-28 13:39:31

Linuxzram

2010-06-23 15:55:36

Linux Bash

2022-07-01 15:33:53

LinuxBash
点赞
收藏

51CTO技术栈公众号