Cách cài đặt Elastic Stack trên Ubuntu 16.04

theanh

Administrator
Nhân viên
Elasticsearch là một công cụ tìm kiếm nguồn mở dựa trên Lucene, được phát triển bằng java. Nó cung cấp một công cụ tìm kiếm toàn văn phân tán và đa thuê bao với giao diện web HTTP Dashboard (Kibana) và lược đồ tài liệu JSON. Elasticsearch là một công cụ tìm kiếm có khả năng mở rộng có thể được sử dụng để tìm kiếm mọi loại tài liệu, bao gồm cả tệp nhật ký. Elasticsearch là trung tâm của 'Elastic Stack' hoặc ELK Stack.

Logstash là một công cụ nguồn mở để quản lý các sự kiện và nhật ký hệ thống. Nó cung cấp đường ống thời gian thực để thu thập dữ liệu. Logstash sẽ thu thập nhật ký hoặc dữ liệu, chuyển đổi tất cả dữ liệu thành tài liệu JSON và lưu trữ chúng trong Elasticsearch.

Kibana là một giao diện trực quan hóa dữ liệu cho Elasticsearch. Kibana cung cấp một bảng điều khiển đẹp mắt (giao diện web), cho phép bạn tự quản lý và trực quan hóa mọi dữ liệu từ Elasticsearch. Nó không chỉ đẹp mà còn mạnh mẽ.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình Elastic Stack trên một máy chủ Ubuntu 16.04 duy nhất để theo dõi nhật ký máy chủ và cách cài đặt 'Elastic beats' trên PC máy khách chạy hệ điều hành Ubuntu 16.04 và CentOS 7.

Điều kiện tiên quyết
  • Máy chủ Ubuntu 16.04 64 bit có RAM 4 GB, tên máy chủ - elk-master
  • Máy khách Ubuntu 16.04 64 bit có RAM 1 GB, tên máy chủ - elk-client1
  • Máy khách CentOS 7 64 bit có RAM 1 GB, tên máy chủ - elk-client2

Bước 1 - Cài đặt Java​

Java là bắt buộc để triển khai Elastic stack. Elasticsearch yêu cầu Java 8. Nên sử dụng Oracle JDK 1.8. Chúng tôi sẽ cài đặt Java 8 từ kho lưu trữ aPPA.

Cài đặt gói mới 'python-software-properties' để chúng ta có thể dễ dàng thêm kho lưu trữ mới bằng lệnh apt.
Mã:
sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https
Thêm kho lưu trữ Java 8 PPA mới bằng lệnh 'add-apt-repository', sau đó cập nhật kho lưu trữ.
Mã:
sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update
Cài đặt Java 8 từ kho lưu trữ webpub8 của PPA.
Mã:
sudo apt-get install -y oracle-java8-installer
Khi quá trình cài đặt hoàn tất, hãy đảm bảo Java được cài đặt đúng trên hệ thống bằng cách kiểm tra phiên bản Java.
Mã:
java -version



Bước 2 - Cài đặt và cấu hình Elasticsearch​

Trong bước này, chúng ta sẽ cài đặt và cấu hình Elasticsearch. Cài đặt Elasticsearch từ kho lưu trữ elastic và cấu hình để chạy trên IP localhost.

Trước khi cài đặt Elasticsearch, hãy thêm khóa kho lưu trữ elastic vào máy chủ.
Mã:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Thêm kho lưu trữ elastic 5.x vào thư mục 'sources.list.d'.
Mã:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
Cập nhật kho lưu trữ và cài đặt Elasticsearch 5.1 bằng lệnh apt bên dưới.
Mã:
sudo apt-get update
sudo apt-get install -y elasticsearch
Elasticsearch đã được cài đặt. Bây giờ hãy vào thư mục cấu hình và chỉnh sửa tệp cấu hình elasticsaerch.yml.
Mã:
cd /etc/elasticsearch/
vim elasticsearch.yml
Bật khóa bộ nhớ cho Elasticsearch bằng cách xóa chú thích ở dòng 43. Chúng tôi thực hiện thao tác này để tắt tính năng hoán đổi bộ nhớ cho Elasticsearch nhằm tránh quá tải máy chủ.
Mã:
bootstrap.memory_lock: true
Trong khối 'Network', bỏ chú thích các dòng network.host và http.port.
Mã:
network.host: localhost
http.port: 9200
Lưu tệp và thoát khỏi vim.

