Mục lục

Không có mục lục
Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách cài đặt Elaticsearch, Logstash và Kibana (Elastic Stack) trên Ubuntu 20.04

Ngày đăng: 16 tháng 3 năm 2023

Ubuntu

Giới thiệu

Elastic Stack — trước đây được gọi là ELK Stack — là một bộ sưu tập phần mềm nguồn mở do Elastic sản xuất, cho phép bạn tìm kiếm, phân tích và trực quan hóa các nhật ký được tạo từ bất kỳ nguồn nào ở bất kỳ định dạng nào, một phương pháp được gọi là bộ log tập trung (centralized logging). Bộ log tập trung có thể hữu ích khi cố gắng xác định các sự cố với máy chủ hoặc ứng dụng của bạn vì nó cho phép bạn tìm kiếm trong tất cả các nhật ký của mình ở một nơi duy nhất. Nó cũng hữu ích vì nó cho phép bạn xác định các sự cố trải rộng trên nhiều máy chủ bằng cách so sánh nhật ký của chúng trong một khung thời gian cụ thể.

Elastic Stack có bốn thành phần chính:

  • Elaticsearch: một công cụ tìm kiếm RESTful phân tán lưu trữ tất cả dữ liệu đã thu thập.
  • Logstash: thành phần xử lý dữ liệu của Elastic Stack gửi dữ liệu đến tới Elaticsearch.
  • Kibana: giao diện web để tìm kiếm và hiển thị nhật ký.
  • Beats: bộ gửi dữ liệu đơn mục đích, nhẹ, có thể gửi dữ liệu từ hàng trăm hoặc hàng nghìn máy đến Logstash hoặc Elaticsearch.

Trong hướng dẫn này, bạn sẽ cài đặt Elastic Stack trên máy chủ Ubuntu 20.04. Bạn sẽ tìm hiểu cách cài đặt tất cả các thành phần của Elastic Stack — bao gồm Filebeat, một Beat được sử dụng để chuyển tiếp và tập trung nhật ký và tệp — đồng thời thiết lập cấu hình chúng để thu thập và trực quan hóa nhật ký hệ thống. Ngoài ra, vì Kibana thường chỉ khả dụng trên localhost, chúng tôi sẽ sử dụng Nginx để ủy quyền cho nó để nó có thể truy cập được qua trình duyệt web. Chúng tôi sẽ cài đặt tất cả các thành phần này trên một máy chủ duy nhất mà chúng tôi sẽ gọi là Elastic Stack server của chúng tôi.

Lưu ý: Khi cài đặt Elastic Stack, bạn phải sử dụng cùng một phiên bản trên toàn bộ ngăn xếp. Trong hướng dẫn này, chúng tôi sẽ cài đặt các phiên bản 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, Elaticsearch 7.7.1, Kibana 7.7.1, Logstash 7.7.1 và Filebeat 7.7.1.

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

Để hoàn thành hướng dẫn này, bạn sẽ cần những điều sau đây:

  • Máy chủ Ubuntu 20.04 có RAM 4GB và 2 CPU được thiết lập với non-root sudo user. Bạn có thể đạt được điều này bằng cách làm theo Thiết lập máy chủ ban đầu với Ubuntu 20.04. Đối với hướng dẫn này, chúng tôi sẽ làm việc với lượng CPU và RAM tối thiểu cần thiết để chạy Elaticsearch. Lưu ý rằng dung lượng CPU, RAM và dung lượng lưu trữ mà máy chủ Elaticsearch của bạn sẽ yêu cầu tùy thuộc vào khối lượng nhật ký mà bạn mong đợi.
  • Đã cài đặt OpenJDK 11. Xem phần [Cài đặt JRE/JDK mặc định] của hướng dẫn Cách cài đặt Java với Apt trên Ubuntu 20.04 để thiết lập điều này.
  • Nginx được cài đặt trên máy chủ của bạn, mà chúng tôi sẽ thiết lập cấu hình sau trong hướng dẫn này làm proxy ngược cho Kibana. Làm theo hướng dẫn của chúng tôi về Cách cài đặt Nginx trên Ubuntu 20.04 để thiết lập tính năng này.

