如何在 CentOS VPS 上发送电子邮件警报以进行系统监控

介绍


对于系统管理员(和用户一样)来说,能够利用这个(新的)可能性不仅使事情变得更容易,而且还为您提供了许多盟友,在您打击盗贼或停机时,您可以创建触发器。

在这篇DigitalOcean文章中,我们将学习如何简单地在CentOS VPS上发送电子邮件警报,并讨论我们可以设置的各种触发器,以建立更好的整体安全性,并保持系统的顺利运行。

理解电子邮件


由于我们使用的次数,发送和接收电子邮件的复杂性很少被考虑(甚至不是真正可见的),因为许多复杂性被公司以简单的在线电子邮件服务的形式抽象。

电子邮件(或电子邮件)可以被视为一种方法或类型的信息,从一方发送给另一方电子邮件. 这不一定是通过互联网传播的在线过程,因为它可以发生在本地网络上或在同一台机器上(即您的VPS)通过(通常)内置的工具。

消息传输代理(或消息传输代理)


消息传输代理是一个应用程序,实际上执行在同一系统或位于其他地方(即通过互联网或LAN)的用户(e-mail)相关的消息的交付。MTA应用程序通常在各种Linux发行版中默认发送,并被电子邮件客户端用来在 _hosts_之间发送消息,通常使用 SMTP协议

邮件用户代理(电子邮件客户端)


许多可用的邮件用户代理users(即您)或其他应用程序用于发送和接收电子邮件的应用程序,它们依赖于消息传输代理(MTA)才能工作。

简单邮件传输协议(SMTP)


为了在主机之间传输消息,需要建立一个共同的语言(即协议),以便他们能够彼此沟通。 几十年前创建和标准化,SMTP已成为发送消息的途径。

简单地用Heirloom mailx发送电子邮件


今天,上面解释的架构只涵盖了电子邮件交换的复杂性的一部分,为了一个正确的系统工作,还有很多事情需要做,甚至这,不幸的是,不保证电子邮件的可交付性 - 到收件箱和垃圾邮件文件夹。

然而,在我们的文章中,我们将专注于极端的简单性,我们的目标是让您在几分钟内运行 **,这样您就可以专注于实际工作,管理您的系统,并在您的收件箱中收到警报。

我们将与 Heirloom mailx合作,这是一个出色的邮件用户代理源自 Berkeley Mail. 它为包括(但不限于)IMAP、POP3和SMTP在内的多个协议提供了额外的支持。

** 注意:** 浏览在线文档或论坛时,您可能会看到一个类似的应用程序,名为 nail. 两个项目(类型)相同,而 nail 被嵌入到 mailx 中。因此,如果您看到使用nail的电子邮件命令,就足以用mailmailx代替它来执行它们。 或者您可以创建一个 象征链接指向 mailx 应用程序。 您可以通过访问 mailx 历史来了解更多关于邮件,邮件, mailx 和钉的历史。 有关象征链接的创建,请继续阅读。

安装 mailx


让我们先更新我们的系统。

** 请注意:** 如果您处于稳定的生产环境中,您可能希望跳过此步骤,因为它可能会干扰运行应用程序。

** 若要更新您的系统,请执行以下操作:**

1$ yum -y update

开始使用 mailx 非常简单,我们将使用 yum 包管理器下载并安装它。

** 在您的 CentOS/RHEL 机器上,执行以下操作:**

1$ yum install -y mailx

我们现在可以使用邮件(或 mailx)命令开始发送电子邮件。

什么是符号链接以及如何创建一个


** 符号链接(symlink)是由另一个现有文件的引用组成的文件。

一些监控脚本和应用程序可能会使用电子邮件而不是邮件mailx发送电子邮件。

下面,我们正在创建一个符号链接邮件执行mailx

** 要创建一个象征性的链接,请执行以下操作(用所需的链接名称替换 /bin/email):**

1$ ln -s /bin/mailx /bin/email