Bây giờ hãy chỉnh sửa tệp dịch vụ elasticsearch cho cấu hình khóa bộ nhớ mlockall.
Mã:
vim /usr/lib/systemd/system/elasticsearch.service
Bỏ chú thích dòng LimitMEMLOCK.
Mã:
LimitMEMLOCK=infinity
Lưu tệp và thoát.

Chỉnh sửa cấu hình mặc định cho Elasticsearch trong thư mục /etc/default.
Mã:
vim /etc/default/elasticsearch
Bỏ chú thích dòng 60 và đảm bảo giá trị là 'unlimited'.
Mã:
MAX_LOCKED_MEMORY=unlimited
Lưu và thoát.

Cấu hình Elasticsearch đã hoàn tất. Elasticsearch sẽ chạy dưới địa chỉ IP localhost với cổng 9200 và chúng tôi đã vô hiệu hóa bộ nhớ hoán đổi bằng cách bật mlockall trên máy chủ Ubuntu.

Tải lại tệp dịch vụ Elasticsearch và cho phép nó chạy khi khởi động, sau đó khởi động dịch vụ.
Mã:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Chờ một giây để Elasticsearch chạy, sau đó kiểm tra cổng mở trên máy chủ, đảm bảo 'trạng thái' của cổng 9200 là 'LISTEN'.
Mã:
netstat -plntu


Sau đó kiểm tra khóa bộ nhớ để đảm bảo mlockall được bật. Ngoài ra, hãy kiểm tra xem Elasticsearch có đang chạy không bằng các lệnh bên dưới.
Mã:
curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'
Bạn sẽ thấy kết quả bên dưới.


Bước 3 - Cài đặt và cấu hình Kibana với Nginx​

Trong bước này, chúng ta sẽ cài đặt và cấu hình Kibana phía sau máy chủ web Nginx. Kibana sẽ chỉ lắng nghe địa chỉ IP localhost và Nginx hoạt động như proxy ngược cho ứng dụng Kibana.

Cài đặt Kibana bằng lệnh apt này:
Mã:
sudo apt-get install -y kibana
Bây giờ hãy chỉnh sửa tệp cấu hình kibana.yml.
Mã:
vim /etc/kibana/kibana.yml
Bỏ chú thích các dòng server.port, server.hos và elasticsearch.url.
Mã:
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"
Lưu tệp và thoát khỏi vim.

Thêm Kibana để chạy khi khởi động và khởi động nó.
Mã:
sudo systemctl enable kibana
sudo systemctl start kibana
Kibana sẽ chạy trên cổng 5601 là ứng dụng nút.
Mã:
netstat -plntu


Cài đặt Kibana đã hoàn tất, bây giờ chúng ta cần cài đặt Nginx và cấu hình nó như một proxy ngược để có thể truy cập Kibana từ địa chỉ IP công khai.

Tiếp theo, cài đặt các gói Nginx và apache2-utils.
Mã:
sudo apt-get install -y nginx apache2-utils
Apache2-utils là một gói chứa các công cụ cho máy chủ web cũng hoạt động với Nginx, chúng ta sẽ sử dụng xác thực cơ bản htpasswd cho Kibana.

Nginx đã được cài đặt. Bây giờ chúng ta cần tạo một tệp cấu hình máy chủ ảo mới trong thư mục Nginxsites-available. Tạo tệp mới 'kibana' bằng vim.
Mã:
cd /etc/nginx/
vim sites-available/kibana
Dán cấu hình bên dưới.
Mã:
server {
 listen 80;
 
 server_name elk-stack.co;
 
 auth_basic "Restricted Access";
 auth_basic_user_file /etc/nginx/.kibana-user;
 
 location / {
 proxy_pass http://localhost:5601;
 proxy_http_version 1.1;
 proxy_set_header Nâng cấp $http_upgrade;
 proxy_set_header Kết nối 'nâng cấp';
 proxy_set_header Máy chủ $host;
 proxy_cache_bypass $http_upgrade;
 }
}
Lưu tệp và thoát vim

