NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
22/05/2023
Lượt xem

Hướng dẫn thu thập các số liệu cơ sở hạ tầng với PacketBeat và ELK trên Centos 7

22/05/2023
20 phút đọc
Lượt xem

Đánh giá

5/5 - (118 bình chọn)

Trong bài viết hướng dẫn về thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên CentOS 7 này, Vietnix sẽ hướng dẫn bạn cách cấu hình và sử dụng Packetbeat với ELK stack để thu thập và trực quan hóa các số liệu cơ sở hạ tầng.

Giới thiệu PacketBeat và ELK

Packetbeat cho phép bạn theo dõi lưu lượng mạng thời gian thực cho các giao thức cấp ứng dụng như HTTPMySQL cũng như DNS và các dịch vụ khác.

Để làm được điều này, bạn cấu hình các agent (được gọi là “shippers”) trên máy khách để nghe và phân tích lưu lượng mạng, ánh xạ các thông điệp thành các giao dịch. Sau đó, những shipper này tạo ra các bản ghi cho mỗi hành động và gửi đến Elasticsearch hoặc Logstash.

Khi có dữ liệu, bạn có thể dùng công cụ Kibana để tìm kiếm, phân tích và có cái nhìn tổng quan về dữ liệu. Từ đó, bạn có thể giám sát hệ thống một cách toàn diện, tìm ra các vấn đề nhanh chóng và giải quyết chúng dễ dàng.

Công cụ Kibana
Công cụ Kibana

Yêu cầu để thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên CentOS 7

  • Một máy chủ CentOS 7 có RAM 4GB được cấu hình với bộ cài đặt ELK Stack (Elasticsearch-Logstash-Kibana). 
  • Một máy chủ CentOS 7 với dung lượng RAM bất kỳ. Máy chủ này sẽ đóng vai trò như một client.
  • Một tài khoản người dùng có quyền sudo ở mỗi máy chủ. 

Bước 1: Tải template Packetbeat Index vào Elasticsearch

Trong bài viết sử dụng Packetbeat để gửi log đến Elasticsearch. Do đó, bạn cần tải template Packetbeat index. Template này cấu hình Elasticsearch phân tích các trường Packetbeat gửi đến.

Đầu tiên, bạn đăng nhập vào server ELK :

ssh vietnix@your_elk_server_ip

Sau khi đăng nhập, tải template Packetbeat index về thư mục home của bạn:

cd ~ curl -O https://raw.githubusercontent.com/elastic/beats/master/packetbeat/packetbeat.template-es2x.json

Sau đó, bạn nhập lệnh sau đây để tải template:

curl -XPUT 'http://localhost:9200/_template/packetbeat' -d@packetbeat.template-es2x.json

Bạn sẽ thấy output này nếu template được tải thành công.

Output  {"acknowledged":true}

Khi server ELK của bạn đã sẵn sàng để nhận dữ liệu từ Packetbeat, hãy cài đặt shipper trên client server.

Bước 2: Cài đặt Packetbeat trên client server

Để cài đặt shipper Packetbeat, bạn cần phải lấy chứng chỉ SSL để thiết lập kết nối giữa client server và server ELK.

Hãy tìm địa chỉ IP client server của bạn. Sau đó, trên server ELK, sao chép chứng chỉ SSL sang client server của bạn bằng lệnh scp:

scp /etc/pki/tls/certs/logstash-forwarder.crt vietnix@your_client_server_private_ip_address:/tmp

Tiếp theo, bạn đăng nhập vào client server của mình:

ssh vietnix@your_client_server_ip_address

Sau khi đăng nhập, bạn sao chép chứng chỉ SSL của server ELK vào thư mục /etc/pki/tls/certs:

sudo mkdir -p /etc/pki/tls/certs sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Tiếp theo, bạn cần cài đặt Packetbeat. Trên client server, chạy lệnh sau để nhập khóa GPG công khai của Elasticsearch vào rpm:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Tạo và chỉnh sửa một file repository mới cho Packetbeat:

sudo vi /etc/yum.repos.d/elastic-beats.repo

Thêm các dòng sau vào file:

[beats] name=Elastic Beats Repository baseurl=https://packages.elastic.co/beats/yum/el/$basearch enabled=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch gpgcheck=1

