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

在本文中,我们学习如何简单地发送电子邮件警报在VPS和谈论可以设置为建立更好的整体安全性,并保持平稳运行的系统各个触发器。我们通过电子邮件的基本知识,必要的应用程序,各种电子邮件警报触发的示例。

介绍


发送电子邮件警报的能力对任何VPS的日常管理至关重要。对于系统管理员(和用户),能够利用这个[新]的可能性不仅使事情更容易,而且还为您提供了许多盟友在打击盗贼或停机时间与您可以创建的触发器。 在这篇DigitalOcean文章中,我们将学习如何简单地在CentOS VPS上发送电子邮件警报,并讨论我们可以设置的各种触发器,以建立更好的总体安全性,并保持一个平稳运行的系统。我们将通过了解电子邮件的基本知识,浏览必要的应用程序以及您可以设置的各种电子邮件警报触发器的示例以及确定创建更多的关键需求的逻辑。

了解电子邮件


不受我们使用的次数的影响,发送和接收电子邮件的复杂性很少被考虑(也不真正可见),因为公司以简单的在线电子邮件服务的形式抽象了大量的复杂性。打击垃圾邮件的承诺使它更是这样,花费的努力了大量的人谁愿意只需发送电子邮件消息 (电子邮件)。 电子邮件(或电子邮件)可以被认为是从一方到另一方电子分发的一种方法或一种类型的消息。这不一定是在互联网上传播的在线过程,因为它可能发生在本地网络或在同一台机器(即您的VPS)通过(通常)内置工具。然而,当有必要通过因特网发送电子邮件,很多部件的开始发挥作用,从邮件传输代理

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


“消息传输代理”是实际上在相同系统上或位于其他地方(即,通过互联网或LAN)执行绑定到用户的(电子邮件)消息的传递的应用。 MTA的应用程序通常是默认与各种Linux发行发货,它们是由电子邮件客户端用于在主机间发送消息,通常使用SMTP协议

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


纷用“邮件用户代理”是由用户使用的应用程序(也就是你)或其他应用程序来发送和接收电子邮件。它们依赖于消息传输代理(MTA)以便工作。 Microsoft Outlook,Mozilla Thunderbird甚至Gmail - 在线工作 - 都是邮件用户代理的合适示例。

简单邮件传输协议(SMTP)


为了在主机之间传送消息,需要建立公共语言(即协议)以使它们能够彼此通信。几十年前创建和标准化,SMTP已经成为发送消息的方式。 MTA使用SMTP协议,执行电子邮件的传送。

简单地发送电子邮件与传家宝mailx


今天,上面解释的架构仅覆盖交换电子邮件的复杂性质的一部分。为了使“正常”系统工作,需要做更多的工作,不幸的是,不能保证电子邮件 - 收件箱和垃圾邮件文件夹的可交付性。 然而,在我们的文章中,我们将关注极端简单。我们的目标是让你和运行在短短仅仅几分钟 ,这样您就可以专注于自己的工作实际,行政的系统,并在收件箱中收到警报。 我们将与mailx的传家宝 ,从Berkeley衍生邮件一个梦幻般的邮件用户代理合作。它为几种协议提供了额外的支持,包括(但不限于)IMAP,POP3以及当然的SMTP。它将是我们用于接收警报和系统警告的工具。 注:通过在线文档或者论坛去,你可能会看到所谓的钉子一个类似的应用。 这两个项目是:(那种)相同, 指甲被纳入mailx的 。 因此,如果您看到使用“钉子”的电子邮件命令,就足以用“mail”或“mailx”替换它们来执行它们。 另外,您可以创建符号链接mailx的应用。 您可以通过访问了解更多有关邮件,邮件的mailx和指甲的历史mailx的历史 。对于符号链接创建,请继续阅读。

安装mailx


