- 1. Tính năng gửi cảnh báo qua email
- 2. Topology lab & IP Planning
- 3. Các bước cấu hình để chuẩn bị gửi cảnh báo qua email
- 4. Gửi cảnh báo khi có sự cố
- 5. Khác
- 6. Tài liệu tham khảo
Trong thực tế, người quản trị viên không phải lúc nào cũng có thể ngồi theo dõi và nắm bắt các hoạt động của hệ thống qua giao diện giám sát. Bởi vậy bất cứ hệ thống giám sát nào cũng cần cung cấp các chức năng thông báo về tình trạng của hệ thống qua các phương tiện truyền thông. Nagios cũng cấp tính năng thông báo các sự kiện xảy ra qua phương tiện truyền thông là email. Bài viết này sẽ cung cấp cách gửi mail cảnh báo qua Gmail
Lưu ý: Để thực hành bài lab gửi email cảnh báo này, bạn bắt buộc phải thực hiện xong cài đặt Nagios Core trên Nagios Server và các dịch vụ ssh, http trên Client theo mô hình ở bài lab này trên CentOS7 tại đây
Đối với bài lab này cần ít nhất là 02 máy chủ: Nagios Server và Web
Hostname | OS | IP | Dịch vụ |
---|---|---|---|
Nagios Server | Centos 7 | 192.168.100.125 | Nagios Core |
Web (client) | Ubuntu 14 | 192.168.100.150 | HTTP, SSH |
Trong bài viết này tôi sẽ hướng dẫn cấu hình gửi cảnh báo qua Gmail
- Bước 1: Cài đặt gói mail postfix
yum -y install postfix cyrus-sasl-plain mailx
- Bước 2: Cấu hình dịch vụ mail postfix
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
- Bước 3: Khởi động lại dich vụ
systemctl restart postfix
systemctl enable postfix
- Bước 4: Tạo 1 file để khai báo các thông số tài khoản mail xác thực
vi /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 username:password
- Bước 5: Thiết lập chế độ less secure của Gmail
Trong 1 số trường hợp cần phải tắt chế độ hạn chế truy cập từ các ứng dụng không an toàn cho tài khoản gmail của bạn. Tham khảo link sau:
https://myaccount.google.com/lesssecureapps
- Bước 1: Thực hiện câu lệnh sau trên Nagios Server
echo "This is a test." | mail -s "test message" [email protected]
- Bước 2: Kiểm tra trên hòm thư của Gmail Nếu nhận được email như sau thì các bước cấu hình dịch vụ mail đã thành công
Đầu tiên phải thực hiện tạo thông tin liên lạc để Nagios biết được là phải gửi cảnh báo tới đâu khi hệ thống gặp vấn đề
- Bước 1: Thêm các thông tin liên lạc của Nagios
Ta sẽ tạo các thông tin liên lạc trong file
/usr/local/nagios/etc/objects/contacts.cfg
vi /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name nagiosadmin ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Nagios Admin ; Full name of user
email [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
service_notification_period 24x7
service_notification_options w,u,c,r,f,s
service_notification_commands notify-service-by-email
host_notification_period 24x7
host_notification_options d,u,r,f,s
host_notification_commands notify-host-by-email
}
- service_notification_options: trạng thái sẽ gửi cảnh báo của service
- w: warning
- u: unknown service
- c: critical
- r: recovery service (trạng thái OK)
- f: cảnh báo khi service khởi động và tắt FLAPPING
- s: gửi cảnh báo khi dịch vụ downtime trong lịch trình
- host_notification_options: trạng thái sẽ gửi cảnh báo của host
- d: DOWN, cảnh báo khi host rơi vào trạng thái down
- Bước 2: Khởi động lại dịch vụ
/etc/init.d/nagios restart
Những bước cấu hình ở trên là để Nagios có thể tự động gửi mail khi hệ thống gặp sự cố. Trong trường hợp dịch vụ hoặc host được giám sát của tôi bị down thì Nagios phải gửi được email cho tôi để khắc phục sự cố.
Để kiểm chứng cho việc này, tôi sẽ thử kiểm tra bằng cách ngắt dịch vụ (ssh, http) và shutdown host đang giám sát. Lưu ý là trên client tôi đã giám sát được dịch vụ ssh và http như đã nói ở đầu bài viết
Như đã nói ở trên, sau đây tôi sẽ thử lab email cảnh báo với dịch vụ ssh.
- Bước 1: Trên máy Client, thực hiện dừng dịch vụ ssh trên Client
service ssh stop
- Bước 2: Kiểm tra dịch vụ trên dashboard Nagios Sau khi thực hiện ngừng dịch vụ ssh trên máy client, quay lại dashboard của Nagios để kiểm tra nếu trên dashboard thông báo như sau nghĩa là dịch vụ đã bị dừng
- Bước 3: Kiểm tra hòm thư Gmail Kiểm tra hòm thư Gmail để xem Nagios có tự động gửi mail cảnh báo đến không. Ở đây tôi đã nhận được mail cảnh báo đến
- Bước 4: Khởi động lại dịch vụ trên Client Sau khi nhận được email cảnh báo, tôi sẽ khởi động lại dịch vụ để thử xem Nagios có gửi email bản tin Recovery
service ssh start
-Bước 5: Kiểm tra hoạt động của dịch vụ trên dashboard
Sau khi thực hiện khởi động dịch vụ, kiểm tra trên dashboard
- Bước 6: Kiểm tra email Recovey
Sau khi dịch vụ đã hoạt động trở lại, Nagios sẽ thông báo 1 bản tin cho người quản trị trạng thái của dịch vụ đó. Kiểm tra hòm thư để xác nhận
Như vậy là Nagios đã có thể gửi email cảnh báo khi dịch vụ bị down. Để kiểm chứng thêm tôi sẽ lab với dịch vụ khác là web
Tương tự như dịch vụ ssh, tôi sẽ ngắt hoạt động của dịch vụ sau đó các bước làm sẽ giống như dịch vụ ssh
- Bước 1: Tương tự ssh, trên client tôi sẽ ngắt hoạt động dịch vụ web
service apache2 stop
- Bước 2: Kiểm tra trên dashboard của Nagios
- Bước 3: Kiểm tra hòm thư Gmail
- Bước 4: Khởi động lại dịch vụ
service apache2 start
- Bước 5: Kiểm tra trên dashboard
- Bước 6: Kiểm tra hòm thư Gmail
Như 2 bài lab ở trên, tôi đã thử nghiệm khi các dịch vụ bị down Nagios sẽ gửi email cảnh báo tới người quản trị. Bây giờ tôi sẽ thực hiện lab tính năng gửi cảnh báo khi máy chủ bị down
- Bước 1: Tắt máy chủ chủ đi
init 0
- Bước 2: Kiểm tra trên dashboard
- Bước 3: Kiểm tra hòm thư Gmail
-
Bước 4: Khởi động lại máy
-
Bước 5: Kiểm tra trên dashboard
- Bước 6: Kiểm tra hòm thư email Recovery
Với bài hướng dẫn ở trên, tôi đã hướng dẫn setup email cảnh báo gửi qua Gmail. Tuy nhiên Nagios còn có thể hỗ trợ gửi mail thông qua email domain, sau đây tôi sẽ hướng dẫn cấu hình gửi cảnh báo qua email domain
Điều kiện để cấu hình email domain cũng tương tự Gmail, ta phải cài đặt thành công Nagios Core trên CentOS7
Tham khảo cài đặt tại đây
Lưu ý: Ở đây tôi sẽ sử dụng mô hình lab tương tự như với Gmail. Chỉ được chọn 1 trong 2 cách để gửi mail (hoặc là qua Gmail, hoặc là qua Mail domain)
- Bước 1: Cài đặt gói mail postfix
yum -y install postfix cyrus-sasl-plain mailx
- Bước 2: Chỉnh sửa file cấu hình
/etc/postfix/main.cf
relayhost =
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_maps
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sender_dependent_authentication = yes
smtp_sasl_security_options = noanonymous
#smtp_sasl_mechanism_filter = AUTH LOGIN
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_tls_security_options =
- Bước 3: Khai báo thông tin domain trong file
/etc/postfix/relayhost_maps
email [domain]
Thay email domain bằng địa chỉ email và tên domain của bạn
- Bước 4: Tạo file
/etc/postfix/sasl_passwd
và khai báo thông tin email xác thực
vi /etc/postfix/sasl_passwd
domain username:password
Khai báo thông tin username và password
- Bước 5: Cấu hình, phân quyền và khởi động lại dịch vụ
postmap /etc/postfix/sasl_passwd
chown root:postfix /etc/postfix/sasl_passwd*
chmod 640 /etc/postfix/sasl_passwd*
systemctl reload postfix
Bước 6: Gửi mail test thử với email domain
echo "This is a test." | mail -s "test message" [email protected]
- Bước 7: Kiểm tra thư
Với các bước thực hiện cảnh báo, làm tương tự như với Gmail
Trong mục này tôi sẽ hướng dẫn gửi email cảnh báo theo nhóm người dùng. Mô hình lab vẫn như trên
- Bước 1: Add thêm user vào Nagios và đặt mật khẩu cho user vừa add
htpasswd -D /usr/local/nagios/etc/htpasswd.users trimq
- Bước 2: Khai báo thông tin về user trong file
contacts.cfg
vi /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name trimq ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Quoc Tri ; Full name of user
email [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
service_notification_period 24x7
service_notification_options w,u,c,r,f,s
service_notification_commands notify-service-by-email
host_notification_period 24x7
host_notification_options d,u,r,f,s
host_notification_commands notify-host-by-email
}
- contact_name: tên của user gửi mail đến
- use: loại user là generic
- alias: tên này được gán cho user
- email: địa chỉ email Nagios sẽ gửi cảnh báo đến
- Bước 3: Thêm thông số vào CONTACT GROUP trong file
/usr/local/nagios/etc/objects/contacts.cfg
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin,trimq
}
- Bước 4: Khởi động lại Nagios
/etc/init.d/nagios restart
- Bước 5: Gửi mail cảnh báo thử
Trên Web Interface tôi sẽ sử dụng command để gửi nhanh 1 thông báo
- Bước 6: Trên hòm thử Gmail tôi kiểm tra 2 hòm thư của tôi là
maiquoctri2102@gmail
vàtrimq212@gmail
Hòm thư thứ nhất
Hòm thư thứ 2
Như vậy là tôi đã có thể gửi email cảnh báo theo nhóm người dùng trong Nagios
Trong thực tế 1 hệ thống Data center gồm nhiều máy chủ và nhiều dịch vụ chạy trên các máy chủ đó. Sẽ có nhiều nhóm quản trị viên phụ trách các nhóm máy chủ hoặc dịch vụ. Ví dụ nhóm system admin sẽ phụ trách hệ thống server, nhóm network sẽ phụ trách các dịch vụ liên quan về mạng... Do vậy khi có sự cố xảy ra trên hệ thống, dịch vụ giám sát cần gửi mail đến đúng nhóm quản trị để xử lý.
Sau đây tôi sẽ hướng dẫn cách để gửi mail theo nhóm. Mô hình lab vẫn giữ nguyên như trên
Gửi mail cảnh báo về dịch vụ tới nhóm quản trị
- Bước 1: Thêm contact trong file
/usr/local/nagios/etc/objects/contacts.cfg
. Ở đây tôi thêm các địa chỉ email và tên người dùng để liên lạc
# CONTACTS
define contact{
contact_name trimq ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Quoc Tri ; Full name of user
email [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
service_notification_period 24x7
service_notification_options w,u,c,r,f,s
service_notification_commands notify-service-by-email
host_notification_period 24x7
host_notification_options d,u,r,f,s
host_notification_commands notify-host-by-email
}
define contact{
contact_name quoctri ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)
alias Tri Mai ; Full name of user
email [email protected] ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
service_notification_period 24x7
service_notification_options w,u,c,r,f,s
service_notification_commands notify-service-by-email
host_notification_period 24x7
host_notification_options d,u,r,f,s
host_notification_commands notify-host-by-email
}
- Bước 2: Thêm các contact group trong file
/usr/local/nagios/etc/objects/contacts.cfg
, nghĩa là liên lạc với nhóm người dùng
# CONTACT GROUPS
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members trimq
}
define contactgroup{
contactgroup_name http-group
alias HTTP Admin
members quoctri
}
- contactgroup_name: Tên của nhóm liên lạc
- alias: Đặt alias của nhóm này là HTTP Admin
- members: tên các thành viên có trong nhóm này
- Bước 3: Sửa trong file
template.cfg
. Trong# SERVICE TEMPLATES
comment dòng sau:
# contact_groups
- Bước 4: Thêm cấu hình sau trong file cấu hình của giám sát dịch vụ. Ví dụ tôi muốn gửi mail cảnh báo cho dịch vụ http cho nhóm HTTP-admin, tôi sẽ thêm dòng
contact_groups http-group
vào define service.http-group
là nhóm mà tôi đã tạo ra trong file contact
vi /usr/local/nagios/etc/servers/host1.cfg
define service {
use generic-service
host_name host-01
service_description Check HTTP service
check_command check_http
normal_check_interval 5
retry_check_interval 2
contact_groups http-group
- Bước 5: Khởi động lại dịch vụ
/etc/init.d/nagios restart
- Bước 6: Thực hiện trên client được giám sát, ngừng hoạt động của http
service apache2 stop
- Bước 7: Kiểm tra trên dashboard
- Bước 8: Kiểm tra hòm thư Gmail các địa chỉ email thuộc nhóm
http-group
- Bước 9: Để chắc chắn rằng Nagios chỉ gửi cảnh báo đến các contact trong nhóm
http-group
. Kiểm tra thử 1 contact trong nhóm khác không thuộchttp-group
, nếu không có mail cảnh báo nghĩa là đã thành công
Gửi mail cảnh báo về tính trạng host tới nhóm quản trị host
-
Với bài lab này, làm tương tự như bước 1 và bước 2 của cấu hình gửi cảnh báo về dịch vụ
-
Bước 3: Sửa trong file
template.cfg
. Trong# HOST TEMPLATES
comment dòng saucontact_groups
# Linux host definition template
# contact_groups admins
Bước 4: Thêm contact trong define host của file cấu hình host giám sát
define host {
use linux-server
host_name host-01
alias host-01
address 192.168.100.150
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
contact_groups admins
Như vậy là tôi đã thêm contact_groups
cho host là admins
. Khi có cảnh báo sẽ được gửi đến nhóm người dùng trong group admins
- Bước 5: Khởi động lại dịch vụ
/etc/init.d/nagios restart
- Bước 6: Để kiểm nghiệm tôi tắt client đi
init 0
- Bước 7: Kiểm tra hoạt động của client trên dashboard
- Bước 8: Kiểm tra trong hòm thư Gmail của người dùng trong nhóm
admins
- Bước 9: Để chắc chắn rằng Nagios chỉ gửi cảnh báo đến các contact trong nhóm
admins
. Kiểm tra thử 1 contact trong nhóm khác không thuộcadmins
, nếu không có mail cảnh báo nghĩa là đã thành công