Sau đó, bạn lưu file và thoát khỏi trình soạn thảo.

Hãy nhập lệnh sau để cài đặt gói Packetbeat:

sudo yum update sudo yum -y install packetbeat

Packetbeat đã được cài đặt nhưng bạn cần cấu hình để sử dụng công cụ này.

Bước 3: Cấu hình Packetbeat trên client

Packetbeat cần biết thông tin để ghi vào log và nơi gửi dữ liệu đến. Hãy cấu hình Packetbeat kết nối với Logstash trên server ELK và xác định loại lưu lượng mạng bạn muốn theo dõi. Bạn cần sửa đổi file cấu hình mặc định của Packetbeat để làm điều này.

Trên client, bạn hãy chỉnh sửa file cấu hình Packetbeat:

sudo vi /etc/packetbeat/packetbeat.yml

Lưu ý: File cấu hình của Packetbeat có định dạng YAML. Vì vậy, thụt đầu dòng rất quan trọng. Hãy sử dụng đúng số lượng khoảng trắng giống như các hướng dẫn trong bài.

Gần đầu của file, bạn sẽ thấy phần input. Đây là nơi bạn có thể chỉ định những số liệu và thống kê nào sẽ được gửi đến server ELK. Trong bài viết sử dụng input mặc định nhưng bạn có thể thay đổi input phù hợp với nhu cầu của mình.

Chọn network interface để bắt gói tin. Trên Linux, Packetbeat hỗ trợ bắt tất cả các tin nhắn được gửi hoặc nhận bởi máy chủ mà Packetbeat được cài đặt. Sử dụng any làm thiết bị:

# Select the network interfaces to sniff the data. You can use the "any" # keyword to sniff on all connected interfaces. interfaces:   device: any

Trong phần protocols, bạn cấu hình ports mà Packetbeat có thể tìm thấy cho mỗi giao thức. Nếu bạn sử dụng ports không theo chuẩn thì hãy thêm chúng ở đây. Nếu không, các port mặc định cũng sẽ hoạt động tốt.

protocols:   dns:     ports: [53]      include_authorities: true     include_additionals: true    http:     ports: [80, 8080, 8081, 5000, 8002]    memcache:     ports: [11211]    mysql:     ports: [3306]    pgsql:     ports: [5432]    redis:     ports: [6379]    thrift:     ports: [9090]    mongodb:     ports: [27017]

Tiếp theo, bạn cần cho Packetbeat biết gửi dữ liệu đến đâu.

Dưới phần output, tìm đến dòng bắt đầu bằng elasticsearch:. Đó là phần output của Elasticsearch. Phần này không được sử dụng nên bạn hãy xóa hoặc chú thích toàn bộ cho đến khi đến dòng #logstash:

Bắt đầu xóa tại đây:

### Elasticsearch as output   elasticsearch:     # Array of hosts to connect to.     # Scheme and port can be left out and will be set to the default (http and 9200)          ...

Tiếp tục xóa cho đến khi bạn tìm thấy dòng này:

### Logstash as output

Thay vì gửi dữ liệu đến Elasticsearch bạn sẽ gửi nó đến Logstash. Vì vậy, hãy tìm phần output của Logstash đã được chú thích được bắt đầu bằng #logstash:. Bỏ chú thích dòng đó bằng cách xóa ký tự # ở đầu dòng. Sau đó, bỏ chú thích dòng hosts: ["localhost:5044"] và thay localhost bằng địa chỉ IP riêng server ELK của bạn. Phần cấu hình sẽ trông như thế này:

### Logstash as output   logstash:     # The Logstash hosts     hosts: ["your_ELK_server_private_ip_address:5044"]

Cấu hình Packetbeat này kết nối đến Logstash trên server ELK của bạn trên cổng 5044.

Tiếp theo, bạn hãy tìm phần tls và xóa bỏ comment trước tls:. Sau đó bỏ comment cho dòng lệnh chỉ định certificate_authorities và thay đổi giá trị của dòng đó thành ["/etc/pki/tls/certs/logstash-forwarder.crt"]:

tls:       # List of root certificates for HTTPS server verifications       certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

