Cách cài đặt Elastic Stack trên CentOS 7

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. Công cụ này 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 Bảng điều khiển HTTP (Kibana). Dữ liệu được truy vấn, truy xuất và lưu trữ bằng 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 văn bản, 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ý. Công cụ này cung cấp đường ống thời gian thực để thu thập dữ liệu. Logstash sẽ thu thập dữ liệu nhật ký của bạn, chuyển đổi dữ liệu thành tài liệu JSON và lưu trữ chúng trong Elasticsearch.

Kibana là một công cụ trực quan hóa dữ liệu nguồn mở cho Elasticsearch. Kibana cung cấp một giao diện web bảng điều khiển đẹp mắt. Công cụ này cho phép bạn quản lý và trực quan hóa 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áy chủ CentOS 7 để theo dõi nhật ký máy chủ. Sau đó, tôi sẽ chỉ cho bạn cách cài đặt 'Elastic beats' trên CentOS 7 và hệ điều hành máy khách Ubuntu 16.04.

Điều kiện tiên quyết
  • CentOS 7 64 bit với 4GB RAM - elk-master
  • CentOS 7 64 bit với 1 GB RAM - client1
  • Ubuntu 16.04 64 bit với 1GB RAM - client2

Bước 1 - Chuẩn bị hệ điều hành​

Trong hướng dẫn này, chúng ta sẽ vô hiệu hóa SELinux trên máy chủ CentOS 7. Chỉnh sửa tệp cấu hình SELinux.
Mã:
vim /etc/sysconfig/selinux
Thay đổi giá trị SELinux từ enforcing thành disabled.
Mã:
SELINUX=disabled
Sau đó khởi động lại máy chủ.
Mã:
reboot
Đăng nhập lại vào máy chủ và kiểm tra trạng thái SELinux.
Mã:
getenforce
Đảm bảo kết quả đã bị disabled.

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

Java là bắt buộc đối với triển khai Elastic stack. Elasticsearch yêu cầu Java 8, khuyến nghị sử dụng Oracle JDK 1.8. Tôi sẽ cài đặt Java 8 từ gói rpm chính thức của Oracle.

Tải xuống Java 8 JDK bằng lệnh wget.
Mã:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http:%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"
Sau đó cài đặt bằng lệnh rpm này;
Mã:
rpm -ivh jdk-8u77-linux-x64.rpm
Cuối cùng, hãy kiểm tra phiên bản Java JDK để đảm bảo rằng nó hoạt động bình thường.
Mã:
java -version
Bạn sẽ thấy phiên bản Java của máy chủ.

Bước 3 - 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. Tôi sẽ cài đặt Elasticsearch từ một gói rpm do elastic.co cung cấp và cấu hình để chạy trên localhost (để thiết lập an toàn và đảm bảo rằng không thể truy cập được từ bên ngoài).

Trước khi cài đặt Elasticsearch, hãy thêm khóa elastic.co vào máy chủ.
Mã:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Tiếp theo, tải xuống Elasticsearch 5.1 bằng wget rồi cài đặt.
Mã:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm
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 40. Thao tác này sẽ vô hiệu hóa việc hoán đổi bộ nhớ cho Elasticsearch.
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 trình chỉnh sửa.

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

Chỉnh sửa tệp cấu hình sysconfig cho Elasticsearch.
Mã:
vim /etc/sysconfig/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 trên địa chỉ IP localhost trên cổng 9200, chúng tôi đã vô hiệu hóa việc hoán đổi bộ nhớ cho nó bằng cách bật mlockall trên máy chủ CentOS.

Tải lại systemd, bật Elasticsearch để khởi động 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 để Eelasticsearch khởi động, sau đó kiểm tra các cổng mở trên máy chủ, đảm bảo 'state' cho cổng 9200 là 'LISTEN'.
Mã:
netstat -plntu


Sau đó, kiểm tra khóa bộ nhớ để đảm bảo rằng mlockall được bật và kiểm tra xem Elasticsearch có đang chạy bằng các lệnh bên dưới không.
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 4 - 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 với máy chủ web Nginx. Kibana sẽ lắng nghe địa chỉ IP localhost và Nginx hoạt động như một proxy ngược cho ứng dụng Kibana.

Tải xuống Kibana 5.1 bằng wget, sau đó cài đặt bằng lệnh rpm:
Mã:
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm
Bây giờ hãy chỉnh sửa tệp cấu hình Kibana.
Mã:
vim /etc/kibana/kibana.yml
Bỏ chú thích các dòng cấu hình cho server.port, server.host và elasticsearch.url.
Mã:
server.port: 5601
server.host: "localhost"
elasticsearch.url: "http://localhost:9200"
Lưu và thoát.

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 dưới dạng ứng dụng node.
Mã:
netstat -plntu


Quá trình 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.

Nginx có sẵn trong kho lưu trữ Epel, cài đặt epel-release bằng yum.
Mã:
yum -y install epel-release
Tiếp theo, cài đặt gói Nginx và httpd-tools.
Mã:
yum -y install nginx httpd-tools
Gói httpd-tools chứa các công cụ cho máy chủ web, chúng ta sẽ sử dụng xác thực cơ bản htpasswd cho Kibana.

Chỉnh sửa tệp cấu hình Nginx và xóa khối 'server { }' để chúng ta có thể thêm cấu hình máy chủ ảo mới.
Mã:
cd /etc/nginx/
vim nginx.conf
Xóa khối server { }.



Lưu tệp và thoát khỏi vim.

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 conf.d. Tạo tệp mới 'kibana.conf' bằng vim.
Mã:
vim /etc/nginx/conf.d/kibana.conf
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 và thoát.

Sau đó 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
Kiểm tra cấu hình Nginx và đảm bảo không có lỗi. Sau đó thêm Nginx để chạy khi khởi động và khởi động Nginx.
Mã:
nginx -t
systemctl enable nginx
systemctl start nginx

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

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

Tải xuống Logstash và cài đặt bằng rpm.
Mã:
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm
Tạo tệp chứng chỉ SSL mới để máy khách có thể xác định máy chủ đàn hồi.

Đi đến thư mục tls và chỉnh sửa tệp openssl.cnf.
Mã:
cd /etc/pki/tls
vim openssl.cnf
Thêm một dòng mới vào phần '[ v3_ca ]' để nhận dạng máy chủ.
Mã:
[ v3_ca ]
 
# Địa chỉ IP của máy chủ
subjectAltName = IP: 10.0.15.10
Lưu và thoát.

Tạo tệp chứng chỉ bằng lệnh openssl.
Mã:
openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out /etc/pki/tls/certs/logstash-forwarder.crt
Các tệp chứng chỉ có thể được tìm thấy trong các thư mục '/etc/pki/tls/certs/' và '/etc/pki/tls/private/'.

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

Đi đến 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 con 'conf.d'.
Mã:
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Cấu hình đầu vào: dán cấu hình bên dưới.
Mã:
input {
 beats {
 port => 5443
 ssl => true
 ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
 ssl_key => "/etc/pki/tls/private/logstash-forwarder.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.

Cuối cùng, 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 6 - Cài đặt và cấu hình Filebeat trên CentOS Client​

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' để truyền tệp nhật ký dữ liệu đến máy chủ Logstash qua kết nối SSL.

Đăng nhập vào máy chủ client1. Sau đó sao chép tệp chứng chỉ từ máy chủ đàn hồi sang máy chủ client1.
Mã:
ssh root@client1IP
Sao chép tệp chứng chỉ bằng lệnh scp.
Mã:
scp root@elk-serverIP:~/logstash-forwarder.crt .
NHẬP elk-server password
Tạo một thư mục mới và di chuyển tệp chứng chỉ vào thư mục đó.
Mã:
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
Tiếp theo, nhập khóa đàn hồi vào máy chủ client1.
Mã:
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Tải xuống Filebeat và cài đặt bằng rpm.
Mã:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm
Filebeat đã được cài đặt, hãy vào thư mục cấu hình và chỉnh sửa tệp 'filebeat.yml'.
Mã:
cd /etc/filebeat/
vim filebeat.yml
Trong phần đường dẫn ở dòng 21, hãy thêm các tệp nhật ký mới. Chúng ta sẽ thêm hai tệp '/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 các tệp loại syslog.
Mã:
document-type: syslog
Filebeat đang sử dụng Elasticsearch làm mục tiêu đầu ra theo mặc định. Trong hướng dẫn này, chúng ta sẽ thay đổi nó thành Logshtash. Tắt đầu ra Elasticsearch bằng cách thêm chú thích vào các dòng 83 và 85.

Tắt đầu ra elasticsearch.
Mã:
#-------------------------- Đầu ra Elasticsearch ---------------------------
#output.elasticsearch:
 # Mảng 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 cấu hình đầu ra logstash và thay đổi tất cả giá trị thành cấu hình được hiển thị bên dưới.
Mã:
output.logstash:
 # Máy chủ Logstash
 máy chủ: ["10.0.15.10:5443"]
 bulk_max_size: 1024
 ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
 template.name: "filebeat"
 template.path: "filebeat.template.json"
 template.overwrite: false
Lưu tệp và thoát khỏi vim.

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ước 7 - Cài đặt và cấu hình Filebeat trên Ubuntu Máy khách​

Kết nối với máy chủ bằng ssh.
Mã:
ssh root@ubuntu-clientIP
Sao chép tệp chứng chỉ vào máy khách bằng lệnh scp.
Mã:
scp root@elk-serverIP:~/logstash-forwarder.crt .
Tạo một thư mục mới cho tệp chứng chỉ và di chuyển tệp vào thư mục đó.
Mã:
sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/
Thêm khóa đàn hồi vào máy chủ.
Mã:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Tải xuống gói Filebeat .deb và cài đặt bằng lệnh dpkg.
Mã:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb
Đi tới 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 đường dẫn tệp nhật ký mới vào phần cấu hình đường dẫn.
Mã:
paths:
 - /var/log/auth.log
 - /var/log/syslog
Đặt loại tài liệu thành syslog.
Mã:
document-type: syslog
Tắt đầu ra của elasticsearch bằng cách thêm chú thích vào các dòng hiển thị bên dưới.
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ật đầu ra logstash, bỏ chú thích cấu hình và thay đổi các giá trị như hiển thị bên dưới.
Mã:
output.logstash:
 # Các máy chủ Logstash
 hosts: ["10.0.15.10:5443"]
 bulk_max_size: 1024
 ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
 template.name: "filebeat"
 template.path: "filebeat.template.json"
 template.overwrite: false
Lưu tệp và thoát khỏi vim.

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
Kiểm tra trạng thái dịch vụ.
Mã:
systemctl status filebeat

Bước 8 - Kiểm tra Elastic Stack​

Mở trình duyệt web của bạn và truy cập miền elastic stack mà bạn đã sử dụng trong cấu hình Nginx, của tôi là 'elk-stack.co'. Đăng nhập với tư cách là người dùng quản trị bằng 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 nút 'Tạo'.



Chỉ mục mặc định đã được tạo. Nếu bạn có nhiều nhịp trên elastic stack, 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 'star'.



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



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 hơn những gì bạn có thể làm với bảng điều khiển Kibana, chỉ cần khám phá các tùy chọn có sẵn.

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

Tham khảo​

 
Back
Bên trên