Cách Gửi E-Mail Alerts trên CentOS VPS để Giám Sát Hệ thống

2 năm trước

 

Giới thiệu

Khả năng gửi e-mail alerts là điều cần thiết cho việc quản lý hàng ngày của bất kỳ VPS nào. Đối với quản trị viên hệ thống (và người dùng như nhau),có thể tận dụng khả năng [mới] này không chỉ giúp mọi thứ trở nên dễ dàng hơn mà còn cung cấp cho bạn nhiều đồng minh trong trận chiến chống lại kẻ trộm hoặc thời gian chết với triggers bạn có thể tạo.

Trong bài viết ViCloud này, chúng ta sẽ học cách gửi các e-mail alerts trên CentOS VPS và nói về các trigger khác nhau mà chúng ta có thể thiết lập để thiết lập bảo mật tổng thể tốt hơn và duy trì một hệ thống chạy mượt mà. Chúng ta sẽ làm điều này bằng cách hiểu những điều cơ bản về e-mail, xem xét các ứng dụng cần thiết cùng với các ví dụ về các trình kích hoạt  e-mail alert khác nhau mà bạn có thể thiết lập và logic đằng sau việc xác định các nhu cầu quan trọng để tạo thêm.

 

Hiểu về E-Mails

Không bị ảnh hưởng bởi số lần chúng ta sử dụng, sự phức tạp của việc gửi và nhận email hiếm khi được nghĩ đến (cũng không thực sự rõ ràng) do phần lớn sự phức tạp bị các công ty tóm tắt dưới dạng các e-mail services đơn giản, online. Sự cam kết chống thư rác đã làm cho nó thậm chí còn nhiều hơn như vậy, đánh giá rất nhiều nỗ lực cho bất cứ ai chỉ muốn đơn giản là gửi thư điện tử (e-mail).

Thư điện tử (hoặc e-mail) có thể được coi là một phương thức hoặc một loại tin nhắn được phân phối điện tử từ bên này sang bên khác. Điều này không phải là một quy trình trực tuyến trải rộng trên internet, vì nó có thể xảy ra trên mạng cục bộ hoặc trên cùng một máy (ví dụ: VPS của bạn) thông qua (thường) một công cụ tích hợp sẵn. Tuy nhiên, khi cần gửi e-mail qua internet, rất nhiều thành phần được đưa vào hoạt động, bắt đầu với các message transfer agents.

Message Transfer Agent (or Message Transport Agent)

 "message transfer agent"là một ứng dụng thực hiện việc gửi các tin nhắn (e-mail) bị ràng buộc cho (các) người dùng trên cùng một hệ thống hoặc ở nơi khác (tức là qua internet hoặc mạng LAN). Một ứng dụng MTA thường được vận chuyển theo mặc định với các bản phân phối Linux khác nhau và chúng được sử dụng bởi e-mail clients để gửi các tin nhắn giữa các hosts, thường sử dụng SMTP protocol.

Mail User Agent (E-Mail Client)