如何设置外部SMTP服务器来转发电子邮件


如上所述,使用这种薄弱的解决方案可能意味着您的某些电子邮件可能会进入垃圾邮件文件夹,因为您正在寻求一个简单的通知应用程序,这不应该是一个问题,但是,如果您想要提高交付率(即到您的收件箱),您可以选择通过外部SMTP服务器(即您的电子邮件提供商或商业电子邮件服务)传输您的消息。

为了设置用于mailx的SMTP服务器 [配置],我们需要编辑应用程序的 [确定]设置所在的 /etc/mail.rc文件的内容。

** 使用nano打开mail.rc:**

1$ nano /etc/mail.rc

下面你可以找到一个 SMTP 设置示例,你需要修改以匹配你的提供商的设置,然后添加到mail.rc的顶部。 以 # 符号开头的行被评论 - 意思是,它们不有效 - 并由结构组成。

** 例子:**

1# set smtp=smtp://smtp.server.tld:port_number
2set smtp=smtp://smtp.example.com:543
3# tell mailx that it needs to authorise
4set smtp-auth=login
5# set the user for SMTP
6# set [email protected]
7set [email protected]
8# set the password for authorisation
9set smtp-auth-password=enter-password-here-1234

CTRL+X并确认Y来保存和退出。

从现在开始,所有发送的邮件都将使用您刚刚设置的配置进行转发。