Cấu hình này sử dụng chứng chỉ mà bạn đã sao chép từ server ELK. Nếu thiếu chứng chỉ này, client sẽ không thể thiết lập kết nối.

Nếu bạn muốn kiểm tra lại file cấu hình của mình thì có thể so sánh với ví dụ này. Ví dụ này đã loại bỏ hầu hết các chú thích không cần thiết để cải thiện tính đọc hiểu.

############################# Sniffer ######################################### interfaces:   device: any  ############################# Protocols ####################################### protocols:   dns:     ports: [53]      include_authorities: true     include_additionals: true    http:     ports: [80, 8080, 8081, 5000, 8002]    memcache:     ports: [11211]    mysql:     ports: [3306]    pgsql:     ports: [5432]    redis:     ports: [6379]    thrift:     ports: [9090]    mongodb:     ports: [27017]  ############################# Output ########################################## output:    ### Logstash as output    logstash:     hosts: ["your_ELK_server_private_ip_address:5044"]      tls:       certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]  ############################# Logging ######################################### logging:    files:     rotateeverybytes: 10485760 # = 10MB

Sau khi đã kiểm tra cấu hình, lưu file và thoát khỏi trình chỉnh sửa văn bản.

Khởi động Packetbeat để áp dụng những thay đổi của bạn:

sudo systemctl start packetbeat

Cấu hình Packetbeat tự động khởi động khi máy chủ của bạn khởi động lại bằng lệnh sau đây:

sudo systemctl enable packetbeat

Lặp lại bước này cho bất kỳ máy chủ nào mà bạn muốn theo dõi.

Packetbeat sẽ lắng nghe lưu lượng mạng và gửi đến Logstash. Hãy kiểm tra xem công cụ có hoạt động tốt  không ở bước tiếp theo.

Nếu bạn đang tìm kiếm một VPS đáng tin cậy để thực hiện thu thập các số liệu cơ sở hạ tầng với PacketBeat và ELK trên CentOS 7, dịch vụ VPS của Vietnix là một sự lựa chọn hàng đầu.

Với Vietnix, bạn sẽ có một nền tảng VPS mạnh mẽ và linh hoạt, đảm bảo đáp ứng được yêu cầu hiệu suất và tài nguyên của PacketBeat, ELK. Vietnix cung cấp các gói dịch vụ VPS đa dạng và có thể chủ động tùy chỉnh như VPS Giá Rẻ, VPS Cloud Server, VPS Cao Cấp, VPS NVMe với giá từ 89.000 VND/Tháng. Tùy theo nhu cầu của mình mà bạn có thể chọn gói VPS có dung lượng ổ cứng, CPU, RAM phù hợp.

Hệ điều hành CentOS 7 được hỗ trợ đầy đủ trên các gói VPS tại Vietnix, mang lại sự tương thích và ổn định cho việc triển khai PacketBeat và ELK. Các dịch vụ mạng cung cấp bởi Vietnix đảm bảo kết nối mạng ổn địnhkhông giới hạn Data Transfer để thu thập và truyền dữ liệu mạng một cách hiệu quả.

Bên cạnh đó, yếu tố an toàn và bảo mật cũng được Vietnix chú trọng. Các gói VPS được hỗ trợ backup tự động giúp bảo vệ dữ liệu quan trọng của bạn an toàn trong quá trình thu thập và lưu trữ.

Giao diện quản lý dễ sử dụng và tính năng linh hoạt của Vietnix giúp bạn dễ dàng quản lý VPS của mình và mở rộng linh hoạt theo nhu cầu.

Liên hệ ngay với Vietnix để được tư vấn lựa chọn gói dịch vụ VPS phù hợp nhé.

Bước 4: Kiểm tra cài đặt Packetbeat

Packetbeat trên client server sẽ gửi log của lưu lượng mạng đến Logstash trên server ELK của bạn. Logstash sẽ tải dữ liệu Packetbeat vào Elasticsearch trong một date-stamped index có tên là packetbeat-YYYY.MM.DD. Bạn hãy tạo một yêu cầu HTTP đơn giản trên client và tìm kiếm yêu cầu đó trong Elasticsearch trên máy chủ ELK để kiểm tra hoạt động này.