Nhiều  "mail user agents" có sẵn là các ứng dụng được người dùng sử dụng (ví dụ: bạn) hoặc các ứng dụng khác để gửi và nhận e-mail. chúng phụ thuộc vào message transfer agents ( (MTAs) để làm việc. Microsoft Outlook, Mozilla Thunderbird hoặc thậm chí Gmail - hoạt động trực tuyến-- là tất cả các ví dụ phù hợp cho mail user agents.

Simple Mail Transfer Protocol (SMTP)

Để truyền tin nhắn giữa các hosts, một ngôn ngữ chung (tức là một  protocol) cần phải được thiết lập để chúng có thể giao tiếp với nhau. Được tạo ra và tiêu chuẩn hóa nhiều thập kỷ trước, SMTP đã trở thành cách để gửi tin nhắn. MTAs, sử dụng giao thức SMTP, thực hiện gửi e-mail

 

Gửi E-Mails với Heirloom mailx

Ngày nay, cấu trúc được giải thích ở trên chỉ bao gồm một phần bản chất phức tạp của việc trao đổi e-mail. Đối với một hệ thống "thích hợp" để làm việc, có quá nhiều thứ cần phải được thực hiện và thậm chí điều đó, không may, không đảm bảo khả năng phân phối e-mail - vào hộp thư đến và thư mục spam.

Tuy nhiên, trong bài viết này, chúng tôi sẽ tập trung vào sự đơn giản cực độ. Chúng tôi mong muốn giúp bạn và hoạt động chỉ trong vài phút, để bạn có thể tập trung vào công việc thực tế, quản trị hệ thống và nhận cảnh báo trong hộp thư đến của mình.

Chúng ta sẽ làm việc với Heirloom mailx, một Mail User Agent tuyệt vời có nguồn gốc từ Berkeley Mail. Nó cung cấp hỗ trợ bổ sung cho một số giao thức (nhưng không giới hạn) bao gồm  IMAP, POP3 và tất nhiên SMTP. Nó sẽ là công cụ chúng ta sử dụng để nhận cảnh báo và cảnh báo hệ thống.

Lưu ý: Đi qua các tài liệu hoặc diễn đàn trực tuyến, bạn có thể thấy một ứng dụng tương tự được gọi là nail. Hai projects là (loại) giống nhau và nail được kết hợp vào mailx. Do đó, nếu bạn thấy các lệnh e-mail bằng cách sử dụng "nail", nó sẽ là đủ để thay thế bằng "mail" hoặc "mailx" để chúng được thực thi. Hoặc bạn có thể tạo một điểm symbolic link cho ứng dụng mailx. Bạn có thể tìm hiểu thêm về lịch sử của thư, Mail, mailx và nail bằng cách truy cập mailx history. Để tạo symbolic link, vui lòng tiếp tục đọc.

Cài Đặt mailx

Hãy bắt đầu với việc cập nhật hệ thống .

Xin lưu ý: Nếu bạn đang ở trong môi trường sản xuất ổn định, bạn có thể bỏ qua bước này vì nó có thể ảnh hưởng đến các ứng dụng đang chạy của bạn.

Để cập nhật hệ thống của bạn, hãy chạy như sau:

$ yum -y update

Bắt đầu với mailx khá đơn giản. Chúng ta sẽ sử dụng trình quản lý gói yum để tải xuống và cài đặt nó.

Trên máy CentOS / RHEL của bạn, hãy thực hiện như sau​:

$ yum install -y mailx

Chính nó! Bây giờ chúng ta có thể bắt đầu gửi e-mail bằng cách sử dụng lệnh "mail" (hoặc mailx).

Symbolic links (symlink) là các tệp bao gồm tham chiếu đến tệp khác, tệp hiện có.

Một số tập lệnh và ứng dụng giám sát có thể sử dụng "email" thay cho "mail" hoặc "mailx" để gửi e-mail. Nếu bạn thấy mình trong tình huống này, bạn có thể tạo một symbolic link, trỏ (tham chiếu) đến mailx.

Dưới đây, chúng ta đang tạo một symbolic link cho "mail" để thực thi "mailx".

Để tạo một symbolic link, hãy chạy phần sau (thay thế / bin / email bằng tên link bắt buộc):

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

Cách thiết lập một External SMTP Server để chuyển tiếp E-mail

Sử dụng giải pháp lean này, như đã đề cập ở trên,  nghĩa là một số e-mail của bạn có thể nhấn vào thư mục spam. Vì bạn đang hướng tới một ứng dụng đơn giản cho các cảnh báo, đây không phải là vấn đề. Tuy nhiên, nếu bạn muốn tăng tỷ lệ phân phối (tức là đến hộp thư đến),bạn có thể chọn chuyển tiếp thư của mình thông qua  SMTP server  bên ngoài (ví dụ: nhà cung cấp e-mail của bạn hoặc bằng dịch vụ e-mail thương mại).

Để thiết lập một SMTP server [cấu hình] cho "mailx" để sử dụng, chúng ta cần chỉnh sửa nội dung của tập tin /etc/mail.rc nơi tìm thấy các cài đặt [nhất định] của ứng dụng. Chúng ta sẽ mở tập tin này bằng cách sử dụng trình soạn thảo văn bản "nano" và nối thêm các thiết lập của chúng ta lên trên cùng.

Mở "mail.rc" bằng cách sử dụng "nano":

$ nano /etc/mail.rc

Bên dưới, bạn có thể tìm thấy một ví dụ về cài đặt SMTP, mà bạn sẽ cần phải sửa đổi để phù hợp với nhà cung cấp của bạn trước khi thêm vào đầu "mail.rc". Các dòng bắt đầu bằng ký hiệu # được nhận xét - nghĩa là, chúng không có hiệu lực-- và bao gồm cấu trúc. Dòng sau là dòng bạn sẽ cần phải thay thế cho phù hợp để khớp với chi tiết SMTP server của bạn.

Ví dụ:

# 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

Nhấn "CTRL+X" và xác nhận "Y" để lưu và thoát.

Từ bây giờ, tất cả thư được gửi sẽ được chuyển tiếp bằng cấu hình bạn vừa đặt.

Tip: Bạn có thể xem xét sử dụng server của Gmail hoặc cung cấp cho SMTP server của dịch vụ thư chuyên nghiệp dễ sử dụng như MANDRILL cho phép bạn gửi hàng nghìn thư mỗi tháng miễn phí.

Gửi e-mails với mail (hoặc mailx)

Mặc dù bạn có thể tương tác trực tiếp với MTA sendmail, nhưng có rất nhiều tính năng đơn giản và tùy chọn có thể cấu hình [trong tương lai] khi cần thiết.

Ở đây có một số tùy chọn sẵn của Heirloom mailx:

  • -a file Cho phép bạn đính kèm tệp đã cho vào e-mail
  • -b address Gửi blind carbon copies đến danh sách địa chỉ email được phân tách bằng dấu phẩy
  • -c address Gửi copies đến danh sách người dùng
  • -q file Đặt nội dung thư từ tệp đã cho
  • -r from address Đặt địa chỉ gửi từ địa chỉ e-mail được gửi
  • -s subject Đặt chủ đề e-mail

Để biết danh sách đầy đủ các tùy chọn, vui lòng truy cập tài liệu liên quan bằng cách nhấp vào here.

Sử dụng ví dụ​:

Gửi tin nhắn đơn giản:

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

Gửi tin nhắn kèm theo phần đính kèm:

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

Đọc nội dung thư từ một tệp:

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

Lưu ý: Trừ khi bạn đặt các SMTP server  bên ngoài, e-mail của bạn, như được giải thích ở trên, có khả năng sẽ rơi vào thư mục spam, bạn sẽ cần phải chuyển hướng thủ công đến hộp thư đến của mình để tiếp tục nhận chúng ở đó.

Đối với tài liệu hướng dẫn Mailir hoàn chỉnh, hãy xem xét truy cập trang web chính thức của nó tại http://heirloom.sourceforge.net/mailx.html.

 

Thiết Lậo Alerts cho System Monitoring, Warnings and Security Alarms

Vì chúng ta đã sẵn sàng, giờ đây chúng ta có thể xem xét một số ví dụ khác nhau về cảnh báo mà có thể khiến server của chúng ta phát hành và gửi email.

Giám sát Ports and Sockets

Để tìm hiểu thêm về giám sát port và socket, vui lòng tham khảo bài viết sau đây, nơi bạn có thể tìm hiểu về chủ đề và nhanh chóng thiết lập Linux Socket Monitor cho nhiệm vụ, sẽ sử dụng "mailx" để thông báo cho bạn khi một port / socket mới được mở

Các tùy chọn giám sát khác sử dụng tập lệnh Bash:

Nếu bạn có nhu cầu cụ thể (tức là theo dõi bộ nhớ thấp, dung lượng ổ đĩa, thông tin đăng nhập, v.v.),bạn có thể tìm kiếm các tập lệnh bash khác nhau để thực hiện tác vụ - và có hàng nghìn thứ bạn có thể tìm thấy!

 Bash Scripts là gì?

Bash Scripts (hay  shell scripts, bash programs) là những ứng dụng nhỏ được sử dụng để thực hiện các tác vụ nhanh. Chúng rất đơn giản để tạo và sử dụng, đó là lý do tại sao chúng được ưa chuộng và tạo ra các công cụ tuyệt vời để quản trị hệ thống.

Khi bạn tìm thấy (đối với tác vụ bạn cần),bạn sẽ cần phải tạo một tệp trống để lưu dưới dạng tập lệnh bash thực thi.

Ví dụ:

Bạn muốn nhận được cảnh báo qua email khi dung lượng ổ đĩa của bạn thấp. Đối với điều này, thực hiện tìm kiếm nhanh trên Google , gõ, "Gửi một cảnh báo email khi không gian đĩa của bạn bị thấp". Trong số các kết quả khác nhau, bạn sẽ thấy một từ Linux Jornal. Nhấp vào URL và bạn sẽ thấy tập lệnh bash được ghi trên trang.

Tạo một tệp văn bản mới bằng nano cho tập lệnh bash:

$ nano monitor_disk_space.sh

Sao chép và dán nội dung từ 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

Lưu ý: Xin đừng quên thay thế mailid@domainname.com bằng địa chỉ email của bạn. Ngoài ra, hãy nhớ rằng bạn cũng có thể sửa đổi dòng tiêu đề.

Nhấn "CTRL+X" và xác nhận với  "Y" để lưu và thoát file.

Bây giờ bạn đã tạo ra một chương trình bash nhỏ gọi là monitor_disk_space.sh mà bạn có thể đặt tên nó theo ý muốn.

Chúng ta cần tiếp tục nói với hệ điều hành của chúng ta rằng tệp này là một tệp thực thi.

Cấp quyền thi hành tệp bằng cách sử dụng​ "chmod":

$ chmod +x monitor_disk_space.sh

Bạn có thể thử chạy tệp bằng cách thực thi nó: ./monitor_disk_space.sh

Do chúng ta muốn chương trình nhỏ này hoạt động như một màn hình hệ thống, chúng ta sẽ cần phải sử dụng cron công cụ tiện ích lên lịch để chạy trong các khoảng thời gian nhất định

Và chúng ta đã hoàn thành việc tạo tập lệnh giám sát đầu tiên của mình!

Ví dụ 2:

Nếu bạn muốn theo dõi việc sử dụng không gian [đĩa] và nhận email khi một ngưỡng nhất định được chuyển, bạn có thể tham khảo ví dụ tuyệt vời này từ Linix.com.

Hãy bắt đầu với việc tạo một tệp shell script rỗng​:

$ nano monitor_space_usage.sh

Sao chép và dán nội dung của tập lệnh tự giải thích này:

#!/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

Sau khi đảm bảo rằng bạn đã sửa đổi nó để phù hợp với nhu cầu của bạn (và đặt địa chỉ e-mail của bạn là người nhận bằng cách sửa đổi biến MAILTO),bạn có thể lưu nó bằng cách nhấn "CTRL + X" và xác nhận bằng "Y".

Đặt tập tin như là thực thi được và bạn có hệ thống tập tin Linux.

Để cấp quyền thực thi tệp, hãy chạy như sau​:

$ chmod +x monitor_space_usage.sh

Chú ý:

Để biết thêm về shell scripts trên hệ thống giám sát, bạn có thể truy cậphttp://bash.cyberciti.biz/shell/monitoring/ and http://linoxide.com/category/linux-shell-script/.

Để biết thêm về các shell scripts nói chung, visit http://www.linoxide.com/guide/scripts-pdf.html.

Tìm hiểu thêm những điều thú vị  tại ViCloud Community