Thứ sáu, 05/05/2017 | 00:00 GMT+7

Cách giám sát server và dịch vụ bằng Icinga trên Ubuntu 16.04

Icinga là một hệ thống giám sát open-souce được sử dụng để theo dõi tình trạng của các server và dịch vụ được nối mạng. Trong hướng dẫn này, ta sẽ sử dụng Icinga để cài đặt hai loại cấu hình giám sát khác nhau. Đầu tiên là dựa trên các kiểm tra mạng đơn giản của các dịch vụ bên ngoài của server của bạn, chẳng hạn như thực hiện một yêu cầu HTTP định kỳ đến trang web . Cấu hình khác sử dụng tác nhân phần mềm chạy trên server để thu thập thông tin hệ thống chi tiết hơn như tải và số lượng các quy trình đang chạy.

Yêu cầu

Trước khi bắt đầu hướng dẫn này, bạn nên hoàn thành hướng dẫn trước trong loạt bài này, Cách cài đặt Icinga và Icinga Web trên Ubuntu 16.04 . Điều này sẽ để lại cho bạn lõi Icinga và giao diện Web Icinga đang chạy trên một server duy nhất, mà ta sẽ gọi là nút icinga-master xuyên suốt.

Bạn cũng cần một số server để giám sát. Ta sẽ sử dụng hai server Ubuntu 16.04 có cài đặt Apache cho các ví dụ của ta . Bạn chỉ có thể sử dụng phần Apache của hướng dẫn LAMP được đề cập ở trên để cài đặt những điều này.

Bước 1 - Cài đặt Giám sát Server Đơn giản

Một cách đơn giản để theo dõi server với Icinga là cài đặt kiểm tra thường xuyên các dịch vụ có sẵn bên ngoài của nó. Vì vậy, đối với một web server , ta thường xuyên ping địa chỉ IP của server và cũng cố gắng truy cập một trang web. Điều này sẽ cho ta biết server lưu trữ có hoạt động hay không và web server có hoạt động bình thường hay không.

Hãy cài đặt giám sát cho một web server . Chọn một trong các server Apache được đề cập làm yêu cầu và đảm bảo trang giữ chỗ Apache mặc định đang được cung cấp đúng cách. Ta sẽ gọi server này là web-1.example.com . Ta sẽ không cần phải đăng nhập vào nó, tất cả các kiểm tra tình trạng sẽ được cấu hình và thực thi trên nút chính.

Lưu ý: Icinga luôn mặc định sử dụng Tên domain Đủ điều kiện (FQDN) của bất kỳ server lưu trữ nào mà nó đang giao dịch. FQDN là một tên server cộng với domain của nó, chẳng hạn như web-1.example.com . Nếu bạn không cài đặt domain thích hợp cho server , FQDN sẽ giống như web-1 .localdomain .

Chúng có thể sử dụng, chỉ cần nhất quán và nếu bạn không có FQDN “thực”, hãy luôn sử dụng địa chỉ IP của server trong bất kỳ trường address Icinga nào bạn cấu hình .

Đăng nhập vào nút chính. Để thêm một server mới, ta cần phải chỉnh sửa Icinga của hosts.conf file . Mở nó trong một editor :

  • sudo nano /etc/icinga2/conf.d/hosts.conf

Thao tác này sẽ mở một file với một số comment giải thích và một khối server duy nhất được xác định. object Host NodeName cấu hình object Host NodeName hiện có xác định server icinga-master , là server mà ta đã cài đặt Icinga và Icinga Web trên đó. Định vị con trỏ của bạn ở cuối file và thêm server mới:

/etc/icinga2/conf.d/hosts.conf
. . . object Host "web-1.example.com" {   import "generic-host"   address = "web-1_server_ip"   vars.http_vhosts["http"] = {     http_uri = "/"   }   vars.notification["mail"] = {     groups = [ "icingaadmins" ]   } } 

Điều này xác định server lưu trữ có tên là web-1.example.com , nhập một số cấu hình server lưu trữ mặc định từ một mẫu có tên là generic-host , trỏ Icinga đến địa chỉ IP chính xác, sau đó xác định một số biến yêu cầu Icinga kiểm tra phản hồi HTTP tại URL root ( / ) và thông báo cho group icingaadmins qua email khi có sự cố.

Lưu file , sau đó khởi động lại Icinga:

  • sudo systemctl restart icinga2