让我们从更新我们的系统开始。 请注意:如果你是一个稳定的,生产环境中,你可能会想跳过这一步,因为它可能与运行的应用程序造成干扰。 要更新系统,请运行以下命令:
$ yum -y update
mailx的入门非常简单。我们将使用yum软件包管理器下载并安装它。 在CentOS / RHEL计算机上,执行以下操作:
$ yum install -y mailx
就这样!我们现在可以使用“mail”(或mailx)命令开始发送电子邮件。
符号链接 (符号链接)的文件,这些文件包含到另一个参考,现有的文件。 某些监视脚本和应用程序可能使用“电子邮件”而不是“mail”或“mailx”来发送电子邮件。如果在这种情况下发现自己,你可以创建一个符号链接 ,指向(引用)到mailx的。 下面,我们为“邮件”创建一个符号链接来执行“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设置,您需要修改以匹配提供商的SMTP设置,然后将其附加到“mail.rc”顶部。开始以号线都注释掉--meaning,他们不是在effect--和组成结构。以下行是您将需要相应替换以匹配您的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服务器,如给山魈 ,让你每个月送成千上万的邮件是免费的。

发送电子邮件与mail (或mailx


虽然您可以直接与MTA sendmail交互,安装“mailx”提供了许多其他功能,简单性和可能的选项配置[在将来]在必要时。 下面是一些祖传的mailx的可用选项:
  • -a 文件允许你指定的文件附加到电子邮件
  • -b 地址发送密件抄送逗号分隔的电子邮件地址列表
  • -c 地址发送副本到用户的列表
  • -q 文件集从给定文件中的消息内容
  • -r 从地址设定从电子邮件地址发送
  • -s 主题设置电子邮件主题
有关选项的完整列表,请点击浏览相关的文件在这里
用法示例: 发送简单消息:
 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服务器设置,您的电子邮件,如上所述,有可能在垃圾邮件文件夹,您将需要手动重定向到您的收件箱继续接受他们那里下降。
有关完整的传家宝mailx的文档,考虑访问位于其官方网站http://heirloom.sourceforge.net/mailx.html

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


随着我们准备好一切,我们现在可以查看几个不同的警报示例,我们可以让我们的服务器发出和电子邮件。

监控端口和套接字


要了解有关端口和套接字监视的更多信息,请参阅以下文章,您可以在其中了解相关主题,并快速设置Linux套接字监视器,以便在打开新端口/套接字时使用“mailx”通知您。 如何在CentOS 6.4的DigitalOcean社区库上安装Linux套接字监视器(LSM)

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


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

什么是Bash脚本?


的bash脚本 (或shell脚本,bash的程序)是其中用于执行快速任务的小型应用程序。它们易于创建和使用,这就是为什么他们非常喜欢和为系统管理做出优秀的工具。 一旦找到一个(对于您需要的任务),您将需要创建一个空文件以保存为可执行bash脚本。 例: 您希望在磁盘空间不足时收到电子邮件警报。为此,请执行快速的Google搜索,例如“磁盘空间不足时发送电子邮件警报”。在各种结果中,你会看到一个来自Linux Jornal。点击网址 ,你会看到文档页面上的bash脚本。 通过创建一个新的文本文件nano的bash脚本:
$ nano monitor_disk_space.sh
复制并粘贴网址中的内容:
#!/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”确认,以保存并退出文件。 现在,您已经创建了一个名为小bash程序monitor_disk_space.sh它,只要你喜欢,你可以将其命名。 我们需要继续告诉我们的操作系统这个文件是可执行文件。 给使用“文件模式”文件的可执行权限:
$ 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”确认来保存它。 重新设置文件为可执行 ,你有你的第二个Linux系统监控工具准备好。 要提供文件执行权限,请运行以下命令:
$ chmod +x monitor_space_usage.sh
笔记: 有关监视更多的shell脚本,你可以访问http://bash.cyberciti.biz/shell/monitoring/http://linoxide.com/category/linux-shell-script/ 。 欲了解更多关于shell脚本的一般信息,请访问http://www.linoxide.com/guide/scripts-pdf.html
:提交OS Tezer