如何在CentOSVPS上发送电子邮件警报以进行系统监控
介绍
发送电子邮件警报的能力对于任何 VPS 的日常管理都是必不可少的。 对于系统管理员(和用户一样)来说,能够利用这种 [新] 可能性不仅使事情变得更容易,而且还为您提供了许多盟友来对抗盗贼或停机时间,您可以创建触发器。
在这篇 DigitalOcean 文章中,我们将学习如何在 CentOS VPS 上简单地发送电子邮件警报,并讨论我们可以设置的各种触发器,以建立更好的整体安全性并保持整个系统平稳运行。 我们将通过了解电子邮件的基础知识、了解必要的应用程序以及您可以设置的各种电子邮件警报触发器的示例以及确定创建更多电子邮件的关键需求背后的逻辑来做到这一点。
了解电子邮件
不受我们使用次数的影响,发送和接收电子邮件的复杂性很少被考虑(也不是真正可见),因为公司以简单的在线电子邮件服务的形式抽象了大部分复杂性。 打击垃圾邮件的承诺使其更加如此,任何想要简单地发送电子邮件(电子邮件)的人都付出了巨大的努力。
电子邮件(或电子邮件)可以被认为是从一方以电子方式分发给另一方的一种方法或一种消息。 这也不一定是在互联网上传播的在线过程,因为它可以发生在本地网络或同一台机器上(即 您的 VPS)通过(通常)内置工具。 但是,当需要通过 Internet 发送电子邮件时,很多组件都会发挥作用,从 消息传输代理 开始。
消息传输代理(或消息传输代理)
“消息传输代理”是一个应用程序,它实际执行为同一系统上或位于其他地方的用户(即 通过 Internet 或 LAN)。 MTA 应用程序通常随各种 Linux 发行版默认提供,电子邮件客户端使用它们在主机之间发送消息,通常使用SMTP协议 .
邮件用户代理(电子邮件客户端)
许多可用的“邮件用户代理”是 users 使用的应用程序(即 您)或其他应用程序发送和接收电子邮件。 它们依赖于消息传输代理 (MTA) 才能工作。 Microsoft Outlook、Mozilla Thunderbird 甚至是在线工作的 Gmail 都是邮件用户代理的合适示例。
简单邮件传输协议 (SMTP)
为了在主机之间传输消息,一种通用语言(即 需要建立一个协议)以便它们能够相互通信。 几十年前创建和标准化的 SMTP 已成为发送消息的方式。 MTA 使用 SMTP 协议来传递电子邮件。
使用 Heirloom mailx 简单地发送电子邮件
今天,上面解释的架构只涵盖了交换电子邮件的复杂性质的一部分。 要使“正确”的系统正常工作,还有很多工作要做,不幸的是,即使这样也不能保证电子邮件的可交付性——到收件箱和垃圾邮件文件夹。
然而,在我们的文章中,我们将专注于极端简单。 我们的目标是让您在几分钟内启动并运行 ',以便您可以专注于实际工作、管理系统并在收件箱中接收警报。
我们将与 Heirloom mailx 合作,这是一个出色的邮件用户代理,源自 Berkeley Mail。 它为多种协议提供额外支持,包括(但不限于)IMAP、POP3,当然还有 SMTP。 这将是我们用来接收警报和系统警告的工具。
注意: 浏览在线文档或论坛,您可能会看到一个类似的应用程序,名为 nail。 这两个项目(有点)相同,nail 被合并到 mailx 中。 因此,如果您看到使用“nail”的电子邮件命令,只需将其替换为“mail”或“mailx”即可执行它们。 或者,您可以创建一个 符号链接 指向 mailx 应用程序。 您可以访问mailx history了解更多关于mail、Mail、mailx和nail的历史。 对于符号链接的创建,请继续阅读。
安装mailx
让我们从更新我们的系统开始。
请注意: 如果您在稳定的生产环境中,您可能希望跳过此步骤,因为它可能会干扰您正在运行的应用程序。
为了更新您的系统,请运行以下命令:
$ yum -y update
开始使用 mailx 非常简单。 我们将使用 yum 包管理器下载并安装它。
在您的 CentOS/RHEL 机器上,执行以下命令:
$ yum install -y mailx
就是这样! 我们现在可以使用“mail”(或 mailx)命令开始发送电子邮件。
什么是符号链接以及如何创建一个
符号链接(符号链接)是包含对另一个现有文件的引用的文件。
一些监控脚本和应用程序可能使用“email”而不是“mail”或“mailx”来发送电子邮件。 如果您发现自己处于这种情况,您可以创建一个 符号链接 ,指向(引用)mailx。
下面,我们正在为“mail”创建一个符号链接来执行“mailx”。
要创建符号链接,请运行以下命令(将 /bin/email
替换为所需的链接名称):
$ ln -s /bin/mailx /bin/email
如何设置外部 SMTP 服务器来中继电子邮件
如上所述,使用这种精益解决方案可能意味着您的一些电子邮件可能会进入垃圾邮件文件夹。 由于您的目标是一个简单的警报应用程序,因此这应该不是问题。 但是,如果您想要提高交货率(即 到您的收件箱)您可以选择通过外部 SMTP 服务器(即 您的电子邮件提供商或商业电子邮件服务)。
为了设置 SMTP 服务器 [配置] 以供“mailx”使用,我们需要编辑找到应用程序 [某些] 设置的 /etc/mail.rc
文件的内容。 我们将使用“nano”文本编辑器打开这个文件,并将我们的设置附加到顶部。
使用“nano”打开“mail.rc”:
$ nano /etc/mail.rc
您可以在下面找到一个示例 SMTP 设置,您需要对其进行修改以匹配您的提供商的设置,然后再将其附加到“mail.rc”的顶部。 以 # 符号开头的行被注释掉——意思是,它们无效——并且由结构组成。 以下行是您需要相应替换以匹配您的 SMTP 服务器详细信息的行。
例子:
# set smtp=smtp://smtp.server.tld:port_number set smtp=smtp://smtp.example.com:543 # tell mailx that it needs to authorise set smtp-auth=login # set the user for SMTP # set smtp-auth-user=user@domain.tld set smtp-auth-user=user.name@example.com # set the password for authorisation set smtp-auth-password=enter-password-here-1234
按“CTRL+X”并确认“Y”保存并退出。
从现在开始,所有发送的邮件都将使用您刚刚设置的配置进行中继。
提示:您可以考虑使用Gmail的服务器,或者给一个简单易用的专业邮件服务的SMTP服务器,例如MANDRILL,每月免费发送数千封邮件。
使用 mail
(或 mailx
)发送电子邮件
尽管您可以直接与 MTA sendmail 进行交互,但安装“mailx”提供了许多简单性以及必要时[将来]配置的可能选项。
以下是 Heirloom mailx 的一些可用选项:
-a
文件 Allows you to attach the given file to the e-mail-b
地址 Sends 盲抄本 to the comma separated e-mail address list-c
地址 Sends 副本 to a list of users-q
文件 Sets the message contents from the given file-r
从地址 Sets the from address of the e-mail to be sent-s
学科 Sets the e-mail subject
有关选项的完整列表,请单击 此处 访问相关文档。
示例用法:
发送一个简单的消息:
echo "Your message" | mail -s "Message Subject" email@address
发送带有附件的消息:
echo "Message" | mail -s "Subject" -a /loc/to/attachment.txt email@address
从文件中读取消息正文:
echo | 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 脚本(或 shell 脚本、bash 程序)是用于执行快速任务的小型应用程序。 它们易于创建和使用,这就是为什么它们备受青睐并成为出色的系统管理工具。
找到一个(用于您需要的任务)后,您将需要创建一个空文件以另存为可执行的 bash 脚本。
例子:
您希望在磁盘空间不足时收到电子邮件提醒。 为此,请执行快速 Google 搜索,例如“当您的磁盘空间不足时发送电子邮件警报”。 在各种结果中,您将看到来自 Linux Jornal 的结果。 单击 URL,您将看到页面上记录的 bash 脚本。
使用 nano
为 bash 脚本创建一个新的文本文件:
$ nano monitor_disk_space.sh
复制并粘贴 URL 中的内容:
#!/bin/bash CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 if [ "$CURRENT" -gt "$THRESHOLD" ] ; then mail -s 'Disk Space Alert' mailid@domainname.com << EOF Your root partition remaining free space is critically low. Used: $CURRENT% EOF fi
注意:请不要忘记用您的电子邮件地址替换mailid@domainname.com
。 另外,请记住,您也可以修改主题行。
按“CTRL+X”并用“Y”确认以保存并退出文件。
您现在已经创建了一个名为 monitor_disk_space.sh
的小型 bash 程序,您可以随意命名它。
我们需要继续告诉我们的操作系统这个文件是一个可执行文件。
使用“chmod”授予文件 executable 权限:
$ chmod +x monitor_disk_space.sh
您可以尝试通过执行该文件来运行它:./monitor_disk_space.sh
鉴于我们希望这个小程序充当系统监视器,我们将需要使用实用工具 cron 来安排它以特定的时间间隔运行。
请阅读以下关于 如何使用 Cron 在 VPS 上自动执行任务的文章,了解如何为某些任务安排 cron。
我们完成了第一个监控脚本的创建!
示例 2:
如果您想监控[磁盘]空间使用并在超过某个阈值时接收电子邮件,您可以参考Linix.com的这个优秀示例。
让我们从创建一个空的 shell 脚本文件开始:
$ nano monitor_space_usage.sh
复制并粘贴此自解释脚本的内容:
#!/bin/bash LIMIT='80' #Here we declare variable LIMIT with max of used spave DIR='/var' #Here we declare variable DIR with name of directory MAILTO='monitor@gmail.com' #Here we declare variable MAILTO with email address SUBJECT="$DIR disk usage" #Here we declare variable SUBJECT with subject of email MAILX='mailx' #Here we declare variable MAILX with mailx command that will send email which $MAILX > /dev/null 2>&1 #Here we check if mailx command exist if ! [ $? -eq 0 ] #We check exit status of previous command if exit status not 0 this mean that mailx is not installed on system then echo "Please install $MAILX" #Here we warn user that mailx not installed exit 1 #Here we will exit from script fi cd $DIR #To check real used size, we need to navigate to folder USED=`df . | awk '{print $5}' | sed -ne 2p | cut -d"%" -f1` #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. if [ $USED -gt $LIMIT ] #If used space is bigger than LIMIT then du -sh ${DIR}/* | $MAILX -s "$SUBJECT" "$MAILTO" #This will print space usage by each directory inside directory $DIR, and after MAILX will send email with SUBJECT to MAILTO fi
在确保您已根据需要对其进行了修改(并通过修改 MAILTO 变量将您的电子邮件地址设置为收件人)后,您可以通过按“CTRL+X”并按“Y”确认来保存它。
再次将文件设置为 executable,您的第二个 Linux 系统监控工具已准备就绪。
要授予文件执行权限,请运行以下命令:
$ chmod +x monitor_space_usage.sh
笔记:
更多关于监控的shell脚本,可以访问【X52X】http://bash.cyberciti.biz/shell/monitoring/【X99X】和【X109X】http://linoxide.com/category/linux-shell-script/ 。
有关 shell 脚本的更多信息,请访问 http://www.linoxide.com/guide/scripts-pdf.html。