建议:您可以考虑使用Gmail的服务器或提供简单易用的专业邮件服务的SMTP服务器,如MANDRILL(https://mandrillapp.com/),允许您每月免费发送数千封邮件。

邮件发送电子邮件(或mailx)


虽然您可以直接与MTA发送邮件进行交互,但安装mailx提供了许多其他东西,包括大量的简单性和可能的选项,在必要时配置。

以下是 Heirloom mailx的一些可用的选项:

  • a file 允许您将该文件附加到电子邮件
  • -b addressblind carbon copies 发送到单独的电子邮件地址列表
  • -c addresscopies 发送到用户列表
  • -q file 将消息内容从给定文件
  • -r ** 发送的电子邮件地址设置为
  • `-s 主题 将电子邮件主题设置为

有关选项的完整列表,请点击此处(http://heirloom.sourceforge.net/mailx/mailx.1.html#2)参阅相关文档。

** 使用例子:**

发送一个简单的信息:

1echo "Your message" | mail -s "Message Subject" email@address

发送附件的消息:

1echo "Message" | mail -s "Subject" -a /loc/to/attachment.txt email@address

從檔案中閱讀訊息體:

1echo | mail -s "Subject" -r from@address -q /loc/to/body.txt email@address

**注:**除非您设置了外部SMTP服务器,否则您的电子邮件,如上所述,很可能会落入垃圾邮件文件夹,您需要手动重定向到您的收件箱以继续接收它们。

对于完整的 Heirloom mailx 文档,请考虑访问其官方网站位于 http://heirloom.sourceforge.net/mailx.html

设置系统监控、警报和安全警报的警报


由于我们已经准备好了,我们现在可以看看我们可以让我们的服务器发送和电子邮件的几个不同的警报示例。

监控端口和接口


要了解有关端口和接口监控的更多信息,请参阅以下文章,您可以了解该主题并快速为该任务设置Linux接口监控,该任务将使用mailx通知您打开新端口 /接口。

如何在DigitalOcean社区图书馆安装CentOS 6.4上的Linux Socket Monitor(LSM)

使用 Bash 脚本的其他监控选项:


如果您有特定需求(即对低内存,磁盘空间,登录等进行监控),您现在可以搜索各种 bash 脚本来执行任务 - 并且您可以找到成千上万的可用!

Bash 脚本是什么?


**Bash 脚本(或壳脚本,bash 程序)是用于执行快速任务的小型应用程序,它们易于创建和使用,这就是为什么它们非常受欢迎,并为系统管理提供出色的工具。

一旦你找到一个(对于你需要的任务),你需要创建一个空的文件来保存作为一个可执行的bash脚本。

** 例子:**

你想收到一个电子邮件警告,当你的磁盘空间变得低. 为此,执行一个快速的谷歌搜索,说,发送一个电子邮件警告,当你的磁盘空间变得低。在各种结果中,你会看到一个来自Linux日报。

** 使用 bash 脚本的「nano」创建新文本文件:**

1$ nano monitor_disk_space.sh

从URL复制并粘贴内容:

1#!/bin/bash
2CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
3THRESHOLD=90
4
5if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
6    mail -s 'Disk Space Alert' [email protected] << EOF
7Your root partition remaining free space is critically low. Used: $CURRENT%
8EOF
9fi

** 注意:** 请不要忘记用您的电子邮件地址代替[email protected]

CTRL+X并用Y确认以保存和退出文件。

您现在已经创建了一个名为monitor_disk_space.sh的小Bash程序,您可以随意命名它。

我们需要继续告诉我们的操作系统,这个文件是可执行的。

** 使用chmod授予文件 executable 权限:**

1$ chmod +x monitor_disk_space.sh

您可以尝试通过执行它来运行该文件: ./monitor_disk_space.sh

鉴于我们希望这个小程序像系统监视器一样运作,我们需要使用公用工具 cron来安排它以一定的间隔运行。

請閱讀以下文章: 如何使用 Cron 來自動化 VPS 上的任務以了解特定任務的 cron 計劃。

我们已经完成了创建我们的第一个监控脚本!

例子二:

如果你想 监控 [磁盘]空间使用量,并在过一定的门槛时收到电子邮件,你可以参考从 Linix.com这个很好的例子。

让我们从创建一个空壳脚本文件开始:

1$ nano monitor_space_usage.sh

** 复制并粘贴本自我解释脚本的内容:**

 1#!/bin/bash
 2
 3LIMIT='80'
 4#Here we declare variable LIMIT with max of used spave
 5
 6DIR='/var'
 7#Here we declare variable DIR with name of directory
 8
 9MAILTO='[email protected]'
10#Here we declare variable MAILTO with email address
11
12SUBJECT="$DIR disk usage"
13#Here we declare variable SUBJECT with subject of email
14
15MAILX='mailx'
16#Here we declare variable MAILX with mailx command that will send email
17
18which $MAILX > /dev/null 2>&1
19#Here we check if mailx command exist
20
21if ! [ $? -eq 0 ]
22#We check exit status of previous command if exit status not 0 this mean that mailx is not installed on system
23then
24          echo "Please install $MAILX"
25#Here we warn user that mailx not installed
26          exit 1
27#Here we will exit from script
28fi
29
30cd $DIR
31#To check real used size, we need to navigate to folder
32
33USED=`df . | awk '{print $5}' | sed -ne 2p | cut -d"%" -f1`    
34#This line will get used space of partition where we currently, this will use df command, and get used space in %, and after cut % from value.
35
36if [ $USED -gt $LIMIT ]
37#If used space is bigger than LIMIT
38
39then
40      du -sh ${DIR}/* | $MAILX -s "$SUBJECT" "$MAILTO"
41#This will print space usage by each directory inside directory $DIR, and after MAILX will send email with SUBJECT to MAILTO
42fi

确保您已修改它以满足您的需求(并通过修改 MAILTO 变量来设置您的电子邮件地址为收件人),您可以通过按CTRL+X并用Y确认来保存它。

再次将文件设置为 executable,您已经准备好了第二个 Linux 系统监控工具。

** 若要授予文件执行权限,请执行以下操作:**

1$ chmod +x monitor_space_usage.sh

注: 注:

有关监控的更多壳脚本,您可以访问 http://bash.cyberciti.biz/shell/monitoring/http://linoxide.com/category/linux-shell-script/

有关壳脚本的更多信息,请访问 http://www.linoxide.com/guide/scripts-pdf.html

Submitted by: O.S. Tezer
comments powered by Disqus