Chuyển trở lại giao diện Icinga Web trong trình duyệt của bạn. Giao diện tự cập nhật khá nhanh, vì vậy bạn không cần phải làm mới trang. Thông tin server mới sẽ được điền theo thứ tự ngắn gọn và việc kiểm tra sức khỏe sẽ thay đổi từ Đang chờ xử lý thành Ok sau khi Icinga thu thập đủ thông tin.

Đây là một cách tốt để giám sát các dịch vụ bên ngoài trên server lưu trữ và có các cách kiểm tra khác dành cho server SSH, SMTP, v.v. Nhưng cũng rất vui nếu biết thêm chi tiết về tình trạng bên trong của các server mà ta đang theo dõi.

Tiếp theo, ta sẽ cài đặt giám sát thông qua đại lý Icinga, vì vậy ta có thể theo dõi thông tin hệ thống chi tiết hơn.

Bước 2 - Cài đặt Giám sát dựa trên tác nhân

Icinga cung cấp một cơ chế giao tiếp an toàn giữa nút chính và nút khách để thực hiện kiểm tra sức khỏe từ xa rộng rãi hơn. Thay vì chỉ biết rằng web server của ta đang phục vụ thành công các trang, ta cũng có thể theo dõi tải CPU, số lượng quá trình, dung lượng đĩa, v.v.

Ta sẽ cài đặt một server thứ hai để giám sát. Ta sẽ gọi nó là web-2.example.com . Ta cần cài đặt phần mềm Icinga trên máy từ xa, chạy một số trình hướng dẫn cài đặt để tạo kết nối, sau đó cập nhật một số file cấu hình trên nút chính Icinga.

Lưu ý: Có nhiều cách để kiến trúc cài đặt Icinga, hoàn chỉnh với nhiều tầng nút chính / vệ tinh / máy khách , chuyển đổi dự phòng có tính khả dụng cao và nhiều cách để chia sẻ chi tiết cấu hình giữa các node . Ta đang cài đặt một cấu trúc hai tầng đơn giản với nút một tổng thể và nhiều nút client. Hơn nữa, tất cả các cấu hình sẽ được thực hiện trên các node chính, và các lệnh kiểm tra sức khỏe của ta sẽ được sắp xếp vào các node chính và đẩy cho khách hàng. Dự án Icinga gọi cài đặt này là chế độ Điểm cuối lệnh từ trên xuống .

Cài đặt nút chính

Đầu tiên, ta cần cài đặt nút chính để tạo kết nối client . Ta làm điều đó bằng cách chạy trình hướng dẫn cài đặt nút trên nút chính của ta :

  • sudo icinga2 node wizard

Điều này sẽ bắt đầu một tập lệnh hỏi ta một số câu hỏi và cài đặt mọi thứ cho ta . Trong phần sau, ta nhấn ENTER để chấp nhận hầu hết các giá trị mặc định. Câu trả lời không mặc định được đánh dấu. Một số kết quả thông tin đã bị xóa để rõ ràng:

Output
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n Starting the Master setup routine... Please specify the common name (CN) [icinga-master.example.com]: ENTER to accept the default, or type your FQDN Checking for existing certificates for common name 'icinga-master.example.com'... Certificates not yet generated. Running 'api setup' now. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. Please specify the API bind host/port (optional): ENTER Bind Host []: ENTER Bind Port []: ENTER Done. Now restart your Icinga 2 daemon to finish the installation!

Khởi động lại Icinga để hoàn tất cập nhật cấu hình:

  • sudo systemctl restart icinga2

Mở cổng firewall để cho phép kết nối bên ngoài với Icinga:

  • sudo ufw allow 5665

Bây giờ ta sẽ chuyển sang nút client , cài đặt Icinga và chạy cùng một trình hướng dẫn.

Cài đặt nút client

Đăng nhập vào server mà ta đang gọi là web-2.example.com . Ta cần cài đặt lại repository Icinga và sau đó cài đặt chính Icinga. Đây là quy trình tương tự mà ta đã sử dụng trên nút chính. Đầu tiên hãy cài đặt khóa:

  • curl -sSL https://packages.icinga.com/icinga.key | sudo apt-key add -

Mở file icinga.list :

  • sudo nano /etc/apt/sources.list.d/icinga.list

Dán vào chi tiết repository :

/etc/apt/sources.list.d/icinga.list
deb https://packages.icinga.com/ubuntu icinga-xenial main 

Lưu file , sau đó cập nhật bộ nhớ cache của gói:

  • sudo apt-get update

Sau đó, cài đặt icinga2 . Lưu ý ta không cần icinga2-ido-mysql mà ta đã cài đặt trên nút chính:

  • sudo apt-get install icinga2

Bây giờ ta chạy qua trình hướng dẫn nút trên server này, nhưng ta thực hiện cấu hình vệ tinh thay vì chính :

  • sudo icinga2 node wizard
Output
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: y Starting the Node setup routine... Please specify the common name (CN) [web-2.example.com]: ENTER Please specify the master endpoint(s) this node should connect to: Master Common Name (CN from your master setup): icinga-master.example.com Do you want to establish a connection to the master from this node? [Y/n]: y Please fill out the master connection information: Master endpoint host (Your master's IP address or FQDN): icinga-master_server_ip Master endpoint port [5665]: ENTER Add more master endpoints? [y/N]: ENTER Please specify the master connection for CSR auto-signing (defaults to master endpoint host): Host [icinga-master_server_ip]: ENTER Port [5665]: ENTER

Bây giờ trình hướng dẫn sẽ lấy public certificate từ nút chính của ta và hiển thị cho ta chi tiết của nó. Xác nhận thông tin, sau đó tiếp tục:

Output
. . . Is this information correct? [y/N]: y information/cli: Received trusted master certificate. Please specify the request ticket generated on your Icinga 2 master. (Hint: # icinga2 pki ticket --cn 'web-2.example.com'):

Đến đây, hãy chuyển về server master của bạn và chạy lệnh mà trình hướng dẫn đã nhắc bạn. Đừng quên sudo ở phía trước của nó:

  • sudo icinga2 pki ticket --cn 'web-2.example.com'

Lệnh sẽ xuất ra một khóa. Sao chép nó vào clipboard của bạn, sau đó chuyển trở lại nút client , dán nó vào và nhấn ENTER để tiếp tục với trình hướng dẫn.

Output
. . . information/cli: Requesting certificate with ticket '5f53864a504a1c42ad69faa930bffa3a12600546'. Please specify the API bind host/port (optional): Bind Host []: ENTER Bind Port []: ENTER Accept config from master? [y/N]: n Accept commands from master? [y/N]: y Done. Now restart your Icinga 2 daemon to finish the installation!

Bây giờ, hãy mở cổng Icinga trên firewall của bạn:

  • sudo ufw allow 5665

Và khởi động lại Icinga để cập nhật đầy đủ cấu hình:

  • sudo systemctl restart icinga2

Bạn có thể xác minh có kết nối giữa hai server bằng netstat :

  • netstat | grep :5665

Có thể mất một lúc để kết nối được thực hiện. Cuối cùng netstat sẽ xuất ra một dòng hiển thị kết nối ESTABLISHED trên đúng cổng.

Output
tcp 0 0 web-2_server_ip:58188 icinga-master_server_ip:5665 ESTABLISHED

Điều này cho thấy rằng các server của ta đã kết nối và ta đã sẵn sàng cấu hình các kiểm tra của ứng dụng client .

Cấu hình Giám sát tác nhân

Mặc dù cái chính và client hiện đã được kết nối, vẫn còn một số cài đặt cần thực hiện trên cái chính để cho phép giám sát. Ta cần cài đặt một file server mới. Chuyển trở lại nút chính.

Một cấp độ tổ chức quan trọng trong cài đặt Icinga là khái niệm về vùng . Tất cả các node client phải tạo vùng riêng của chúng và báo cáo cho vùng mẹ, trong trường hợp này là nút chính của ta . Theo mặc định, vùng của nút chính của ta được đặt tên theo FQDN của nó. Ta sẽ tạo một folder được đặt tên theo khu vực chính của ta trong folder zone.d của zones.d . Điều này sẽ giữ thông tin cho tất cả các khách hàng của khu vực chính.

Tạo folder vùng:

  • sudo mkdir /etc/icinga2/zones.d/icinga-master.example.com

Ta sẽ tạo một file cấu hình dịch vụ. Điều này sẽ xác định một số kiểm tra dịch vụ mà ta sẽ thực hiện trên bất kỳ nút client từ xa nào. Mở file ngay bây giờ:

  • sudo nano /etc/icinga2/zones.d/icinga-master.example.com/services.conf

Dán vào phần sau, sau đó lưu và đóng:

services.conf
apply Service "load" {   import "generic-service"   check_command = "load"   command_endpoint = host.vars.client_endpoint   assign where host.vars.client_endpoint }  apply Service "procs" {   import "generic-service"   check_command = "procs"   command_endpoint = host.vars.client_endpoint   assign where host.vars.client_endpoint } 

Điều này xác định hai kiểm tra dịch vụ. Đầu tiên sẽ báo cáo về tải CPU và thứ hai sẽ kiểm tra số lượng tiến trình trên server . Hai dòng cuối cùng của mỗi định nghĩa dịch vụ là quan trọng. command_endpoint cho Icinga biết rằng kiểm tra dịch vụ này cần được gửi đến một điểm cuối lệnh từ xa. Dòng assign where tự động chỉ định kiểm tra dịch vụ cho bất kỳ server lưu trữ nào có biến client_endpoint được xác định.

Hãy tạo một server lưu trữ như vậy ngay bây giờ. Mở một file mới trong folder vùng mà ta đã tạo trước đó. Ở đây ta đã đặt tên file theo tên server từ xa:

  • sudo nano /etc/icinga2/zones.d/icinga-master.example.com/web-2.example.com<^>.conf

Dán vào cấu hình sau, sau đó lưu file :

web-2.example.com.conf
object Zone "web-2.example.com" {   endpoints = [ "web-2.example.com" ]   parent = "icinga-master.example.com" }  object Endpoint "web-2.example.com" {   host = "web-2_server_ip" }  object Host "web-2.example.com" {   import "generic-host"   address = "web-2_server_ip"   vars.http_vhosts["http"] = {     http_uri = "/"   }   vars.notification["mail"] = {     groups = [ "icingaadmins" ]   }   vars.client_endpoint = name } 

Tệp này xác định một vùng cho server từ xa của ta và liên kết nó trở lại vùng mẹ. Nó cũng xác định server lưu trữ như một điểm cuối, sau đó xác định chính server lưu trữ, nhập một số luật mặc định từ mẫu generic-host . Nó cũng đặt một số vars để tạo kiểm tra HTTP và kích hoạt thông báo qua email. Lưu ý vì server này đã định nghĩa vars.client_endpoint = name , nó cũng sẽ được gán các kiểm tra dịch vụ mà ta vừa định nghĩa trong services.conf .

Khởi động lại Icinga để cập nhật cấu hình:

  • sudo systemctl restart icinga2

Chuyển trở lại giao diện Icinga Web và server mới sẽ hiển thị với các kiểm tra Đang chờ xử lý . Sau một lúc, những kiểm tra đó sẽ chuyển thành Ok . Điều này nghĩa là nút client của ta đang chạy kiểm tra thành công nút chính.

Kết luận

Trong hướng dẫn này, ta cài đặt hai loại giám sát khác nhau với Icinga, kiểm tra dịch vụ bên ngoài và kiểm tra server dựa trên tác nhân. Còn nhiều điều cần tìm hiểu về cách cấu hình và làm việc với Icinga, vì vậy bạn có thể cần tìm hiểu sâu hơn về tài liệu mở rộng của Icinga .

Lưu ý nếu bạn đến một điểm mà bạn yêu cầu các lệnh kiểm tra tùy chỉnh, bạn cần phải đồng bộ hóa các lệnh này từ nút chính với các node client bằng cách sử dụng vùng cấu hình chung . Bạn có thể tìm hiểu thêm về tính năng cụ thể này tại đây .

Cuối cùng, nếu bạn có một số lượng lớn server cần theo dõi, bạn có thể xem xét sử dụng phần mềm quản lý cấu hình để tự động cập nhật cấu hình Icinga của bạn . Loạt bài hướng dẫn của ta Bắt đầu với Quản lý Cấu hình cung cấp một cái nhìn tổng quan toàn diện về các khái niệm và phần mềm liên quan.


Tags:

Các tin liên quan

Cách thiết lập đồng bộ hóa thời gian trên Ubuntu 16.04
2017-04-28
Cách quản lý log với Graylog 2 trên Ubuntu 16.04
2017-04-25
Cách cài đặt Webmin trên Ubuntu 16.04
2017-04-21
Cách cài đặt và cấu hình OrientDB trên Ubuntu 16.04
2017-03-24
how-to-monitor-system-metrics-with-the-tick-stack-on-ubuntu-16-04
2017-03-16
Cách cài đặt và cấu hình Postfix trên Ubuntu 16.04
2017-03-16
Cách cấu hình client FreeIPA trên Ubuntu 16.04
2017-03-08
Cách cài đặt Moodle trên Ubuntu 16.04
2017-03-02
Cách cài đặt và bảo mật MongoDB trên Ubuntu 16.04
2017-02-24
Cách cài đặt ionCube trên Ubuntu 16.04
2017-01-11