天天看点

Linux服务器邮件发送配置说明

作者:数通畅联

数据、服务报警机制是产品中比较常用的安全机制,一般而言报警功能都是预置的产品中,但是在实际项目中,根据部署架构的实际要求,可能通过脚本的方式进行邮件报警。

目前公司产品均采用K8S容器化的部署方式,,但在实际项目中,由于Linux服务器系统、架构的不同,对于系统资源以及一些特殊的容器需要单独进行监控,。

总体说明

在产品运行的过程中,对系统资源、环境、产品的监控都是产品稳定运行的重要保证,尤其涉及系统集成的环境,一旦服务异常就会直接影响多个系统或模块的功能,对实际业务的影响比较大,所以要有必要的监控手段对环境进行监控,以保证提前暴露问题,及时修复,将业务的影响降低最低。

1.应用场景

在生产环境中,一般需要监控和报警的内容包括系统资源和产品运行,而产品又是基于K8S的容器化部署,所以也需要对K8S服务以及相关容器进行监控:

1.:监控K8S集群节点状态,保证服务器节点的稳定;

2:监控kube-system命名空间下的容器,保证K8S集群稳定运行的基础;

3.:监控Ingress容器状态,保证外部访问时可以完成代理和容器的访问;

4.:监控NFS服务端服务,保证NFS磁盘资源共享;

5.:监控Node节点的共享磁盘挂载,保证NFS磁盘资源共享;

6.:监控运行容器的CPU和内存消耗,及时处理内存泄露等问题;

7.:验证产品访问地址的可用性,保证产品的正常访问;

8.:监控UMC平台运行的稳定性,避免产品容器无法连接UMC异常;

9.:监控外部Redis集群的稳定性,避免UMC无法连接Redis导致访问异常。

2.报警机制

一般平台的报警主要是在系统监控到异常时记录相应的错误日志,然后通过平台的消息功能进行消息提醒,再由管理员或者运维人员根据异常进行问题处理。而为了提高问题发现以及处理的效率,对于紧急问题往往需要通过短信、微信、邮件等方式进行提醒,以达到更快报告问题的目的。

1.:通过Linux服务器进行短信发送有两种方式,一种是通过服务器AT指令和串口的方式,二是通过短信平台的API接口方式;

2.:微信/企业微信以及其他平台一般会提供API接口,可以直接调用API进行消息推送;

3.:在Linux服务器上部署邮件工具,通过脚本和命令的方式进行邮件发送。

3.配置过程

本次主要介绍邮件报警,在Linux服务器部署脚本,通过脚本监控相关资源,在出现异常时调用邮件工具发送邮件进行报警。根据项目环境的具体情况,邮件报警的过程。

1.在Linux服务器上部署邮件工具,通过rpm包进行安装;

2.邮件工具配置,配置发件服务器以及发件人邮箱;

3.部署shell脚本,通过脚本进行资源监控,并根据异常信息发送报警邮件。

基础环境

本次以CentOS 7系统为例,在服务器上部署邮件工具,并配置相关信息,包括发件服务器、发件人邮箱、用户名/密码等,如果是生产环境的内网服务器,还需要考虑通过Nginx进行网络代理,以便服务器向外网发送邮件。

1.软件安装

本次通过sendmail和mailx工具来进行邮件发送,其中sendmail是邮件服务器,mailx是客户端,CentOS 7默认没有安装该工具,需要手动安装。

1.如果服务器已经连接外网,或者可以通过yum proxy的方式连接外网,直接通过yum的方式进行安装:

Linux服务器邮件发送配置说明

2.如果服务器无法连接外网,需要通过rpm的方式进行安装:

Linux服务器邮件发送配置说明

注意:mailx安装时需要安装依赖,包括cyrus-sasl-2.1.26-24.el7_9.x86_64.rpm、hesiod-3.2.1-3.el7.x86_64.rpm、procmail-3.22-36.el7_4.1.x86_64.rpm。

2.外部代理

一般生产环境大多部署在内网服务器上,不能直接连接外网,而在发送邮件时需要向外网发送,所以需要连接外网,这里有两种方式:

1.一是在外网服务器(DMZ区)通过Nginx代理邮件服务器地址,内网服务器通过调用代理端口实现邮件服务器的调用;

2.二是在外网服务器(DMZ区)部署邮件工具,通过DMZ服务器调用内网服务器脚本实现服务监控。

由于跨服务器调用脚本监控服务比较麻烦,所以推荐采用第一种方式,并且Nginx只代理邮件服务器,也能避免内网服务器被攻击的风险。

3.配置主机

安装邮件工具后,在服务器上直接配置发件邮箱信息,修改配置文件:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

测试验证

邮件发件服务器完成后就可以通过mail命令进行邮件发送测试,可以直接在服务器上执行mail命令发送邮件。但对于监控功能而言,为了便于后续排查,可以将监控信息写入日志文件,并基于日志文件进行邮件发送。

1.邮件脚本

直接扩展一个K8S节点监控的脚本,通过脚本进行邮件的发送测试,监控脚本:

Linux服务器邮件发送配置说明

1.通过kubectl命令监控K8S集群node的状态,如果状态异常则写入node-send-mail.txt文件;

2.脚本执行的最后根据node-send-mail.txt的内容判断是否发送邮件,如果文件非空则通过mail发送邮件。

2.发送测试

1.调用shell脚本,进行邮件发送测试:

Linux服务器邮件发送配置说明

2.node-send-mail.txt文件内记录了错误信息:

Linux服务器邮件发送配置说明

3.检查邮件,已经成功接收到了对应的报警邮件:

Linux服务器邮件发送配置说明

3.定时任务

1.配置crontab定时任务,定时进行资源监控,并发送报警邮件:

Linux服务器邮件发送配置说明

2.每间隔10分钟执行一次脚本,进行邮件报警。

注意事项

在部署mail工具进行资源的过程中,由于部署架构、网络环境、监控脚本不同等原因,配置过程也会有所区别。

1.命令相关

Mail工具常用命令如下:

Linux服务器邮件发送配置说明

1.用户地址为接收人邮箱地址,可以配置多个,用“,”分隔;

2.邮件正文可以是文本,也可以是一个文本文件,在发送邮件时会将文本内容作为邮件正文发送;

3.另外如果单独执行mail命令,可以查询接收的邮件:

Linux服务器邮件发送配置说明

2.SSL证书

在实际项目中,很多时间会采用企业邮箱,而企业邮箱一般会采用SSL的方式来提高安全性。对于启用SSL的邮箱,需要下载配置SSL证书文件,以163邮箱为例:

1.创建证书目录:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

2.获取邮件服务器证书:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

:SSL证书不能直接进行copy操作,如果服务器无法联网,可以和邮件的外部代理一样,通过DMZ区的Nginx代理,将smtp.163.com:465代理成内网地址,再将上述命令的smtp.163.com:465换成代理后的地址和端口,从而实现证书下载。

3.添加执行权限:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

4.添加SSL证书到数据库:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

5.添加global证书到数据库:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

6.指定受信任证书,防报错:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

7.列出安全数据库中的证书:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

8.修改邮箱配置:

Linux服务器邮件发送配置说明
Linux服务器邮件发送配置说明

3.系统邮件

对于系统接收到的邮件可以通过mail命令进行查看

Linux服务器邮件发送配置说明

另外邮件也会保存在/var/spool/mail/root目录下,可以直接进行访问查看。

分析总结

对于平台来说,,大多数平台都会有对应的功能,但是在实际项目中,由于项目环境、网络、开发等内容的要求,可能平台的内容未必能全部满足实际需要,所以有时也需要直接通过服务器进行功能的补充。

1.系统维护

目前公司产品均采用K8S容器化的部署方式,由于K8S集群以及网络、组件的复杂性,所以对于项目实施和运维人员来说,。

2.平台功能

对于平台化的产品,必要的监控是保证产品稳定运行的基础,所以在平台开发的过程中,需要加强对平台运维监控能力的提升,从,才能有效支撑项目的实施与交付。

3.项目支持

在实际项目实施的过程中,由于等多方面的要求,往往会出现需要定制化的内容,并且有的定制化的内容是不适合直接移植到产品中,对于这些项目级的内容,在平台功能无法完全满足的情况下,往往会需要通过服务器或外部工具结合来处理。

项目和产品是相辅相成的,产品的研发为项目提供支持,保证项目的实施交付,而在项目过程中,项目中遇到的问题、场景等又可以反馈给产品进行优化完善。所以对于项目实施和产品研发人员来说,需要相互了解对方的内容,实施人员了解产品功能的使用场景,能够根据场景匹配对应的业务,提高实施的效果,研发人员针对实际业务场景进行开发,保证开发的内容可以有效支撑项目业务,最终才能相互支持、相互成就。

本文由@数通畅联原创,欢迎转发,仅供学习交流使用,引用请注明出处!谢谢~

继续阅读