Ngoài ra, vì Elastic Stack được sử dụng để truy cập thông tin có giá trị về máy chủ của bạn mà bạn không muốn người dùng trái phép truy cập, điều quan trọng là bạn phải giữ an toàn cho máy chủ của mình bằng cách cài đặt chứng chỉ TLS/SSL. Đây là tùy chọn nhưng được khuyến khích mạnh mẽ.

Tuy nhiên, vì cuối cùng bạn sẽ thực hiện các thay đổi đối với khối máy chủ Nginx của mình trong suốt hướng dẫn này, nên sẽ có ý nghĩa hơn nếu bạn hoàn thành hướng dẫn Let's Encrypt trên Ubuntu 20.04 ở cuối bước thứ hai của hướng dẫn này. Với ý nghĩ đó, nếu bạn dự định thiết lập cấu hình Let's Encrypt trên máy chủ của mình, bạn sẽ cần chuẩn bị những thứ sau trước khi thực hiện:

  • Một tên miền đủ điều kiện (FQDN). Hướng dẫn này sẽ sử dụng your_domain xuyên suốt. Bạn có thể mua một tên miền trên CloudFly, nhận một tên miền miễn phí trên Freenom hoặc sử dụng công ty đăng ký tên miền mà bạn chọn.
  • Cả hai bản ghi DNS sau được thiết lập cho máy chủ của bạn.
  1. Một bản ghi A với your_domain trỏ đến địa chỉ IP công cộng của máy chủ của bạn.
  2. Một bản ghi A với www.your_domain trỏ đến địa chỉ IP công cộng của máy chủ của bạn.

Bước 1 - Cài đặt và thiết lập cấu hình Elaticsearch

Các thành phần Elaticsearch không có sẵn trong kho gói mặc định của Ubuntu. Tuy nhiên, chúng có thể được cài đặt bằng APT sau khi thêm danh sách nguồn gói của Elastic.

Tất cả các gói được ký bằng khóa ký Elaticsearch để bảo vệ hệ thống của bạn khỏi giả mạo gói. Các gói đã được xác thực bằng khóa sẽ được trình quản lý gói của bạn coi là đáng tin cậy. Trong bước này, bạn sẽ nhập khóa GPG công khai của Elaticsearch và thêm danh sách nguồn gói Elastic để cài đặt Elaticsearch.

Để bắt đầu, hãy sử dụng cURL, công cụ dòng lệnh để truyền dữ liệu bằng URL, để nhập khóa GPG công khai của Elaticsearch vào APT. Lưu ý rằng chúng tôi đang sử dụng các đối số -fsSL để tắt tất cả tiến trình và các lỗi có thể xảy ra (ngoại trừ lỗi máy chủ) và để cho phép cURL thực hiện yêu cầu trên một vị trí mới nếu được chuyển hướng. Đưa đầu ra của lệnh cURL vào chương trình khóa apt, chương trình này sẽ thêm khóa GPG công khai vào APT.

  1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Tiếp theo, thêm danh sách nguồn đàn hồi vào thư mục sources.list.d, nơi APT sẽ tìm kiếm các nguồn mới:

  1. echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Tiếp theo, hãy cập nhật danh sách gói của bạn để APT sẽ đọc nguồn Elastic mới:

  1. sudo apt update

Sau đó cài đặt Elaticsearch bằng lệnh này:

  1. sudo apt install elasticsearch

Elaticsearch hiện đã được cài đặt và sẵn sàng để được thiết lập cấu hình. Sử dụng trình soạn thảo văn bản ưa thích của bạn để chỉnh sửa tệp cấu hình chính của Elaticsearch, elaticsearch.yml. Ở đây, chúng tôi sẽ sử dụng nano:

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

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

Tệp elaticsearch.yml cung cấp các tùy chọn cấu hình cho cluster, node, paths, memory, network, discovery, và gateway của bạn. Hầu hết các tùy chọn này được cấu hình sẵn trong tệp nhưng bạn có thể thay đổi chúng theo nhu cầu của mình. Với mục đích trình diễn cấu hình một máy chủ, chúng tôi sẽ chỉ điều chỉnh cài đặt cho máy chủ lưu trữ mạng.

Elaticsearch lắng nghe lưu lượng truy cập từ mọi nơi trên cổng 9200. Bạn sẽ muốn hạn chế quyền truy cập bên ngoài vào phiên bản Elaticsearch của mình để ngăn người ngoài đọc dữ liệu của bạn hoặc tắt cụm Elaticsearch của bạn thông qua [REST API]. Để hạn chế quyền truy cập và do đó tăng tính bảo mật, hãy tìm dòng chỉ định network.host, bỏ ghi chú và thay thế giá trị của nó bằng localhost như sau:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: localhost
. . .

Chúng tôi đã chỉ định localhostđể Elaticsearch lắng nghe trên tất cả các giao diện và IP bị ràng buộc. Nếu bạn muốn nó chỉ nghe trên một giao diện cụ thể, bạn có thể chỉ định IP của nó thay cho localhost. Lưu và đóng elaticsearch.yml. Nếu bạn đang sử dụng nano, bạn có thể làm như vậy bằng cách nhấn CTRL+X, tiếp theo là Y rồi ENTER.

Đây là những cài đặt tối thiểu bạn có thể bắt đầu để sử dụng Elaticsearch. Bây giờ bạn có thể bắt đầu Elaticsearch lần đầu tiên.

Bắt đầu dịch vụ Elaticsearch với systemctl. Hãy cho Elaticsearch một vài phút để khởi động. Nếu không, bạn có thể gặp lỗi về việc không thể kết nối.

  1. sudo systemctl start elasticsearch

Tiếp theo, hãy chạy lệnh sau để kích hoạt Elaticsearch khởi động mỗi khi máy chủ của bạn khởi động:

  1. sudo systemctl enable elasticsearch

Bạn có thể kiểm tra xem dịch vụ Elaticsearch của mình có đang chạy hay không bằng cách gửi yêu cầu HTTP:

  1. curl -X GET "localhost:9200"

Bạn sẽ thấy phản hồi hiển thị một số thông tin cơ bản về node cục bộ của mình, tương tự như sau:

Output
{ "name" : "Elasticsearch", "cluster_name" : "elasticsearch", "cluster_uuid" : "qqhFHPigQ9e2lk-a7AvLNQ", "version" : { "number" : "7.7.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date" : "2020-03-26T06:34:37.794943Z", "build_snapshot" : false, "lucene_version" : "8.5.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

Bây giờ Elaticsearch đã hoạt động, hãy cài đặt Kibana, thành phần tiếp theo của Elastic Stack.

Bước 2 — Cài đặt và thiết lập cấu hình Bảng điều khiển Kibana

Theo tài liệu chính thức, bạn chỉ nên cài đặt Kibana sau khi cài đặt Elaticsearch. Cài đặt theo thứ tự này đảm bảo rằng các thành phần phụ thuộc vào mỗi sản phẩm được đặt đúng vị trí.

Vì bạn đã thêm nguồn gói Elastic ở bước trước, nên bạn chỉ có thể cài đặt các thành phần còn lại của Elastic Stack bằng cách sử dụng apt:

  1. sudo apt install kibana

Sau đó kích hoạt và bắt đầu dịch vụ Kibana:

  1. sudo systemctl enable kibana
  2. sudo systemctl start kibana

Vì Kibana được thiết lập cấu hình để chỉ nghe trên localhost nên chúng tôi phải thiết lập proxy ngược để cho phép bên ngoài truy cập vào nó. Chúng tôi sẽ sử dụng Nginx cho mục đích này, ứng dụng này đã được cài đặt trên máy chủ của bạn.

Đầu tiên, sử dụng lệnh openssl để tạo người dùng Kibana quản trị mà bạn sẽ sử dụng để truy cập giao diện web Kibana. Ví dụ: chúng tôi sẽ đặt tên cho tài khoản này là kibanaadmin, nhưng để đảm bảo tính bảo mật cao hơn, chúng tôi khuyên bạn nên chọn một tên không chuẩn cho người dùng của mình, tên đó sẽ khó đoán.

Lệnh sau sẽ tạo người dùng và mật khẩu Kibana quản trị, đồng thời lưu trữ chúng trong tệp htpasswd.users. Bạn sẽ thiết lập cấu hình Nginx để yêu cầu tên người dùng và mật khẩu này và đọc tệp này trong giây lát:

  1. echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

Nhập và xác nhận mật khẩu tại dấu nhắc. Hãy nhớ hoặc ghi lại thông tin đăng nhập này, vì bạn sẽ cần nó để truy cập giao diện web Kibana.

Tiếp theo, chúng tôi sẽ tạo một tệp khối máy chủ Nginx. Ví dụ: chúng tôi sẽ gọi tệp này là your_domain, mặc dù bạn có thể thấy hữu ích khi đặt cho tên miền của mình một cái tên mô tả hơn. Ví dụ: nếu bạn đã thiết lập bản ghi FQDN và DNS cho máy chủ này, bạn có thể đặt tên tệp này theo tên FQDN của mình.

Sử dụng nano hoặc trình soạn thảo văn bản ưa thích của bạn, tạo tệp khối máy chủ Nginx:

  1. sudo nano /etc/nginx/sites-available/your_domain

Thêm khối mã sau vào tệp, đảm bảo cập nhật your_domain để khớp với FQDN hoặc địa chỉ IP công cộng của máy chủ. Mã này thiết lập cấu hình Nginx để hướng lưu lượng HTTP của máy chủ của bạn đến ứng dụng Kibana đang lắng nghe trên localhost:5601. Ngoài ra, nó cấu hình Nginx để đọc tệp htpasswd.users và yêu cầu xác thực cơ bản.

Lưu ý rằng nếu bạn đã làm theo hướng dẫn Nginx tiên quyết cho đến cuối, bạn có thể đã tạo tệp này và điền vào tệp một số nội dung. Trong trường hợp đó, hãy xóa tất cả nội dung hiện có trong tệp trước khi thêm nội dung sau:

/etc/nginx/sites-available/your_domain
server {
    listen 80;

    server_name your_domain;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Khi bạn hoàn tất, hãy lưu và đóng tệp.

Tiếp theo, kích hoạt cấu hình mới bằng cách tạo một liên kết tượng trưng đến thư mục sites-enabled. Nếu bạn đã tạo tệp khối máy chủ có cùng tên trong điều kiện tiên quyết Nginx, thì bạn không cần chạy lệnh này:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/your_domain

Sau đó kiểm tra cấu hình để tìm lỗi cú pháp:

  1. sudo nginx -t

Nếu có bất kỳ lỗi nào được báo cáo trong đầu ra của bạn, hãy quay lại và kiểm tra kỹ xem nội dung bạn đặt trong tệp cấu hình đã được thêm chính xác chưa. Khi bạn thấy syntax is ok ở đầu ra, hãy tiếp tục và khởi động lại dịch vụ Nginx:

  1. sudo systemctl reload nginx

Nếu bạn làm theo hướng dẫn thiết lập máy chủ ban đầu, bạn nên bật tường lửa UFW. Để cho phép kết nối với Nginx, chúng ta có thể điều chỉnh các quy tắc bằng cách gõ:

  1. sudo ufw allow 'Nginx Full'

Lưu ý: Nếu bạn đã làm theo hướng dẫn Nginx tiên quyết, bạn có thể đã tạo quy tắc UFW cho phép cấu hình Nginx HTTP thông qua tường lửa. Vì cấu hình Nginx Full cho phép cả lưu lượng HTTP và HTTPS đi qua tường lửa nên bạn có thể xóa quy tắc mà bạn đã tạo trong hướng dẫn điều kiện tiên quyết một cách an toàn. Làm như vậy với lệnh sau:

  1. sudo ufw delete allow 'Nginx HTTP'

Kibana hiện có thể truy cập được thông qua FQDN của bạn hoặc địa chỉ IP công cộng của máy chủ Elastic Stack của bạn. Bạn có thể kiểm tra trang trạng thái của máy chủ Kibana bằng cách điều hướng đến địa chỉ sau và nhập thông tin đăng nhập của bạn khi được nhắc:

http://your_domain/status

Trang trạng thái này hiển thị thông tin về việc sử dụng tài nguyên của máy chủ và liệt kê các plugin đã cài đặt.

description image

Lưu ý: Như đã đề cập trong phần Điều kiện tiên quyết, bạn nên bật SSL/TLS trên máy chủ của mình. Bạn có thể làm theo hướng dẫn Let's Encrypt ngay bây giờ để nhận chứng chỉ SSL miễn phí cho Nginx trên Ubuntu 20.04. Sau khi nhận được chứng chỉ SSL/TLS, bạn có thể quay lại và hoàn thành hướng dẫn này.

Bây giờ bảng điều khiển Kibana đã được thiết lập cấu hình, hãy cài đặt thành phần tiếp theo: Logstash.

Bước 3 — Cài đặt và cấu hình Logstash

Mặc dù Beats có thể gửi dữ liệu trực tiếp đến cơ sở dữ liệu Elaticsearch, nhưng người ta thường sử dụng Logstash để xử lý dữ liệu. Điều này sẽ cho phép bạn linh hoạt hơn trong việc thu thập dữ liệu từ các nguồn khác nhau, chuyển đổi dữ liệu thành định dạng chung và xuất sang cơ sở dữ liệu khác.

Cài đặt Logstash bằng lệnh này:

  1. sudo apt install logstash

Sau khi cài đặt Logstash, bạn có thể chuyển sang cấu hình nó. Các tệp cấu hình của Logstash nằm trong thư mục /etc/logstash/conf.d. Để biết thêm thông tin về cú pháp cấu hình, bạn có thể xem tham chiếu cấu hình mà Elastic cung cấp. Khi bạn thiết lập cấu hình tệp, sẽ rất hữu ích khi coi Logstash như một đường dẫn lấy dữ liệu ở một đầu, xử lý dữ liệu theo cách này hay cách khác và gửi dữ liệu đó đến đích (trong trường hợp này, đích là Elaticsearch). Đường dẫn Logstash có hai phần tử bắt buộc là inputoutput, và một phần tử tùy chọn là filter. Các input plugin tiêu thụ dữ liệu từ một nguồn, các filter plugin xử lý dữ liệu và các output plugin ghi dữ liệu vào đích.

description image

Tạo tệp cấu hình có tên 02-beats-input.conf nơi bạn sẽ thiết lập đầu vào Filebeat của mình:

  1. sudo nano /etc/logstash/conf.d/02-beats-input.conf

Chèn cấu hình input dưới đây. Điều này chỉ định beats input sẽ nghe trên cổng TCP 5044.

/etc/logstash/conf.d/02-beats-input.conf
input {
  beats {
    port => 5044
  }
}

Lưu và đóng tập tin.

Tiếp theo, tạo một tệp cấu hình có tên 30-elasticsearch-output.conf:

  1. sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

Chèn cấu hình output sau. Về cơ bản, output này thiết lập cấu hình Logstash để lưu trữ dữ liệu Beats trong Elaticsearch, đang chạy ở localhost:9200, trong một chỉ mục được đặt tên theo Beat được sử dụng. Beat được sử dụng trong hướng dẫn này là Filebeat:

/etc/logstash/conf.d/30-elasticsearch-output.conf
output {
  if [@metadata][pipeline] {
	elasticsearch {
  	hosts => ["localhost:9200"]
  	manage_template => false
  	index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  	pipeline => "%{[@metadata][pipeline]}"
	}
  } else {
	elasticsearch {
  	hosts => ["localhost:9200"]
  	manage_template => false
  	index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
	}
  }
}

Lưu và đóng tập tin.

Kiểm tra cấu hình Logstash của bạn bằng lệnh này:

  1. sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t

Nếu không có lỗi cú pháp, đầu ra của bạn sẽ hiển thị Config Validation Result: OK. Exiting Logstash sau vài giây. Nếu bạn không thấy điều này trong đầu ra của mình, hãy kiểm tra xem có bất kỳ lỗi nào được ghi trong đầu ra của bạn không và cập nhật cấu hình của bạn để sửa chúng. Lưu ý rằng bạn sẽ nhận được các cảnh báo từ OpenJDK, nhưng chúng sẽ không gây ra bất kỳ sự cố nào và có thể bỏ qua.

Nếu quá trình kiểm tra cấu hình của bạn thành công, hãy bắt đầu và bật Logstash để các thay đổi cấu hình có hiệu lực:

  1. sudo systemctl start logstash
  2. sudo systemctl enable logstash

Bây giờ Logstash đang chạy chính xác và được thiết lập cấu hình đầy đủ, hãy cài đặt Filebeat.

Bước 4 - Cài đặt và thiết lập cấu hình Filebeat

Elastic Stack sử dụng một số trình gửi dữ liệu nhẹ được gọi là Beats để thu thập dữ liệu từ nhiều nguồn khác nhau và vận chuyển chúng đến Logstash hoặc Elaticsearch. Dưới đây là các Beat hiện có sẵn từ Elastic:

  • Filebeat: thu thập và vận chuyển các tệp nhật ký.
  • Metricbeat: thu thập số liệu từ các hệ thống và dịch vụ của bạn.
  • Packetbeat: thu thập và phân tích dữ liệu mạng.
  • Winlogbeat: thu thập nhật ký sự kiện Windows.
  • Auditbeat: thu thập dữ liệu khung kiểm toán Linux và theo dõi tính toàn vẹn của tệp.
  • Heartbeat: theo dõi các dịch vụ về tính khả dụng của chúng bằng tính năng thăm dò tích cực.

Trong hướng dẫn này, chúng tôi sẽ sử dụng Filebeat để chuyển tiếp các bản ghi cục bộ tới Elastic Stack của chúng tôi.

Cài đặt Filebeat bằng apt:

  1. sudo apt install filebeat

Tiếp theo, thiết lập cấu hình Filebeat để kết nối với Logstash. Ở đây, chúng tôi sẽ sửa đổi tệp cấu hình ví dụ đi kèm với Filebeat.

Mở tệp cấu hình Filebeat:

  1. sudo nano /etc/filebeat/filebeat.yml

Lưu ý: Cũng như Elaticsearch, tệp cấu hình của Filebeat ở định dạng YAML. Điều này có nghĩa là việc thụt đầu dòng thích hợp là rất quan trọng, vì vậy hãy đảm bảo sử dụng cùng số lượng khoảng trắng được chỉ định trong các hướng dẫn này.

Filebeat hỗ trợ nhiều đầu ra, nhưng bạn thường chỉ gửi các sự kiện trực tiếp đến Elaticsearch hoặc Logstash để xử lý bổ sung. Trong hướng dẫn này, chúng tôi sẽ sử dụng Logstash để thực hiện xử lý bổ sung đối với dữ liệu do Filebeat thu thập. Filebeat sẽ không cần gửi trực tiếp bất kỳ dữ liệu nào đến Elaticsearch, vì vậy hãy vô hiệu hóa đầu ra đó. Để làm như vậy, hãy tìm phần output.elasticsearch và nhận xét các dòng sau bằng cách đặt trước chúng bằng dấu #:

/etc/filebeat/filebeat.yml
...
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]
...

Sau đó, cấu hình phần output.logstash. Bỏ ghi chú các dòng output.logstash:hosts: ["localhost:5044"] bằng cách xóa dấu #. Thao tác này sẽ thiết lập cấu hình Filebeat để kết nối với Logstash trên máy chủ Elastic Stack của bạn tại cổng 5044, cổng mà chúng tôi đã chỉ định đầu vào Logstash trước đó:

/etc/filebeat/filebeat.yml
output.logstash:
  # The Logstash hosts
  hosts: ["localhost:5044"]

Lưu và đóng tập tin.

Chức năng của Filebeat có thể được mở rộng với các mô-đun Filebeat. Trong hướng dẫn này, chúng ta sẽ sử dụng mô-đun hệ thống, thu thập và phân tích cú pháp nhật ký được tạo bởi dịch vụ ghi nhật ký hệ thống của các bản phân phối Linux phổ biến.

Hãy kích hoạt nó:

  1. sudo filebeat modules enable system

Bạn có thể xem danh sách các mô-đun đã bật và tắt bằng cách chạy:

  1. sudo filebeat modules list

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

Output
Enabled: system Disabled: apache2 auditd elasticsearch icinga iis kafka kibana logstash mongodb mysql nginx osquery postgresql redis traefik ...

Theo mặc định, Filebeat được thiết lập cấu hình để sử dụng các đường dẫn mặc định cho nhật ký hệ thống và nhật ký ủy quyền. Trong trường hợp của hướng dẫn này, bạn không cần thay đổi bất cứ điều gì trong cấu hình. Bạn có thể xem thông số của module trong file cấu hình /etc/filebeat/modules.d/system.yml.

Tiếp theo, chúng ta cần thiết lập các quy trình nhập dữ liệu Filebeat, phân tích dữ liệu nhật ký trước khi gửi nó qua logstash tới Elaticsearch. Để tải đường ống dẫn nhập cho mô-đun hệ thống, hãy nhập lệnh sau:

  1. sudo filebeat setup --pipelines --modules system

Tiếp theo, tải mẫu chỉ mục vào Elaticsearch. Elasticsearch index là một tập hợp các tài liệu có các đặc điểm tương tự. Các chỉ mục được xác định bằng một tên, được sử dụng để chỉ chỉ mục khi thực hiện các hoạt động khác nhau bên trong nó. Mẫu chỉ mục sẽ được tự động áp dụng khi một chỉ mục mới được tạo.

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

  1. sudo filebeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
Output
Index setup finished.

Filebeat đi kèm với bảng điều khiển Kibana mẫu cho phép bạn trực quan hóa dữ liệu Filebeat trong Kibana. Trước khi có thể sử dụng bảng thông tin, bạn cần tạo mẫu chỉ mục và tải bảng thông tin vào Kibana.

Khi bảng điều khiển tải, Filebeat kết nối với Elaticsearch để kiểm tra thông tin phiên bản. Để tải trang tổng quan khi bật Logstash, bạn cần tắt đầu ra Logstash và bật đầu ra Elaticsearch:

  1. sudo filebeat setup -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601

Bạn sẽ nhận được đầu ra tương tự như sau:

Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite:true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ml.html Loaded machine learning job configurations Loaded Ingest pipelines

Bây giờ bạn có thể bắt đầu và kích hoạt Filebeat:

  1. sudo systemctl start filebeat
  2. sudo systemctl enable filebeat

Nếu bạn đã thiết lập chính xác Elastic Stack của mình, Filebeat sẽ bắt đầu gửi nhật ký hệ thống và nhật ký ủy quyền của bạn tới Logstash, sau đó sẽ tải dữ liệu đó vào Elaticsearch.

Để xác minh rằng Elaticsearch thực sự đang nhận dữ liệu này, hãy truy vấn chỉ mục Filebeat bằng lệnh này:

  1. curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Bạn sẽ nhận được đầu ra tương tự như sau:

Output
... { { "took" : 4, "timed_out" : false, "_shards" : { "total" : 2, "successful" : 2, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 4040, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "filebeat-7.7.1-2020.06.04", "_type" : "_doc", "_id" : "FiZLgXIB75I8Lxc9ewIH", "_score" : 1.0, "_source" : { "cloud" : { "provider" : "digitalocean", "instance" : { "id" : "194878454" }, "region" : "nyc1" }, "@timestamp" : "2020-06-04T21:45:03.995Z", "agent" : { "version" : "7.7.1", "type" : "filebeat", "ephemeral_id" : "cbcefb9a-8d15-4ce4-bad4-962a80371ec0", "hostname" : "june-ubuntu-20-04-elasticstack", "id" : "fbd5956f-12ab-4227-9782-f8f1a19b7f32" }, ...

Nếu đầu ra của bạn hiển thị tổng số lần truy cập là 0, thì Elaticsearch không tải bất kỳ nhật ký nào trong chỉ mục bạn đã tìm kiếm và bạn sẽ cần xem lại thiết lập của mình để tìm lỗi. Nếu bạn nhận được đầu ra như mong đợi, hãy tiếp tục sang bước tiếp theo, trong đó chúng ta sẽ xem cách điều hướng qua một số bảng điều khiển của Kibana.

Bước 5 — Khám phá Bảng điều khiển Kibana

Hãy quay lại giao diện web Kibana mà chúng ta đã cài đặt trước đó.

Trong trình duyệt web, hãy truy cập FQDN hoặc địa chỉ IP công cộng của máy chủ Elastic Stack của bạn. Nếu phiên của bạn bị gián đoạn, bạn sẽ cần nhập lại thông tin đăng nhập mà bạn đã xác định ở Bước 2. Sau khi đăng nhập, bạn sẽ nhận được trang chủ Kibana:

description image

Nhấp vào liên kết Discover trong thanh điều hướng bên trái (bạn có thể phải nhấp vào biểu tượng Expand ở dưới cùng bên trái để xem các mục menu điều hướng). Trên trang Discover, chọn mẫu chỉ mục filebeat-* được xác định trước để xem dữ liệu Filebeat. Theo mặc định, điều này sẽ hiển thị cho bạn tất cả dữ liệu nhật ký trong 15 phút qua. Bạn sẽ thấy một biểu đồ với các sự kiện nhật ký và một số thông báo nhật ký bên dưới:

description image

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

Sử dụng bảng điều khiển bên trái để điều hướng đến trang Dashboard và tìm kiếm bảng điều khiển Filebeat System. Khi đó, bạn có thể chọn bảng điều khiển mẫu đi kèm với mô-đun system của Filebeat.

Ví dụ: bạn có thể xem số liệu thống kê chi tiết dựa trên thông báo nhật ký hệ thống của mình:

description image

Bạn cũng có thể xem người dùng nào đã sử dụng lệnh sudo và khi nào:

description image

Kibana có nhiều tính năng khác, chẳng hạn như vẽ đồ 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 đã học cách cài đặt và thiết lập cấu hình Elastic Stack để thu thập và phân tích nhật ký hệ thống. Hãy nhớ rằng bạn có thể gửi bất kỳ loại nhật ký hoặc dữ liệu được lập chỉ mục nào tới Logstash bằng Beats, nhưng dữ liệu thậm chí sẽ trở nên hữu ích hơn nếu được phân tích cú pháp và cấu trúc bằng bộ lọc Logstash, vì điều này chuyển đổi dữ liệu thành định dạng nhất quán có thể đọc được dễ dàng bởi Elaticsearch.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời