Thứ tư, 27/03/2019 | 00:00 GMT+7

Cách thu thập số liệu cơ sở hạ tầng với Metricbeat trên CentOS 7

Metricbeat , là một trong số các Beats giúp gửi nhiều loại dữ liệu server khác nhau đến server Elastic Stack , là một trình gửi dữ liệu nhẹ, sau khi được cài đặt trên server của bạn, định kỳ thu thập số liệu thống kê CPU và bộ nhớ trên toàn hệ thống và mỗi quá trình và gửi dữ liệu trực tiếp đến việc triển khai Elasticsearch của bạn. Người gửi hàng này đã thay thế Topbeat trước đó trong version 5.0 của Elastic Stack.

Nhịp đập khác hiện có sẵn từ Elastic là:

  • Filebeat : thu thập và gửi các file log .
  • Packetbeat : thu thập và phân tích dữ liệu mạng.
  • Winlogbeat : thu thập log sự kiện của Windows.
  • Auditbeat : thu thập dữ liệu khung kiểm toán Linux và giám sát tính toàn vẹn của file .
  • Nhịp tim : theo dõi các dịch vụ để biết tính khả dụng của chúng bằng cách thăm dò tích cực.

Trong hướng dẫn này, bạn sẽ sử dụng Metricbeat để chuyển tiếp các số liệu hệ thống local như sử dụng CPU / bộ nhớ / đĩa và sử dụng mạng từ server CentOS 7 sang server khác cùng loại có cài đặt Elastic Stack. Với người giao hàng này, bạn sẽ thu thập các số liệu cơ bản mà bạn cần để có được trạng thái hiện tại của server của bạn.

Yêu cầu

Để làm theo hướng dẫn này, bạn cần :

Lưu ý : Khi cài đặt Ngăn xếp elastic , bạn phải sử dụng cùng một version trên toàn bộ ngăn xếp. Trong hướng dẫn này, bạn sẽ sử dụng các version mới nhất của toàn bộ ngăn xếp, tại thời điểm viết bài này, Elasticsearch 6.7.0, Kibana 6.7.0, Logstash 6.7.0 và Metricbeat 6.7.0.

Bước 1 - Cấu hình Elasticsearch để lắng nghe lưu lượng truy cập trên IP bên ngoài

Hướng dẫn Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên CentOS 7 chỉ hạn chế quyền truy cập Elasticsearch vào server localhost . Trong thực tế, điều này hiếm khi xảy ra, vì bạn thường cần theo dõi nhiều server . Trong bước này, bạn sẽ cấu hình các thành phần Elastic Stack để tương tác với địa chỉ IP bên ngoài.

Đăng nhập vào server Elastic Stack của bạn với quyền là user không phải root của bạn:

  • ssh sammy@Elastic_Stack_server_ip

Sử dụng editor bạn muốn để chỉnh sửa file cấu hình chính của Elasticsearch , elasticsearch.yml . Hướng dẫn này sẽ sử dụng vi :

  • sudo vi /etc/elasticsearch/elasticsearch.yml

Tìm phần sau và sửa đổi nó để Elasticsearch lắng nghe trên tất cả các giao diện. Vào chế độ insert bằng cách nhấn i , sau đó thêm mục được đánh dấu sau:

/etc/elasticsearch/elasticsearch.yml
... network.host: 0.0.0.0 ... 

Địa chỉ 0.0.0.0 được gán các ý nghĩa cụ thể trong một số ngữ cảnh. Trong trường hợp này, 0.0.0.0 nghĩa là “bất kỳ địa chỉ IPv4 nào”.

Khi bạn hoàn tất, nhấn ESC để thoát khỏi chế độ insert , sau đó :wqENTER để lưu và thoát khỏi file . Để tìm hiểu thêm về editor vi và version kế nhiệm của nó là Vim, hãy xem hướng dẫn Cài đặt và Sử dụng Trình soạn thảo Văn bản Vim trên Server cloud . Sau khi bạn đã lưu và thoát file , hãy khởi động lại dịch vụ Elasticsearch với systemctl để áp dụng cài đặt mới:

  • sudo systemctl restart elasticsearch

Bây giờ, cho phép truy cập vào cổng Elasticsearch từ server CentOS thứ hai của bạn. Để cấu hình quyền truy cập đến từ các địa chỉ IP hoặc mạng con cụ thể, hãy sử dụng chức năng luật phong phú của firewalld :

  • sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="second_centos_server_ip/32" port protocol="tcp" port="9200" accept'

Các luật phong phú cho phép bạn tạo các luật firewalld phức tạp hơn và có thể tùy chỉnh để có được quyền kiểm soát tốt hơn đối với firewall của bạn. Trong lệnh này, bạn đang thêm luật chấp nhận lưu lượng ipv4 từ source mà bạn đã đặt làm địa chỉ IP của server CentOS thứ hai, vào port 9200 của server Elastic Stack của bạn.

Tiếp theo, reload firewalld để kích hoạt luật mới:

  • sudo firewall-cmd --reload

Lặp lại các lệnh này cho từng server của bạn nếu bạn có nhiều hơn hai. Nếu các server của bạn thuộc cùng một mạng , bạn có thể cho phép truy cập bằng một luật cho tất cả các server trên mạng. Để thực hiện việc này, bạn cần thay thế /32 sau địa chỉ IP bằng một giá trị thấp hơn, ví dụ /24 .

Tiếp theo, kiểm tra kết nối. Đăng nhập vào server CentOS thứ hai của bạn với quyền là user không phải root của bạn:

  • ssh sammy@second_centos_server_ip

Sử dụng lệnh curl để kiểm tra kết nối với server Elastic Stack:

  • curl Elastic_Stack_server_ip:9200

Bạn sẽ nhận được kết quả tương tự như sau:

Output
{ "name" : "tl5Is5f", "cluster_name" : "elasticsearch", "cluster_uuid" : "W9AcSNWHQ3mYs2uE8odklA", "version" : { "number" : "6.7.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "3bd3e59", "build_date" : "2019-03-06T15:16:26.864148Z", "build_snapshot" : false, "lucene_version" : "7.6.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }

Đến đây bạn biết kết nối hoạt động, bạn đã sẵn sàng gửi số liệu đến server Elastic Stack của bạn .

Bước 2 - Cài đặt và cấu hình Metricbeat trên server Elastic Stack Server

Trong hai bước tiếp theo, trước tiên bạn sẽ cài đặt Metricbeat trên server Elastic Stack và nhập tất cả dữ liệu cần thiết, sau đó cài đặt và cấu hình client trên server CentOS thứ hai.

Đăng nhập vào server Elastic Stack với quyền là user không phải root của bạn:

  • ssh sammy@Elastic_Stack_server_ip

Vì trước đó bạn đã cài đặt repository Elasticsearch trong yêu cầu , bạn chỉ cần cài đặt Metricbeat:

  • sudo yum install metricbeat

Sau khi cài đặt xong, hãy tải mẫu index vào Elasticsearch. Chỉ mục Elasticsearch là một tập hợp các tài liệu có các đặc điểm tương tự. Các tên cụ thể xác định từng index , Elasticsearch sẽ sử dụng để tham chiếu đến các index khi thực hiện các hoạt động khác nhau. Server Elasticsearch của bạn sẽ tự động áp dụng mẫu index khi bạn tạo index mới.

Để tải mẫu, hãy sử dụng lệnh sau:

  • sudo metricbeat setup --template -E 'output.elasticsearch.hosts=["localhost:9200"]'

Bạn sẽ thấy kết quả sau:

Output
Loaded index template

Metricbeat đi kèm với các console Kibana mẫu, hình ảnh hóa và tìm kiếm để hiển thị dữ liệu Metricbeat trong Kibana. Trước khi có thể sử dụng trang tổng quan, bạn cần tạo mẫu index và tải trang tổng quan vào Kibana.

Để tải các mẫu, hãy sử dụng lệnh sau:

  • sudo metricbeat setup -e -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Bạn sẽ thấy kết quả giống như sau:

Output
... 2019-03-20T09:51:32.096Z INFO instance/beat.go:281 Setup Beat: metricbeat; Version: 6.7.0 2019-03-20T09:51:32.136Z INFO add_cloud_metadata/add_cloud_metadata.go:323 add_cloud_metadata: hosting provider type detected as digitalocean, metadata={"instance_id":"133130541","provider":"digitalocean","region":"fra1"} 2019-03-20T09:51:32.137Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200 2019-03-20T09:51:32.137Z INFO [publisher] pipeline/module.go:110 Beat name: elastic 2019-03-20T09:51:32.138Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200 2019-03-20T09:51:32.140Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.7.0 2019-03-20T09:51:32.148Z INFO template/load.go:130 Template already exists and will not be overwritten. 2019-03-20T09:51:32.148Z INFO instance/beat.go:894 Template successfully loaded. Loaded index template Loading dashboards (Kibana must be running and reachable) 2019-03-20T09:51:32.149Z INFO elasticsearch/client.go:165 Elasticsearch url: http://localhost:9200 2019-03-20T09:51:32.150Z INFO elasticsearch/client.go:721 Connected to Elasticsearch version 6.7.0 2019-03-20T09:51:32.151Z INFO kibana/client.go:118 Kibana url: http://localhost:5601 2019-03-20T09:51:56.209Z INFO instance/beat.go:741 Kibana dashboards successfully loaded. Loaded dashboards

Đến đây bạn có thể bắt đầu Metricbeat:

  • sudo systemctl start metricbeat

Để làm cho Metricbeat tự động bắt đầu khi server khởi động từ bây giờ, hãy sử dụng lệnh enable :

  • sudo systemctl enable metricbeat

Metricbeat sẽ bắt đầu chuyển số liệu thống kê hệ thống của bạn vào Elasticsearch.

Để xác minh Elasticsearch thực sự đang nhận dữ liệu này, hãy truy vấn index Metricbeat bằng lệnh sau:

  • curl -XGET 'http://localhost:9200/metricbeat-*/_search?pretty'

Bạn sẽ thấy một kết quả giống như sau:

Output
... { "took" : 3, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 108, "max_score" : 1.0, "hits" : [ { "_index" : "metricbeat-6.7.0-2019.03.20", "_type" : "doc", "_id" : "A4mU8GgBKrpxEYMLjJZt", "_score" : 1.0, "_source" : { "@timestamp" : "2019-03-20T09:54:52.481Z", "metricset" : { "name" : "network", "module" : "system", "rtt" : 125 }, "event" : { "dataset" : "system.network", "duration" : 125260 }, "system" : { "network" : { "in" : { "packets" : 59728, "errors" : 0, "dropped" : 0, "bytes" : 736491211 }, "out" : { "dropped" : 0, "packets" : 31630, "bytes" : 8283069, "errors" : 0 }, "name" : "eth0" } }, "beat" : { "version" : "6.7.0", "name" : "elastic", "hostname" : "elastic" }, ...

Dòng "total" : 108 , cho biết rằng Metricbeat đã tìm thấy 108 kết quả tìm kiếm cho số liệu cụ thể này. Bất kỳ số lượng kết quả tìm kiếm nào cũng cho biết Metricbeat đang hoạt động; nếu kết quả của bạn hiển thị tổng số lần truy cập là 0, bạn cần xem lại cài đặt của bạn để tìm lỗi. Nếu bạn nhận được kết quả mong đợi, hãy tiếp tục bước tiếp theo, trong đó bạn sẽ cài đặt Metricbeat trên server CentOS thứ hai.

Bước 3 - Cài đặt và cấu hình Metricbeat trên Server CentOS thứ hai

Thực hiện bước này trên tất cả các server CentOS mà bạn muốn gửi số liệu đến server Elastic Stack của bạn . Nếu bạn cũng có server Ubuntu, bạn có thể cài đặt Metricbeat theo Bước 3 của Cách thu thập số liệu cơ sở hạ tầng với Metricbeat trên Ubuntu 18.04 .

Đăng nhập vào server CentOS thứ hai của bạn với quyền là user không phải root của bạn:

  • ssh sammy@second_centos_server_ip

Các thành phần của Elastic Stack không có sẵn thông qua trình quản lý gói yum theo mặc định, nhưng bạn có thể cài đặt chúng bằng cách thêm repository của Elastic.

Tất cả các gói của Elastic Stack đều được ký bằng khóa ký Elasticsearch để bảo vệ hệ thống của bạn khỏi giả mạo gói. Trình quản lý gói của bạn sẽ tin tưởng các gói đã được kiểm nghiệm bằng khóa. Trong bước này, bạn sẽ nhập khóa GPG công khai Elasticsearch và thêm danh sách nguồn gói Elastic để cài đặt Metricbeat.

Để bắt đầu, hãy chạy lệnh sau để download và cài đặt khóa ký công khai Elasticsearch:

  • sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Tiếp theo, thêm repository Đàn hồi. Sử dụng editor bạn muốn để tạo file co elasticsearch.repo trong folder /etc/yum.repos.d/ :

  • sudo vi /etc/yum.repos.d/elasticsearch.repo

Để cung cấp cho yum thông tin cần thiết để download và cài đặt các thành phần của Ngăn xếp elastic , hãy vào chế độ insert bằng cách nhấn i và thêm các dòng sau vào file :

/etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md 

Khi bạn hoàn tất, hãy lưu file .

Tiếp theo, cài đặt Metricbeat bằng lệnh này:

  • sudo yum install metricbeat

Sau khi cài đặt xong Metricbeat, hãy cấu hình nó để kết nối với Elasticsearch. Mở file cấu hình của nó, metricbeat.yml :

  • sudo vi /etc/metricbeat/metricbeat.yml

Lưu ý: Tệp cấu hình của Metricbeat có định dạng YAML, nghĩa là thụt lề rất quan trọng! Đảm bảo rằng bạn không thêm bất kỳ khoảng trống thừa nào khi chỉnh sửa file này.

Metricbeat hỗ trợ nhiều kết quả kết quả , nhưng bạn thường chỉ gửi các sự kiện trực tiếp đến Elasticsearch hoặc tới Logstash để xử lý bổ sung. Tìm phần sau và cập nhật địa chỉ IP:

/etc/metricbeat/metricbeat.yml
#-------------------------- Elasticsearch output ------------------------------ output.elasticsearch:   # Array of hosts to connect to.   hosts: ["Elastic_Stack_server_ip:9200"]  ... 

Lưu và đóng file .

Bạn có thể mở rộng chức năng của Metricbeat bằng các module . Trong hướng dẫn này, bạn sẽ sử dụng module system , cho phép bạn theo dõi số liệu thống kê của server như mức sử dụng CPU / bộ nhớ / đĩa và sử dụng mạng.

Trong trường hợp này, module system được bật theo mặc định. Bạn có thể xem danh sách các module được bật và tắt bằng lệnh:

  • sudo metricbeat modules list

Bạn sẽ thấy một danh sách tương tự như sau:

Output
Enabled: system Disabled: aerospike apache ceph couchbase docker dropwizard elasticsearch envoyproxy etcd golang graphite haproxy http jolokia kafka kibana kubernetes kvm logstash memcached mongodb munin mysql nginx php_fpm postgresql prometheus rabbitmq redis traefik uwsgi vsphere windows zookeeper

Bạn có thể xem các thông số của module trong file cấu hình /etc/metricbeat/modules.d/system.yml . Trong trường hợp của hướng dẫn này, bạn không cần phải thay đổi bất kỳ điều gì trong cấu hình. Các bộ số liệu mặc định là cpu , load , memory , network , processprocess_summary . Mỗi module có một hoặc nhiều bộ số liệu. Tập đo lường là một phần của module tìm nạp và cấu trúc dữ liệu. Thay vì thu thập từng chỉ số dưới dạng một sự kiện riêng biệt, tập số liệu truy xuất danh sách nhiều số liệu có liên quan trong một yêu cầu duy nhất tới hệ thống từ xa.

Đến đây bạn có thể bắt đầu và bật Metricbeat:

  • sudo systemctl start metricbeat
  • sudo systemctl enable metricbeat

Lặp lại bước này trên tất cả các server mà bạn muốn thu thập số liệu. Sau đó, bạn có thể tiến hành bước tiếp theo, trong đó bạn sẽ thấy cách chuyển qua một số trang tổng quan của Kibana.

Bước 4 - Khám phá Trang tổng quan Kibana

Trong bước này, bạn sẽ xem Kibana, giao diện web mà bạn đã cài đặt trong phần Yêu cầu .

Trong trình duyệt web, hãy truy cập FQDN hoặc địa chỉ IP công cộng của server Elastic Stack của bạn. Sau khi nhập thông tin đăng nhập mà bạn đã xác định trong Bước 2 của hướng dẫn Elastic Stack , bạn sẽ thấy trang chủ Kibana:

Trang chủ Kibana

Nhấp vào liên kết Khám phá trong thanh chuyển bên trái. Trên trang Khám phá , hãy chọn mẫu index ngẫu nhiên- * được định nghĩa để xem dữ liệu Mét. Theo mặc định, điều này sẽ hiển thị cho bạn tất cả dữ liệu log trong 15 phút qua. Bạn sẽ tìm thấy biểu đồ và một số chi tiết số liệu:

Trang khám phá

Tại đây, bạn có thể tìm kiếm và duyệt qua các chỉ số của bạn và cũng có thể tùy chỉnh trang tổng quan của bạn . Tuy nhiên, tại thời điểm này, sẽ không có nhiều thứ trong đó vì bạn chỉ thu thập số liệu thống kê hệ thống từ server của bạn .

Sử dụng console bên trái để chuyển đến trang Control panel và tìm kiếm console Hệ thống đo lường . Khi đó, bạn có thể tìm kiếm các trang tổng quan mẫu đi kèm với module system của Metricbeat.

Ví dụ: bạn có thể xem thông tin ngắn gọn về tất cả các server của bạn :

Trang tổng quan Syslog

Bạn cũng có thể nhấp vào tên server và xem thêm thông tin chi tiết:

Trang tổng quan Sudo

Kibana có nhiều tính năng khác, chẳng hạn như đồ thị và lọc, vì vậy hãy thoải mái khám phá.

Kết luận

Trong hướng dẫn này, bạn đã cài đặt Metricbeat và cấu hình Elastic Stack để thu thập và phân tích các chỉ số hệ thống. Metricbeat đi kèm với các mô-đun nội bộ thu thập số liệu từ các dịch vụ như Apache, Nginx, Docker, MySQL, PostgreSQL, v.v. Như vậy, bạn có thể thu thập và phân tích các chỉ số của các ứng dụng của bạn bằng cách chỉ cần bật các module bạn cần.

Nếu bạn muốn hiểu thêm về giám sát server , hãy xem Giới thiệu về Chỉ số, Giám sát và Cảnh báoĐưa Giám sát và Cảnh báo vào Thực tiễn .


Tags:

Các tin liên quan

Các bước được đề xuất bổ sung cho server CentOS 7 mới
2019-02-20
Cách cài đặt Elasticsearch, Logstash và Kibana (Elastic Stack) trên CentOS 7
2018-12-10
Cách lấy chứng chỉ SSL Wildcard của Let's Encrypt bằng cách sử dụng CloudFlare Validation trên CentOS 7
2018-08-16
Cách cài đặt và cấu hình LEMP bằng Bộ sưu tập phần mềm trên CentOS 7
2018-04-20
Cách thiết lập khóa SSH trên CentOS 7
2018-04-12
Cách cài đặt và bảo mật Memcached trên CentOS 7
2018-03-06
Cách cài đặt Java trên CentOS và Fedora
2018-02-16
Cách theo dõi cảnh báo Nagios với Alerta trên CentOS 7
2017-09-13
Cách cài đặt MongoDB trên CentOS 7
2017-09-11
Cách cài đặt Nagios 4 và theo dõi server của bạn trên CentOS 7
2017-09-11