Trên client server của bạn, sử dụng curl để tạo một yêu cầu đến http://www.elastic.co.

curl http://www.elastic.co/ > /dev/null

Sau đó, trên máy chủ ELK, xác minh rằng Elasticsearch đang nhận dữ liệu bằng cách truy vấn Packetbeat index với lệnh dưới đây:

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

Bạn sẽ thấy một loạt output giống như thế này:

Output{   "hits" : {     "total" : 3,     "max_score" : 1.0,     "hits" : [ {       "_index" : "packetbeat-2016.11.13",       "_type" : "dns",       "_id" : "AVheUqX0CSBq6gd6x-Oj",       "_score" : 1.0,       "_source" : {         "direction" : "out",         "server" : "",         "responsetime" : 49,         "resource" : "www.elastic.co",         "dns" : {           "additionals_count" : 0,           "answers" : [ {             "class" : "IN",             "data" : "2406:da00:ff00::6b16:f086",             "name" : "www.elastic.co",             "ttl" : 59,             "type" : "AAAA"           }, {             "class" : "IN",             "data" : "2406:da00:ff00::b849:ab0e",             "name" : "www.elastic.co",             "ttl" : 59,             "type" : "AAAA"           }, {             "class" : "IN",             "data" : "2406:da00:ff00::ccec:d96c",             "name" : "www.elastic.co",             "ttl" : 59,             "type" : "AAAA"           } ],           "answers_count" : 3,           "authorities_count" : 0,           "flags" : {             "authoritative" : false,             "recursion_allowed" : true,             "recursion_desired" : true,             "truncated_response" : false           },           "id" : 26078,           "op_code" : "QUERY",           "question" : {             "class" : "IN",             "name" : "www.elastic.co",             "type" : "AAAA"           },           "response_code" : "NOERROR"         },         "method" : "QUERY",         "count" : 1,         "client_ip" : "your_client_server_ip",         "proc" : "",         "transport" : "udp",         "status" : "OK",         "ip" : "8.8.8.8",         "client_port" : 52505,         "client_server" : "",         "port" : 53,         "@timestamp" : "2016-11-13T15:33:43.500Z",         "type" : "dns",         "query" : "class IN, type AAAA, www.elastic.co",         "client_proc" : "",         "beat" : {           "hostname" : "your_client_server_hostname",           "name" : "your_client_server_hostname"         },         "bytes_in" : 32,         "bytes_out" : 116,         "@version" : "1",         "host" : "your_client_server_hostname",         "tags" : [ "beats_input_raw_event" ]       }     ...     ...     } ]   } }

Nếu kết quả trả về là 0 total hits thì Elasticsearch đang không tải bất kỳ dữ liệu Packetbeat nào dưới index bạn đã tìm kiếm. Bạn nên thử lại sau một vài giây vì có thể mất một thời gian ngắn để nhận lại dữ liệu.

Nếu bạn vẫn không thấy kết quả sau khi đợi, hãy xem lại cài đặt của bạn để tìm lỗi. Hãy đảm bảo rằng bạn đã trỏ file cấu hình của Packetbeat vào chứng chỉ mà bạn chuyển sang vì nếu đường dẫn không chính xác sẽ báo lỗi.

Khi bạn nhận được output mong muốn, bạn có thể tiếp tục bước tiếp theo và tìm hiểu cách sử dụng Kibana để xem một số biểu đồ và đồ thị lưu lượng mạng của bạn.

Bước 5: Trực quan hóa dữ liệu với Kibana

Trong trình duyệt web, hãy truy cập vào tên miền hoặc địa chỉ IP công cộng của server ELK. Sau khi nhập thông tin đăng nhập của, bạn sẽ thấy trang Kibana Discover của mình.

Lưu ý: Bạn đã cấu hình thông tin đăng nhập này khi bạn cấu hình người dùng cho Kibana.

Nhấp vào tab Settings ở đầu trang. Chọn packetbeat-* từ menu Index Patterns ở phía bên trái giao diện và đặt làm default index:

Nhấn vào Settings của Kibana
Nhấn vào Settings của Kibana

Sau đó chọn tab Discover ở đầu trang để xem dữ liệu. Bạn sẽ thấy trang hiển thị như sau:

Trang Discover của Kibana
Trang Discover của Kibana

