天天看點

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.項目支援

在實際項目實施的過程中,由于等多方面的要求,往往會出現需要定制化的内容,并且有的定制化的内容是不适合直接移植到産品中,對于這些項目級的内容,在平台功能無法完全滿足的情況下,往往會需要通過伺服器或外部工具結合來處理。

項目和産品是相輔相成的,産品的研發為項目提供支援,保證項目的實施傳遞,而在項目過程中,項目中遇到的問題、場景等又可以回報給産品進行優化完善。是以對于項目實施和産品研發人員來說,需要互相了解對方的内容,實施人員了解産品功能的使用場景,能夠根據場景比對對應的業務,提高實施的效果,研發人員針對實際業務場景進行開發,保證開發的内容可以有效支撐項目業務,最終才能互相支援、互相成就。

本文由@數通暢聯原創,歡迎轉發,僅供學習交流使用,引用請注明出處!謝謝~

繼續閱讀