Hướng dẫn cài đặt ELK stack trên CentOS 7

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

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.

Rate This Article

Leave A Comment?