Từ đây, bạn có thể xem các mục Packetbeat khác nhau bằng cách lọc các trường đang có. Bạn có thể nhấp vào các trường này để thêm hoặc trực quan hóa dữ liệu bằng cách sử dụng các phép tổng hợp (count, sum, min, max, median,…).

Ngoài ra, Kibana còn cung cấp một loạt cách để xem dữ liệu dễ dàng mà bạn có thể sử dụng để phân tích dữ liệu. Nhấp vào tab Visualize ở đầu trang để liệt kê các visualization hoặc mở một visualization đã lưu.

Tab liệt kê các Visualization của Kibana
Tab liệt kê các Visualization của Kibana

Tiếp theo, hãy xem dashboard mẫu của Packetbeat mà bạn đã tải lên ở đầu bài viết này. Nhấp vào tab Dashboard ở đầu trang, sau đó nhấp vào biểu tượng Load Saved Dashboard ở phía bên phải màn hình. Bạn sẽ thấy một danh sách các bộ lọc Dashboard dưới dạng đề xuất được phân trang như hình:

Trang Dashboard của Kibana
Trang Dashboard của Kibana

Chọn Packetbeat-Dashboard từ danh sách các gợi ý. Vì bạn chỉ có vài yêu cầu web như document trong index nên dashboard sẽ No results found cho các giao dịch DB, Cache, RPC hoặc các kết quả khác.

Chọn Packetbeat-Dashboard từ danh sách các gợi ý
Chọn Packetbeat-Dashboard từ danh sách các gợi ý

Nhưng nếu bạn cuộn xuống, bạn sẽ thấy một loạt các số liệu thống kê đã được thu thập từ các client server mà bạn đã cài đặt trên Packetbeat.

Số liệu thống kê từ các client server
Số liệu thống kê từ các client server

Từ đây, bạn có thể tạo biểu đồ dữ liệu dựa trên các thông tin trong index. Ví dụ, bạn có thể tạo biểu đồ phân tích các truy vấn HTTP dựa trên thời gian phản hồi. Từ đó có thể phát hiện ra các phản hồi chậm từ các ứng dụng web. Bạn cũng có thể sử dụng các sub-aggregations để phân tích sâu hơn, tìm ra thời gian phản hồi cho từng code, tên miền được truy cập,…

Chính thức thành lập vào năm 2012, trải qua 11 năm hoạt động, Vietnix tự hào đã được sát cánh cùng chục ngàn khách hàng cá nhân và doanh nghiệp phát triển kinh doanh trên không gian Internet.

Với năng lực, kinh nghiệm và sự tận tâm đối với khách hàng, Vietnix đang ngày càng khẳng định vị thế dẫn đầu trong lĩnh vực cung cấp dịch vụ hosting VPS tốc độ cao tại Việt Nam.

Do đó, nếu có nhu cầu thuê VPS để thực hiện các dự án, bạn có thể tham khảo các gói dịch vụ tại Vietnix.

  • Với hơn 100.000 dịch vụ đã được kích hoạt tại Vietnix, chứng tỏ sự tin tưởng của đông đảo khách hàng.
  • 97% khách hàng đánh giá 5 sao và giới thiệu dịch vụ sau khi sử dụng, chứng tỏ dịch vụ của Vietnix được đánh giá cao.
  • Đạt được Giải thưởng Thương hiệu Việt Nam xuất sắc, khẳng định chất lượng và uy tín của dịch vụ.

Liên hệ ngay với Vietnix để trải nghiệm VPS tốc độ cao theo thông tin dưới đây.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn

Lời kết

Thực hiện theo hướng dẫn trong bài viết về cách thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên CentOS 7 này, bạn có thể tập trung các số liệu hệ thống của mình bằng cách sử dụng Elaticsearch và Logstash. Đồng thời dễ dàng hiển thị chúng qua Kibana. Điều này giúp bạn nhanh chóng xem thông tin về hoạt động của máy chủ của mình. Sau đó, có thể xem xét các công cụ khác như Filebeat, Topbeat,… để nghiên cứu các nguồn dữ liệu khác. Nếu còn điều gì chưa rõ, hãy bình luận bên dưới để được hỗ trợ nhé.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG