Chào các bạn,
Bài viết hôm nay sẽ hướng dẫn các bạn cài đặt ELK stack trên CentOS 7
Contents
Giới thiệu
ELK stack là một bộ 3 tổng hợp của Elasticsearch, Logstash và Kibana, hiện tại ELK stack đã được tích hợp thêm Beat vào stack và gọi là Elastic Stack (ELKB stack).
Logstash hay Beat sẽ là nơi thu nhận và xử lý data, sau đó gửi về Elasticsearch
Elasticsearch là nơi lưu trữ các dữ liệu này và là Search Engine, dữ liệu trên Elasticsearch sẽ được lưu bằng format JSON, người dùng sẽ tìm kiếm dữ liệu trên Elasticsearch bằng giao thức RESTful
Kibana là một Dashboard cho phép chúng ta Visualize những dữ liệu từ Elasticsearch ra các dạng biểu đồ trực quan, từ những dữ liệu khô khan của Elasticsearch, Kibana cho chúng ta bức tranh về những gì đang diễn ra sau những con số đó.
Cài đặt Java các Repository cần thiết
Download JDK từ Oracle và cài đặt bằng lệnh
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm"
yum -y localinstall jdk-8u191-linux-x64.rpm
Tạo file repo của Elasticsearch /etc/yum.repos.d/elasticsearch.repo và thêm vào nội dung sau
[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
* Phiên bản stable mới nhất tại thời điểm này là 6.5, các bạn có thể cập nhật link repo phiên bản beta tại Elasticsearch Master RPM repo
Cài đặt public key của Elasticsearch repo vừa thêm vào
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Cài đặt ELK stack
Cài đặt Elasticsearch, Kibana và Logstash bằng lệnh sau:
yum install -y elasticsearch kibana logstash
Sau khi cài đặt, chúng ta sẽ cấu hình IP binding của ES và Kibana như sau:
Mở file /etc/elasticsearch/elasticsearch.yml, uncomment và đổi lại nội dung dòng cấu hình sau:
network.host: 127.0.0.1
Mở file /etc/kibana/kibana.yml, uncomment và đổi lại nội dung dòng cấu hình sau:
server.host: 127.0.0.1
Với cấu hình trên, ES và Kibana chỉ có thể truy cập từ localhost, do đó chúng ta cần cấu hình thêm Nginx để public Dashboard Kibana ra ngoài
Cài đặt Nginx
yum install nginx -y
Tạo file cấu hình nginx mới /etc/nginx/conf.d/kibana.conf và thêm vào nội dung sau
server { listen 80; server_name elk.domain.com; 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; } }
Cấu hình Logstash, tạo file cấu hinh Input cho Logstash, /etc/logstash/conf.d/input.conf thêm vào nội dung như sau
input { beats { port => 5044 } }
Logstash sẽ listen trên port 5044, các client sẽ gửi log bằng việc kết nối tới port này, do đó đảm bảo Firewall của bạn allow port này nhé. Tiếp theo tạo file cấu hình Output cho Logstash, /etc/logstash/conf.d/output.conf thêm vào nội dung như sau:
output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } }
Logstash sẽ thực hiện trả kết quả log vào Elasticsearch chúng ta đã cài đặt trên Localhost trước đó.
* Logstash còn có cơ chế filter và index log nhận được từ Input sau đó mới gửi vào output là Elasticsearch, tuy nhiên chúng ta sẽ không cấu hình Filter cho Logstash trong bài viết này vì nó khá phức tạp, mình sẽ để dành cho một bài viết khác chuyên đề cập tới Logstash
Khởi động Nginx, ES, Kibana và Logstash
systemctl start nginx elasticsearch kibana logstash systemctl enable nginx elasticsearch kibana logstash
Truy cập vào domain mà bạn đã cấu hình Nginx để xem Kibana và ES đã hoạt động được chưa, giao diện của phiên bản 6.5 có khá nhiều chức năng mới 😀
Cài đặt và cấu hình Filebeat
Filebeat là một Agent của ELK stack, Filebeat sẽ được cài đặt lên trên server cần monitor, sau đó cấu hình để đọc log từ hệ thống và gửi về server chạy Logstash hoặc gửi trực tiếp đến ES. Chúng ta thực hiện cài Filebeat từ yum như sau:
Đầu tiên nếu server cần monitor chưa cấu hình Repo của ES, các bạn thực hiện thêm Repo như bước cài đặt ES
Tạo file repo /etc/yum.repos.d/elasticsearch.repo và thêm vào nội dung sau
[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
yum install -y filebeat
Sau khi cài đặt, các bạn cấu hình Filebeat tại file vim /etc/filebeat/filebeat.yml với các nội dung như sau:
setup.dashboards.enabled: false filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*.log # Các bạn có thể sửa hoặc thêm đường dẫn tới file log output.logstash: # The Logstash hosts hosts: ["ip_ELK_server:5044"]
Sau đó chúng ta start Filebeat
systemctl start filebeat systemctl enable filebeat
Chúng ta quay lại Kibana Dashboard, chọn tới phần Logs để xem log đã được đưa vào hệ thống
Sau đó, các bạn vào mục Management và chọn Create index pattern, thực hiện tạo Index cho Kibana
Sau đó, các bạn quay trở lại mục Discover để xem dữ liệu mà Filebeat thu thập được
Kết luận
Như vậy là các bạn đã cài đặt xong ELK stack và sử dụng được Filebeat để gửi log truy cập Nginx về server ELK. Trong các bài viết sau, chúng ta sẽ cùng xử lý những data thu thập được này thành các biểu đồ trực quan để đánh giá và theo dõi hệ thống, hẹn gặp lại các bạn trong các bài viết sau về ELK.
Leave A Comment?