Tạo một tệp xác thực cơ bản mới bằng lệnh htpasswd.
Mã:
sudo htpasswd -c /etc/nginx/.kibana-user admin
NHẬP MẬT KHẨU CỦA BẠN
Kích hoạt máy chủ ảo kibana bằng cách tạo liên kết tượng trưng từ tệp kibana trong 'sites-available' đến thư mục 'sites-enabled'.
Mã:
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
Kiểm tra cấu hình ginx và đảm bảo không có lỗi, sau đó thêm nginx để chạy khi khởi động và khởi động lại nginx.
Mã:
nginx -t
systemctl enable nginx
systemctl restart nginx

Bước 4 - Cài đặt và cấu hình Logstash​

Trong bước này, chúng ta sẽ cài đặt và cấu hình Logsatash để tập trung nhật ký máy chủ từ các nguồn máy khách bằng filebeat, sau đó lọc và chuyển đổi tất cả dữ liệu (Syslog) và chuyển dữ liệu đó đến stash (Elasticsearch).

Cài đặt Logstash 5 bằng lệnh apt bên dưới.
Mã:
sudo apt-get install -y logstash
Chỉnh sửa tệp hosts bằng vim.
Mã:
vim /etc/hosts
Thêm địa chỉ IP và tên máy chủ của máy chủ.
Mã:
10.0.15.10 elk-master
Lưu tệp hosts và thoát khỏi trình chỉnh sửa.

Bây giờ hãy tạo một tệp chứng chỉ SSL mới bằng OpenSSL để các nguồn máy khách có thể xác định máy chủ elastic.
Mã:
cd /etc/logstash/
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt
Thay đổi giá trị '/CN' thành tên máy chủ đàn hồi.

Các tệp chứng chỉ sẽ được tạo trong thư mục '/etc/logstash/'.

Tiếp theo, chúng ta sẽ tạo các tệp cấu hình cho logstash. Chúng tôi sẽ tạo tệp cấu hình 'filebeat-input.conf' làm tệp đầu vào từ filebeat, 'syslog-filter.conf' để xử lý syslog và sau đó là tệp 'output-elasticsearch.conf' để xác định đầu ra của Elasticsearch.

Đi tới thư mục cấu hình logstash và tạo các tệp cấu hình mới trong thư mục 'conf.d'.
Mã:
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Nhập cấu hình, dán cấu hình bên dưới.
Mã:
input {
 beats {
 port => 5443
 type => syslog
 ssl => true
 ssl_certificate => "/etc/logstash/logstash.crt"
 ssl_key => "/etc/logstash/logstash.key"
 }
}
Lưu và thoát.

Tạo tệp syslog-filter.conf.
Mã:
vim conf.d/syslog-filter.conf
Dán cấu hình bên dưới.
Mã:
filter {
 if [type] == "syslog" {
 grok {
 match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
 add_field => [ "received_at", "%{@timestamp}" ]
 add_field => [ "received_from", "%{host}" ]
 }
 ngày {
 khớp => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
 }
}
Chúng tôi sử dụng plugin bộ lọc có tên là 'grok' để phân tích cú pháp các tệp syslog.

Lưu và thoát.

Tạo tệp cấu hình đầu ra 'output-elasticsearch.conf'.
Mã:
vim conf.d/output-elasticsearch.conf
Dán cấu hình bên dưới.
Mã:
output {
 elasticsearch { hosts => ["localhost:9200"]
 hosts => "localhost:9200"
 manage_template => false
 index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
 document_type => "%{[@metadata][type]}"
 }
}
Lưu và thoát.

Khi hoàn tất, hãy thêm logstash để bắt đầu khi khởi động và khởi động dịch vụ.
Mã:
sudo systemctl enable logstash
sudo systemctl start logstash

Bước 5 - Cài đặt và cấu hình Filebeat trên máy khách Ubuntu​

Kết nối với máy chủ dưới dạng root bằng tài khoản ssh.
Mã:
ssh root@elk-client1
Sao chép tệp chứng chỉ vào máy khách bằng lệnh scp.
Mã:
scp root@elk-server:/etc/logstash/logstash.crt .
Chỉnh sửa tệp hosts và thêm địa chỉ IP elk-master.
Mã:
vim /etc/hosts
Thêm cấu hình bên dưới vào cuối tệp.
Mã:
10.0.15.10 elk-master
Lưu và thoát.

Bây giờ chúng ta cần thêm khóa đàn hồi vào máy chủ elk-client1.
Mã:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Chúng ta sẽ sử dụng kho lưu trữ đàn hồi với https tải xuống vận chuyển, vì vậy chúng ta cần cài đặt gói 'apt-transport-https' vào máy chủ.
Mã:
sudo apt-get install -y apt-transport-https
Thêm kho lưu trữ đàn hồi và cập nhật tất cả các kho lưu trữ Ubuntu.
Mã:
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update
Bây giờ hãy cài đặt 'filebeat' bằng lệnh apt.
Mã:
sudo apt-get install -y filebeat
Tiếp theo, hãy đến thư mục cấu hình filebeat và chỉnh sửa tệp 'filebeat.yml' bằng vim.
Mã:
cd /etc/filebeat/
vim filebeat.yml
Thêm tệp nhật ký mới trong cấu hình đường dẫn.
Mã:
đường dẫn:
 - /var/log/auth.log
 - /var/log/syslog
Đặt loại tài liệu thành 'syslog'.
Mã:
document-type: syslog
Vô hiệu hóa đầu ra của elasticsearch bằng cách thêm chú thích vào các dòng.
Mã:
#-------------------------- Đầu ra của elasticsearch ------------------------------
#output.elasticsearch:
 # Mảng các máy chủ để kết nối đến.
# hosts: ["localhost:9200"]
Bật đầu ra logstash, bỏ chú thích cấu hình và thay đổi giá trị như bên dưới.
Mã:
output.logstash:
 # Các máy chủ Logstash
 hosts: ["elk-master:5443"]
 bulk_max_size: 2048
 ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
 template.name: "filebeat"
 template.path: "filebeat.template.json"
 template.overwrite: false
Lưu và thoát.

Di chuyển tệp chứng chỉ đến thư mục filebeat.
Mã:
mv ~/logstash.crt /etc/filebeat/
Bắt đầu filebeat và thêm nó để chạy khi khởi động.
Mã:
sudo systemctl start filebeat
sudo systemctl enable filebeat
Kiểm tra trạng thái dịch vụ.
Mã:
sudo systemctl status filebeat

Bước 6 - Cài đặt và cấu hình Filebeat trên máy khách CentOS​

Beats là trình vận chuyển dữ liệu, tác nhân nhẹ có thể được cài đặt trên các nút máy khách để gửi lượng dữ liệu lớn từ máy khách đến máy chủ Logstash hoặc Elasticsearch. Có 4 nhịp có sẵn, 'Filebeat' cho 'Tệp nhật ký', 'Metricbeat' cho 'Số liệu', 'Packetbeat' cho 'Dữ liệu mạng' và 'Winlogbeat' cho 'Nhật ký sự kiện' của máy khách Windows.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cài đặt và cấu hình 'Filebeat' để chuyển dữ liệu nhật ký đến máy chủ logstash qua kết nối SSL an toàn.

Sao chép tệp chứng chỉ từ máy chủ đàn hồi sang máy chủ client1. Đăng nhập vào máy chủ client1.
Mã:
ssh root@elk-client2
Sao chép tệp chứng chỉ bằng lệnh scp.
Mã:
scp root@elk-master:/etc/logstash/logstash.crt .
NHẬP elk-server password
Chỉnh sửa tệp hosts và thêm địa chỉ máy chủ elk-master.
Mã:
vim /etc/hosts
Thêm địa chỉ máy chủ elk-master.
Mã:
10.0.15.10 elk-master
Lưu và thoát.

Tiếp theo, nhập khóa đàn hồi vào máy chủ elk-client2.
Mã:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Thêm kho lưu trữ đàn hồi vào máy chủ.
Mã:
cd /etc/yum.repos.d/
vim elastic.repo
Dán cấu hình bên dưới.
Mã:
[elastic-5.x]
name=Kho lưu trữ Elastic cho các gói 5.x
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Lưu và thoát.

Cài đặt filebeat bằng lệnh yum này.
Mã:
sudo yum -y install filebeat
Filebeat đã được cài đặt, bây giờ hãy đến thư mục cấu hình và chỉnh sửa tệp 'filebeat.yml'.
Mã:
cd /etc/filebeat/
vim filebeat.yml
Trên dòng 21 của phần đường dẫn, thêm một số tệp nhật ký mới, chúng ta sẽ thêm hai tệp ở đây: '/var/log/secure' cho hoạt động ssh và '/var/log/messages' cho nhật ký máy chủ.
Mã:
đường dẫn:
 - /var/log/secure
 - /var/log/messages
Thêm cấu hình mới vào dòng 26 để xác định loại tệp là 'syslog'.
Mã:
document-type: syslog
Theo mặc định, filebeat đang sử dụng elasticsearch làm đầu ra. Trong hướng dẫn này, chúng ta sẽ đổi nó thành logshtash. Tắt đầu ra của elasticsearch bằng cách thêm chú thích vào dòng 83 và 85.

Tắt đầu ra của elasticsearch.
Mã:
#-------------------------- Đầu ra của elasticsearch ------------------------------
#output.elasticsearch:
 # Mảng các máy chủ để kết nối tới.
# hosts: ["localhost:9200"]
Bây giờ hãy thêm cấu hình đầu ra logstash mới, bỏ chú thích cho cấu hình đầu ra logstash và thay đổi tất cả các giá trị thành các giá trị được hiển thị trong cấu hình bên dưới.
Mã:
output.logstash:
 # Các máy chủ Logstash
 hosts: ["elk-master:5443"]
 bulk_max_size: 2048
 ssl.certificate_authorities: ["/etc/filebeat/logstash.crt"]
 template.name: "filebeat"
 template.path: "filebeat.template.json"
 template.overwrite: false
Lưu và thoát.

Thêm filebeat để bắt đầu khi khởi động và khởi chạy nó.
Mã:
sudo systemctl enable filebeat
sudo systemctl start filebeat
Bây giờ bạn có thể kiểm tra và theo dõi tệp nhật ký filebeat để đảm bảo nó đang chạy chính xác.
Mã:
tail -f /var/log/filebeat/filebeat

Bước 8 - Kiểm tra​

Mở trình duyệt web của bạn và truy cập miền elastic stack mà bạn đã định cấu hình trong cấu hình thenginx, của tôi là 'elk-stack.co', nhập tên người dùng quản trị viên cùng với mật khẩu của bạn và nhấn Enter để đăng nhập vào bảng điều khiển Kibana.



Tạo chỉ mục mặc định mới 'filebeat-*' và nhấp vào 'Tạo'.



Chỉ mục mặc định đã được tạo. Nếu bạn có nhiều nhịp trên ngăn xếp đàn hồi, bạn có thể cấu hình nhịp mặc định chỉ bằng một cú nhấp chuột vào nút 'sao'.



Đi đến 'Khám phá' và bạn sẽ thấy tất cả các tệp nhật ký từ máy chủ elk-client1 và elk-client2.



Một ví dụ về đầu ra JSON từ nhật ký máy chủ elk-client1 cho thông tin đăng nhập ssh không hợp lệ.



Và còn nhiều điều bạn có thể làm với bảng điều khiển Kibana, hãy thử xem!

Elastic Stack đã được cài đặt trên máy chủ Ubuntu 16.04, filebeat đã được cài đặt trên máy chủ khách Ubuntu và CentOS.

Tham khảo​

https://www.elastic.co/guide/index.html
 
Back
Bên trên