19/09/2018, 09:47

Xây dựng cho sản xuất: Ứng dụng web - Giám sát

Giới thiệu Bây giờ chúng tôi đã thiết lập máy chủ ứng dụng sản xuất, kế hoạch khôi phục và sao lưu, hãy xem xét thêm giám sát để cải thiện nhận thức về trạng thái máy chủ và dịch vụ của chúng tôi. Phần mềm giám sát, chẳng hạn như Nagios, Icinga và Zabbix, cho phép bạn tạo các trang tổng quan và ...

Giới thiệu

Bây giờ chúng tôi đã thiết lập máy chủ ứng dụng sản xuất, kế hoạch khôi phục và sao lưu, hãy xem xét thêm giám sát để cải thiện nhận thức về trạng thái máy chủ và dịch vụ của chúng tôi. Phần mềm giám sát, chẳng hạn như Nagios, Icinga và Zabbix, cho phép bạn tạo các trang tổng quan và cảnh báo sẽ cho bạn biết các thành phần nào trong thiết lập ứng dụng của bạn cần chú ý. Mục tiêu của việc này là để giúp bạn phát hiện các vấn đề với thiết lập của bạn và bắt đầu khắc phục chúng, trước khi người dùng của bạn gặp phải chúng.

Monitoring diagram

Trong hướng dẫn này, chúng tôi sẽ thiết lập Nagios 4 làm phần mềm giám sát và cài đặt tác nhân NRPE trên các máy chủ bao gồm ứng dụng của chúng tôi.

Đối với mỗi máy chủ trong thiết lập của chúng tôi, chúng tôi sẽ thiết lập giám sát để kiểm tra xem máy chủ có hoạt động không và nếu quá trình chính của máy chủ (tức là apache, mysql hoặc haproxy) đang chạy. Trong khi hướng dẫn giám sát này không phải là toàn diện - bạn có thể sẽ muốn thiết lập các kiểm tra bổ sung mà chúng tôi sẽ không đề cập ở đây - đó là một nơi tuyệt vời để bắt đầu.

Điều kiện tiên quyết

Nếu bạn muốn truy cập bảng điều khiển ghi nhật ký của mình thông qua tên miền, hãy tạo Bản ghi trong miền của bạn, như "monitoring.example.com", trỏ đến giám sát địa chỉ IP công cộng của máy chủ. Ngoài ra, bạn có thể truy cập trang tổng quan giám sát qua địa chỉ IP công cộng. Bạn nên thiết lập máy chủ web giám sát để sử dụng HTTPS và hạn chế quyền truy cập vào máy chủ web bằng cách đặt nó sau VPN.

Cài đặt Nagios trên máy chủ giám sát

Thiết lập Nagios trên giám sát máy chủ bằng cách làm theo hướng dẫn này: Làm thế nào để cài đặt Nagios 4 và giám sát máy chủ của bạn trên Ubuntu 14.04. Nếu bạn thích, bạn cũng có thể sử dụng Icinga, là một cái nĩa của Nagios.

Dừng lại khi bạn đến Giám sát một máy chủ Ubuntu với NRPE phần.

Thêm máy chủ vào Nagios

Trên mỗi máy chủ trong thiết lập của bạn (db1, app1, app2 và lb1), hãy trải qua Giám sát một máy chủ Ubuntu với NRPE phần của hướng dẫn Nagios.

Hãy chắc chắn thêm tên máy chủ cá nhân hoặc địa chỉ IP của bạn giám sát máy chủ đến allowed_hosts đặt trong tệp cấu hình NRPE.

Khi bạn hoàn thành việc thêm mỗi máy chủ, bạn nên có một tệp riêng biệt cho mỗi máy chủ mà bạn muốn theo dõi: db1.cfg, app1.cfg, app2.cfgvà lb1.cfg. Mỗi tệp phải chứa định nghĩa máy chủ đề cập đến tên máy chủ và địa chỉ tương ứng (có thể là tên máy chủ hoặc địa chỉ IP của máy chủ).

Thiết lập máy chủ và giám sát dịch vụ

Hãy tạo một danh sách những thứ phổ biến mà chúng tôi muốn theo dõi trên mọi máy chủ. Đối với mỗi máy chủ, hãy theo dõi những điều sau dịch vụ:

  • Ping
  • SSH
  • Tải hiện tại
  • Những người dùng hiện tại
  • Sử dụng đĩa

Hãy thiết lập điều đó ngay bây giờ.

Xác định các dịch vụ phổ biến

Trong hướng dẫn cài đặt Nagios, chúng tôi đã định cấu hình Nagios để tìm kiếm .cfg tệp trong /usr/local/nagios/etc/servers (hoặc là /etc/icinga/objects/ cho Icinga). Để giữ mọi thứ được tổ chức, chúng tôi sẽ tạo một tệp cấu hình Nagios mới cho các dịch vụ phổ biến mà chúng tôi muốn theo dõi được gọi là "common.cfg".

Trước tiên, mở tệp cấu hình máy chủ để chỉnh sửa

sudo vi /usr/local/nagios/etc/servers/common.cfg

Thêm các định nghĩa dịch vụ sau đây, với host_name của mỗi máy chủ của bạn (được định nghĩa trong các định nghĩa máy chủ, trước đó):

Nagios Configuration — Common Services

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
}

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             Current Load
        check_command                   check_nrpe!check_load
}

define service {
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             Current Users
        check_command                   check_nrpe!check_users
}

define service{
        use                             generic-service
        host_name                       db1,app1,app2,lb1
        service_description             Disk Utilization
        check_command                   check_nrpe!check_hda1
}

Lưu và thoát.

Bây giờ chúng tôi đã sẵn sàng để xác định các dịch vụ cụ thể cho từng máy chủ. Chúng ta sẽ bắt đầu với máy chủ cơ sở dữ liệu của chúng ta.

Xác định quy trình MySQL

Tạo lệnh NRPE (trên máy khách)

Trên máy chủ cơ sở dữ liệu của bạn, db1, chúng ta sẽ cấu hình một lệnh NRPE mới. Mở tệp cấu hình NRPE mới, "commands.cfg":

sudo vi /etc/nagios/nrpe.d/commands.cfg

Thêm định nghĩa lệnh sau:

NRPE configuration (commands.cfg) — check_mysqld

command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld

Lưu và thoát. Điều này cho phép NRPE kiểm tra quá trình có tên "mysqld" và báo cáo trạng thái quan trọng nếu có ít hơn 1 quy trình với tên đó đang chạy.

Tải lại cấu hình NRPE:

sudo service nagios-nrpe-server reload

Tạo định nghĩa dịch vụ (trên máy chủ)

Trên máy chủ Nagios của bạn, giám sát, chúng tôi cần xác định một dịch vụ mới sử dụng NRPE để chạy check_mysqld chỉ huy.

Mở tệp xác định định nghĩa máy chủ cơ sở dữ liệu của bạn. Trong ví dụ của chúng tôi, nó được gọi là "db1.cfg":

sudo vi /usr/local/nagios/etc/servers/db1.cfg

Ở cuối tệp, thêm định nghĩa dịch vụ này (đảm bảo rằng host_name giá trị khớp với tên của định nghĩa máy chủ):

db1.cfg — check_mysql

define service {
        use                             generic-service
        host_name                       db1
        service_description             Check MySQL Process
        check_command                   check_nrpe!check_mysqld
}

Lưu và thoát. Điều này cấu hình Nagios sử dụng NRPE để chạy lệnh check_mysqld trên máy chủ cơ sở dữ liệu.

Để thay đổi này có hiệu lực, chúng tôi phải tải lại Nagios. Tuy nhiên, chúng tôi sẽ tiếp tục theo dõi quá trình Apache trước tiên.

Xác định quy trình Apache

Tạo lệnh NRPE (trên máy khách)

Trên máy chủ ứng dụng của bạn, app1app2, chúng ta sẽ cấu hình một lệnh NRPE mới. Mở tệp cấu hình NRPE mới, "commands.cfg":

sudo vi /etc/nagios/nrpe.d/commands.cfg

Thêm định nghĩa lệnh sau:

NRPE configuration (commands.cfg) — check_apache2

command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2

Lưu và thoát. Điều này cho phép NRPE kiểm tra quy trình có tên "apache2" và báo cáo trạng thái quan trọng nếu không có quy trình khớp nào đang chạy hoặc báo cáo trạng thái cảnh báo nếu có ít hơn ba quy trình khớp.

Tải lại cấu hình NRPE:

sudo service nagios-nrpe-server reload

Hãy chắc chắn lặp lại điều này trên bất kỳ máy chủ ứng dụng bổ sung nào.

Tạo định nghĩa dịch vụ (trên máy chủ)

Trên máy chủ Nagios của bạn, giám sát, chúng tôi cần xác định một dịch vụ mới sử dụng NRPE để chạy check_apache2 chỉ huy.

Mở tệp xác định định nghĩa máy chủ ứng dụng của bạn. Trong ví dụ của chúng tôi, chúng được gọi là "app1.cfg" và "app2.cfg":

sudo vi /usr/local/nagios/etc/servers/app1.cfg

Ở cuối tệp, thêm định nghĩa dịch vụ này (đảm bảo rằng host_name giá trị khớp với tên của định nghĩa máy chủ):

app1.cfg and app2.cfg — check_apache2

define service {
        use                             generic-service
        host_name                       app1
        service_description             Check Apache2 Process
        check_command                   check_nrpe!check_apache2
}

Lưu và thoát. Điều này cấu hình Nagios sử dụng NRPE để chạy lệnh check_apache2 trên các máy chủ ứng dụng. Hãy chắc chắn lặp lại điều này cho từng máy chủ ứng dụng của bạn.

Để thay đổi này có hiệu lực, chúng tôi phải tải lại Nagios. Tuy nhiên, chúng tôi sẽ tiếp tục theo dõi quá trình HAProxy trước đó.

Xác định quá trình HAProxy

Tạo lệnh NRPE (trên máy khách)

Trên máy chủ cân bằng tải của bạn, lb1, chúng ta sẽ cấu hình một lệnh NRPE mới. Mở tệp cấu hình NRPE mới, "commands.cfg":

sudo vi /etc/nagios/nrpe.d/commands.cfg

Thêm định nghĩa lệnh sau:

NRPE configuration (commands.cfg) — check_haproxy

command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy

Lưu và thoát. Điều này cho phép NRPE kiểm tra quá trình có tên "haproxy" và báo cáo trạng thái quan trọng nếu có ít hơn 1 quy trình với tên đó đang chạy.

Tải lại cấu hình NRPE:

sudo service nagios-nrpe-server reload

Hãy chắc chắn lặp lại điều này trên bất kỳ máy chủ ứng dụng bổ sung nào.

Tạo định nghĩa dịch vụ (trên máy chủ)

Trên máy chủ Nagios của bạn, giám sát, chúng tôi cần xác định một dịch vụ mới sử dụng NRPE để chạy check_haproxy chỉ huy.

Mở tệp xác định định nghĩa máy chủ cơ sở dữ liệu của bạn. Trong ví dụ của chúng tôi, nó được gọi là "lb1.cfg":

sudo vi /usr/local/nagios/etc/servers/lb1.cfg

Ở cuối tệp, thêm định nghĩa dịch vụ này (đảm bảo rằng host_name giá trị khớp với tên của định nghĩa máy chủ):

lb1.cfg — check_haproxy

define service {
        use                             generic-service
        host_name                       lb1
        service_description             Check HAProxy Process
        check_command                   check_nrpe!check_haproxy
}

Điều này cấu hình Nagios để sử dụng NRPE để chạy lệnh check_haproxy trên máy chủ cân bằng tải của bạn.

Để thay đổi này có hiệu lực, chúng tôi phải tải lại Nagios.

Tải lại cấu hình Nagios

Để tải lại Nagios và đặt tất cả các thay đổi của chúng tôi có hiệu lực, hãy nhập lệnh sau:

sudo service nagios reload

Nếu không có lỗi cú pháp trong cấu hình, bạn nên thiết lập.

Kiểm tra dịch vụ Nagios

Trước khi tiếp tục, bạn sẽ muốn xác minh rằng Nagios đang theo dõi tất cả các máy chủ và dịch vụ mà bạn đã xác định. Truy cập máy chủ Nagios của bạn thông qua tên máy chủ công cộng hoặc địa chỉ IP của nó, ví dụ: http://monitoring.example.com/nagios/. Nhập thông tin đăng nhập bạn thiết lập trong quá trình cài đặt máy chủ Nagios.

Trong menu bên, nhấp vào Dịch vụ liên kết. Bạn nên được đưa đến một trang trông như thế này:

Nagios Services

Lý tưởng nhất, bạn sẽ thấy mỗi máy chủ và tất cả các dịch vụ sẽ ở trạng thái "OK". Trong ảnh chụp màn hình, chúng ta có thể thấy rằng có sự cố với app2 máy chủ vì nó đã được tắt trong khi kiểm tra trạng thái gần đây nhất. Nếu bất kỳ dịch vụ nào của bạn không phải là "OK", hãy sửa chúng hoặc, nếu các dịch vụ là tốt, hãy xem lại cấu hình Nagios của bạn để tìm lỗi.

Những ý kiến ​​khác

Bạn rất có thể sẽ muốn tạo một kế hoạch khôi phục cho máy chủ giám sát của bạn và sao lưu các tệp cấu hình Nagios của bạn (/usr/local/nagios/etc). Sau khi sao lưu được thiết lập, có thể bạn sẽ muốn định cấu hình theo dõi, cho các dịch vụ bổ sung và thông báo qua email.

Phần kết luận

Bây giờ bạn sẽ có thể thấy trạng thái của các máy chủ và dịch vụ của bạn bằng cách chỉ cần liếc nhìn vào bảng điều khiển giám sát của bạn. Trong trường hợp mất điện, hệ thống giám sát của bạn sẽ giúp bạn xác định (các) máy chủ và (các) dịch vụ nào không hoạt động đúng cách sẽ giúp giảm thời gian ngừng hoạt động của ứng dụng của bạn.

Tiếp tục với hướng dẫn tiếp theo để bắt đầu thiết lập đăng nhập tập trung cho thiết lập máy chủ sản xuất của bạn: Xây dựng cho sản xuất: Ứng dụng web - Ghi nhật ký tập trung.

0