Thứ ba, 10/03/2015 | 00:00 GMT+7

Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên CentOS 7

Trong hướng dẫn này, ta sẽ xem xét cài đặt Elasticsearch ELK Stack trên CentOS 7 — nghĩa là Elasticsearch 2.2.x, Logstash 2.2.x và Kibana 4.4.x. Ta cũng sẽ chỉ cho bạn cách cấu hình nó để thu thập và trực quan hóa các log hệ thống của bạn ở một vị trí tập trung, sử dụng Filebeat 1.1.x. Logstash là một công cụ open-souce để thu thập, phân tích cú pháp và lưu trữ log để sử dụng trong tương lai. Kibana là một giao diện web được dùng để tìm kiếm và xem các bản ghi mà Logstash đã lập index . Cả hai công cụ này đều dựa trên Elasticsearch, được sử dụng để lưu trữ log .

Ghi log tập trung có thể rất hữu ích khi cố gắng xác định sự cố với server hoặc ứng dụng của bạn, vì nó cho phép bạn tìm kiếm qua tất cả log của bạn ở 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 vấn đề trải dài trên nhiều server bằng cách tương quan các log của chúng trong một khung thời gian cụ thể.

Có thể sử dụng Logstash để thu thập log của tất cả các loại, nhưng ta sẽ giới hạn phạm vi của hướng dẫn này là thu thập log hệ thống.

Mục tiêu của ta

Mục tiêu của hướng dẫn là cài đặt Logstash để thu thập các log hệ thống của nhiều server và cài đặt Kibana để trực quan hóa các log đã thu thập.

Cài đặt ngăn xếp ELK của ta có bốn thành phần chính:

  • Logstash : Thành phần server của Logstash xử lý các log đến
  • Elasticsearch : Lưu trữ tất cả log
  • Kibana : Giao diện web để tìm kiếm và hiển thị log , sẽ được ủy quyền thông qua Nginx
  • Filebeat : Được cài đặt trên server khách hàng sẽ gửi log của họ đến Logstash, Filebeat đóng role là đại lý vận chuyển log sử dụng giao thức mạng lumberjack để giao tiếp với Logstash

Cơ sở hạ tầng ELK

Ta sẽ cài đặt ba thành phần đầu tiên trên một server duy nhất, mà ta sẽ gọi là Server ELK của ta . Filebeat sẽ được cài đặt trên tất cả các server khách hàng mà ta muốn thu thập log , ta sẽ gọi chung là Server khách hàng của ta .

Yêu cầu

Để hoàn thành hướng dẫn này, bạn sẽ yêu cầu quyền truy cập root vào VPS CentOS 7. Hướng dẫn cài đặt có thể tìm thấy ở đây (bước 3 và 4): Cài đặt server ban đầu với CentOS 7 .

Nếu bạn muốn sử dụng Ubuntu thay thế, hãy xem hướng dẫn này: Cách cài đặt ELK trên Ubuntu 14.04 .

Số lượng CPU, RAM và bộ nhớ mà Server ELK của bạn sẽ yêu cầu phụ thuộc vào dung lượng log mà bạn định thu thập. Đối với hướng dẫn này, ta sẽ sử dụng một VPS với các thông số kỹ thuật sau cho Server ELK của ta :

  • Hệ điều hành: CentOS 7
  • RAM: 4GB
  • CPU: 2

Ngoài Server ELK của bạn, bạn cần có một vài server khác mà bạn sẽ thu thập log từ đó.

Hãy bắt đầu cài đặt Server ELK của ta !

Cài đặt Java 8

Elasticsearch và Logstash yêu cầu Java, vì vậy ta sẽ cài đặt nó ngay bây giờ. Ta sẽ cài đặt version gần đây của Oracle Java 8 vì đó là những gì Elasticsearch đề xuất. Tuy nhiên, nó sẽ hoạt động tốt với OpenJDK, nếu bạn quyết định đi theo con đường đó. Làm theo các bước trong phần này nghĩa là bạn chấp nhận Thỏa thuận cấp phép binary của Oracle cho Java SE.

Thay đổi folder chính của bạn và download Oracle Java 8 (Bản cập nhật 73, mới nhất tại thời điểm viết bài này) JDK RPM với các lệnh sau:

  • cd ~
  • 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/8u73-b02/jdk-8u73-linux-x64.rpm"

Sau đó cài đặt RPM bằng lệnh yum này (nếu bạn đã download một bản phát hành khác, hãy thay thế tên file tại đây):

  • sudo yum -y localinstall jdk-8u73-linux-x64.rpm

Bây giờ Java sẽ được cài đặt tại /usr/java/jdk1.8.0_73/jre/bin/java và được liên kết từ /usr/bin/java .

Bạn có thể xóa file lưu trữ mà bạn đã download trước đó:

  • rm ~/jdk-8u*-linux-x64.rpm

Bây giờ Java 8 đã được cài đặt, hãy cài đặt ElasticSearch.

Cài đặt Elasticsearch

Elasticsearch có thể được cài đặt với trình quản lý gói bằng cách thêm repository của Elastic.

Chạy lệnh sau để nhập khóa GPG công khai Elasticsearch vào rpm:

  • sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Tạo một file repository yum mới cho Elasticsearch. Lưu ý đây là một lệnh duy nhất:

  • echo '[elasticsearch-2.x]
  • name=Elasticsearch repository for 2.x packages
  • baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
  • gpgcheck=1
  • gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  • enabled=1
  • ' | sudo tee /etc/yum.repos.d/elasticsearch.repo

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

  • sudo yum -y install elasticsearch

Elasticsearch hiện đã được cài đặt. Hãy chỉnh sửa cấu hình:

  • sudo vi /etc/elasticsearch/elasticsearch.yml

Bạn cần hạn chế quyền truy cập từ bên ngoài vào version Elasticsearch của bạn (cổng 9200), vì vậy người ngoài không thể đọc dữ liệu hoặc tắt cụm Elasticsearch của bạn thông qua API HTTP. Tìm dòng chỉ định network.host , bỏ ghi chú và thay thế giá trị của nó bằng “localhost” để nó trông giống như sau:

Đoạn trích thunsearch.yml (cập nhật)
network.host: localhost 

Lưu và thoát elasticsearch.yml .

Bây giờ bắt đầu Elasticsearch:

  • sudo systemctl start elasticsearch

Sau đó chạy lệnh sau để khởi động Elasticsearch tự động khi khởi động:

  • sudo systemctl enable elasticsearch

Bây giờ Elasticsearch đã được cài đặt và chạy, hãy cài đặt Kibana.

Cài đặt Kibana

Gói Kibana chia sẻ cùng một Khóa GPG với Elasticsearch và ta đã cài đặt public key đó.

Tạo và chỉnh sửa file repository yum mới cho Kibana:

  • sudo vi /etc/yum.repos.d/kibana.repo

Thêm cấu hình repository sau:

/etc/yum.repos.d/kibana.repo
  • [kibana-4.4]
  • name=Kibana repository for 4.4.x packages
  • baseurl=http://packages.elastic.co/kibana/4.4/centos
  • gpgcheck=1
  • gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
  • enabled=1

Lưu và thoát.

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

  • sudo yum -y install kibana

Mở file cấu hình Kibana để chỉnh sửa:

  • sudo vi /opt/kibana/config/kibana.yml

Trong file cấu hình Kibana, tìm dòng chỉ định server.host và thay thế địa chỉ IP (“0.0.0.0” theo mặc định) bằng “localhost”:

đoạn trích kibana.yml (đã cập nhật)
server.host: "localhost" 

Lưu và thoát. Cài đặt này làm cho nó để Kibana sẽ chỉ có thể truy cập vào server local . Điều này là tốt vì ta sẽ cài đặt Reverse Proxy Nginx, trên cùng một server , để cho phép truy cập bên ngoài.

Bây giờ hãy bắt đầu dịch vụ Kibana và kích hoạt nó:

  • sudo systemctl start kibana
  • sudo chkconfig kibana on

Trước khi có thể sử dụng giao diện web Kibana, ta phải cài đặt một Reverse Proxy . Hãy làm điều đó ngay bây giờ, với Nginx.

Cài đặt Nginx

Vì ta đã cấu hình Kibana để lắng nghe trên localhost , ta phải cài đặt Reverse Proxy để cho phép truy cập từ bên ngoài vào nó. Ta sẽ sử dụng Nginx cho mục đích này.

Lưu ý: Nếu bạn đã có version Nginx mà bạn muốn sử dụng, hãy sử dụng version đó thay thế. Chỉ cần đảm bảo cấu hình Kibana để server Nginx của bạn có thể truy cập được (bạn có thể cần thay đổi giá trị host , trong /opt/kibana/config/kibana.yml , thành địa chỉ IP riêng của server Kibana của bạn). Ngoài ra, bạn nên bật SSL / TLS.

Thêm kho EPEL vào yum:

  • sudo yum -y install epel-release

Bây giờ, hãy sử dụng yum để cài đặt Nginx và httpd-tools:

  • sudo yum -y install nginx httpd-tools

Sử dụng htpasswd để tạo admin-user , được gọi là “kibanaadmin” (bạn nên sử dụng tên khác), có thể truy cập giao diện web Kibana:

  • sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

Nhập password khi được yêu cầu . Hãy nhớ thông tin đăng nhập này, vì bạn cần nó để truy cập giao diện web Kibana.

Bây giờ, hãy mở file cấu hình Nginx trong editor yêu thích của bạn. Ta sẽ sử dụng vi:

  • sudo vi /etc/nginx/nginx.conf

Tìm khối server mặc định (bắt đầu bằng server { ), đoạn cấu hình cuối cùng trong file và xóa nó. Khi bạn hoàn tất, hai dòng cuối cùng trong file sẽ giống như sau:

đoạn trích nginx.conf
    include /etc/nginx/conf.d/*.conf; } 

Lưu và thoát.

Bây giờ ta sẽ tạo một khối server Nginx trong một file mới:

  • sudo vi /etc/nginx/conf.d/kibana.conf

Dán khối mã sau vào file . Đảm bảo cập nhật server_name để trùng với tên server của bạn:

/etc/nginx/conf.d/kibana.conf
  • server {
  • listen 80;
  • server_name example.com;
  • 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;
  • }
  • }

Lưu và thoát. Điều này cấu hình Nginx để hướng lưu lượng truy cập HTTP của server của bạn đến ứng dụng Kibana, đang lắng nghe trên localhost:5601 . Ngoài ra, Nginx sẽ sử dụng file htpasswd.users mà ta đã tạo trước đó và yêu cầu xác thực cơ bản.

Bây giờ hãy bắt đầu và kích hoạt Nginx để áp dụng các thay đổi của ta :

  • sudo systemctl start nginx
  • sudo systemctl enable nginx

Lưu ý: Hướng dẫn này giả định SELinux đã bị vô hiệu hóa. Nếu không đúng như vậy, bạn có thể cần chạy lệnh sau để Kibana hoạt động bình thường: sudo setsebool -P httpd_can_network_connect 1

Kibana hiện có thể truy cập thông qua FQDN của bạn hoặc địa chỉ IP công cộng của Server ELK của bạn, tức là http: // elk \ _server \ _public \ _ip / . Nếu bạn truy cập vào đó trong trình duyệt web, sau khi nhập thông tin đăng nhập “kibanaadmin”, bạn sẽ thấy trang chào mừng Kibana sẽ yêu cầu bạn cấu hình mẫu index . Hãy quay lại điều đó sau, sau khi ta cài đặt tất cả các thành phần khác.

Cài đặt Logstash

Gói Logstash chia sẻ cùng một Khóa GPG với Elasticsearch và ta đã cài đặt public key đó, vì vậy hãy tạo và chỉnh sửa file repository Yum mới cho Logstash:

  • sudo vi /etc/yum.repos.d/logstash.repo

Thêm cấu hình repository sau:

/etc/yum.repos.d/logstash.repo
  • [logstash-2.2]
  • name=logstash repository for 2.2 packages
  • baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
  • gpgcheck=1
  • gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
  • enabled=1

Lưu và thoát.

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

  • sudo yum -y install logstash

Logstash đã được cài đặt nhưng nó chưa được cấu hình.

Tạo certificate SSL

Vì ta sẽ sử dụng Filebeat để gửi log từ Server Khách hàng đến Server ELK của ta , ta cần tạo certificate SSL và cặp khóa. Chứng chỉ được sử dụng bởi Filebeat để xác minh danh tính của Server ELK. Tạo các folder sẽ lưu trữ certificate và private key bằng các lệnh sau:

Đến đây bạn có hai tùy chọn để tạo certificate SSL của bạn . Nếu bạn có cài đặt DNS sẽ cho phép các server khách hàng của bạn phân giải địa chỉ IP của Server ELK, hãy sử dụng Tùy chọn 2 . Nếu không, Tùy chọn 1 sẽ cho phép bạn sử dụng địa chỉ IP.

Tùy chọn 1: Địa chỉ IP

Nếu bạn không có cài đặt DNS — điều đó sẽ cho phép các server của bạn, mà bạn sẽ thu thập log từ đó, để phân giải địa chỉ IP của Server ELK — bạn sẽ phải thêm địa chỉ IP riêng của Server ELK của bạn vào subjectAltName (SAN) trường của certificate SSL mà ta sắp tạo. Để làm như vậy, hãy mở file cấu hình OpenSSL:

  • sudo vi /etc/pki/tls/openssl.cnf

Tìm phần [ v3_ca ] trong file và thêm dòng này vào dưới phần đó (thay thế bằng địa chỉ IP riêng của Server ELK):

Đoạn trích openssl.cnf
  • subjectAltName = IP: ELK_server_private_ip

Lưu và thoát.

Bây giờ, tạo certificate SSL và private key ở các vị trí thích hợp (/ etc / pki / tls /), bằng các lệnh sau:

  • cd /etc/pki/tls
  • sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Tệp logstash-forwarder.crt sẽ được sao chép vào tất cả các server sẽ gửi log đến Logstash nhưng ta sẽ thực hiện điều đó sau một thời gian ngắn. Hãy hoàn thành cấu hình Logstash của ta . Nếu bạn đã chọn tùy chọn này, hãy bỏ qua tùy chọn 2 và chuyển sang Định cấu hình Logstash .

Tùy chọn 2: FQDN (DNS)

Nếu bạn đã cài đặt DNS với mạng riêng của bạn , bạn nên tạo một bản ghi A chứa địa chỉ IP riêng của Server ELK — domain này sẽ được sử dụng trong lệnh tiếp theo, để tạo certificate SSL. Ngoài ra, bạn có thể sử dụng bản ghi trỏ đến địa chỉ IP công cộng của server . Chỉ cần đảm bảo server của bạn (những server mà bạn sẽ thu thập log ) sẽ có thể phân giải domain thành Server ELK của bạn.

Bây giờ tạo certificate SSL và private key , ở các vị trí thích hợp (/ etc / pki / tls /…), bằng lệnh sau (thay thế trong FQDN của Server ELK):

  • cd /etc/pki/tls
  • sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Tệp logstash-forwarder.crt sẽ được sao chép vào tất cả các server sẽ gửi log đến Logstash nhưng ta sẽ thực hiện điều đó sau một thời gian ngắn. Hãy hoàn thành cấu hình Logstash của ta .

Cấu hình Logstash

Các file cấu hình logstash có định dạng JSON và nằm trong /etc/logstash/conf.d. Cấu hình bao gồm ba phần: đầu vào, bộ lọc và kết quả .

Hãy tạo một file cấu hình có tên 02-beats-input.conf và cài đặt đầu vào “filebeat” của ta :

  • sudo vi /etc/logstash/conf.d/02-beats-input.conf

Chèn cấu hình đầu vào sau:

02-beat-input.conf
  • input {
  • beats {
  • port => 5044
  • 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. Điều này chỉ định một đầu vào beats sẽ lắng nghe trên cổng tcp 5044 và nó sẽ sử dụng certificate SSL và private key mà ta đã tạo trước đó.

Bây giờ, hãy tạo một file cấu hình có tên 10-syslog-filter.conf , nơi ta sẽ thêm một bộ lọc cho các thông báo log hệ thống:

  • sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

Chèn cấu hình bộ lọc log hệ thống sau:

10-syslog-filter.conf
  • 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}" ]
  • }
  • syslog_pri { }
  • date {
  • match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
  • }
  • }
  • }

Lưu và thoát. Bộ lọc này tìm kiếm các log được gắn nhãn là loại “nhật ký hệ thống” (bởi Filebeat) và nó sẽ cố gắng sử dụng grok để phân tích cú pháp các log log hệ thống đến để làm cho nó có cấu trúc và khả năng truy vấn.

Cuối cùng, ta sẽ tạo một file cấu hình có tên 30-elasticsearch-output.conf :

  • sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Chèn cấu hình kết quả sau:

/etc/logstash/conf.d/30-elasticsearch-output.conf
  • output {
  • elasticsearch {
  • hosts => ["localhost:9200"]
  • sniffing => true
  • manage_template => false
  • index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  • document_type => "%{[@metadata][type]}"
  • }
  • }

Lưu và thoát. Đầu ra này về cơ bản cấu hình Logstash để lưu trữ dữ liệu nhịp trong Elasticsearch đang chạy tại localhost:9200 , trong một index được đặt tên theo nhịp được sử dụng (trong trường hợp của ta là filebeat).

Nếu bạn muốn thêm bộ lọc cho các ứng dụng khác sử dụng đầu vào Filebeat, hãy nhớ đặt tên cho các file để chúng sắp xếp giữa cấu hình đầu vào và kết quả (nghĩa là từ 02- đến 30-).

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

  • sudo service logstash configtest

Nó sẽ hiển thị Configuration OK nếu không có lỗi cú pháp. Nếu không, hãy thử và đọc kết quả lỗi để xem có gì sai với cấu hình Logstash của bạn.

Khởi động lại và kích hoạt Logstash để thay đổi cấu hình của ta có hiệu lực:

  • sudo systemctl restart logstash
  • sudo chkconfig logstash on

Tiếp theo, ta sẽ tải các console Kibana mẫu.

Tải Trang tổng quan Kibana

Elastic cung cấp một số mẫu console Kibana và các mẫu index Beats có thể giúp bạn bắt đầu với Kibana. Mặc dù ta sẽ không sử dụng trang tổng quan trong hướng dẫn này, nhưng ta vẫn tải chúng để ta có thể sử dụng mẫu index Filebeat mà nó bao gồm.

Trước tiên, hãy download repository trang tổng quan mẫu vào folder chính của bạn:

  • cd ~
  • curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

Cài đặt gói unzip bằng lệnh này:

  • sudo yum -y install unzip

Tiếp theo, extract nội dung của repository :

  • unzip beats-dashboards-*.zip

Và tải các trang tổng quan, hình ảnh trực quan và các mẫu index Beats vào Elasticsearch bằng các lệnh sau:

  • cd beats-dashboards-*
  • ./load.sh

Đây là các mẫu index mà ta vừa tải:

  • [packetbeat-] YYYY.MM.DD
  • [topbeat-] YYYY.MM.DD
  • [filebeat-] YYYY.MM.DD
  • [winlogbeat-] YYYY.MM.DD

Khi ta bắt đầu sử dụng Kibana, ta sẽ chọn mẫu index Filebeat làm mặc định của ta .

Tải mẫu index Filebeat trong Elasticsearch

Vì ta đang có kế hoạch sử dụng Filebeat để gửi log đến Elasticsearch, ta nên tải mẫu index Filebeat. Mẫu index sẽ cấu hình Elasticsearch để phân tích các trường Filebeat đến theo cách thông minh.

Trước tiên, hãy download mẫu index Filebeat vào folder chính của bạn:

  • cd ~
  • curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

Sau đó tải mẫu bằng lệnh này:

  • curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

Nếu mẫu được tải đúng cách, bạn sẽ thấy một thông báo như sau:

Output:
{ "acknowledged" : true }

Bây giờ Server ELK của ta đã sẵn sàng nhận dữ liệu Filebeat, hãy chuyển sang cài đặt Filebeat trên mỗi server khách hàng.

Cài đặt Filebeat (Thêm server khách hàng)

Thực hiện các bước này cho từng server CentOS hoặc RHEL 7 mà bạn muốn gửi log đến Server ELK của bạn . Để biết hướng dẫn về cách cài đặt Filebeat trên các bản phân phối Linux dựa trên Debian (ví dụ: Ubuntu, Debian, v.v.), hãy tham khảo phần Cài đặt Filebeat (Thêm server client ) của biến thể Ubuntu của hướng dẫn này.

Sao chép certificate SSL

Trên Server ELK của bạn, sao chép certificate SSL — được tạo trong hướng dẫn yêu cầu — vào Server của bạn (thay thế địa chỉ của server và thông tin đăng nhập của chính bạn):

  • scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

Sau khi cung cấp thông tin đăng nhập của bạn, hãy đảm bảo bản sao certificate đã thành công. Nó được yêu cầu để giao tiếp giữa các server khách hàng và Server ELK.

Bây giờ, trên Server khách hàng của bạn, hãy sao chép certificate SSL của Server ELK vào vị trí thích hợp (/ etc / pki / tls / certs):

  • sudo mkdir -p /etc/pki/tls/certs
  • sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Bây giờ ta sẽ cài đặt gói Topbeat.

Cài đặt gói Filebeat

Trên Server Khách hàng , hãy chạy lệnh sau để nhập khóa GPG công khai Elasticsearch vào rpm:

  • sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Tạo và chỉnh sửa file repository yum mới cho Filebeat:

  • sudo vi /etc/yum.repos.d/elastic-beats.repo

Thêm cấu hình repository sau:

/etc/yum.repos.d/elastic-beats.repo
  • [beats]
  • name=Elastic Beats Repository
  • baseurl=https://packages.elastic.co/beats/yum/el/$basearch
  • enabled=1
  • gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
  • gpgcheck=1

Lưu và thoát.

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

  • sudo yum -y install filebeat

Filebeat đã được cài đặt nhưng nó chưa được cấu hình .

Cấu hình Filebeat

Bây giờ ta sẽ cấu hình Filebeat để kết nối với Logstash trên Server ELK của ta . Phần này sẽ hướng dẫn bạn cách sửa đổi file cấu hình ví dụ đi kèm với Filebeat. Khi bạn hoàn thành các bước, bạn sẽ có một file trông giống như thế này .

Trên Server Khách hàng , tạo và chỉnh sửa file cấu hình Filebeat:

  • sudo vi /etc/filebeat/filebeat.yml

Lưu ý: Tệp cấu hình của Filebeat có định dạng YAML, nghĩa là thụt lề rất quan trọng! Đảm bảo sử dụng cùng một số khoảng trắng được chỉ ra trong các hướng dẫn này.

Ở gần đầu file , bạn sẽ thấy phần prospectors , đây là nơi bạn có thể xác định khách hàng tiềm năng chỉ định file log nào nên được chuyển và cách xử lý chúng. Mỗi người tìm kiếm được biểu thị bằng ký tự - .

Ta sẽ sửa đổi trình tìm kiếm hiện có để gửi log messagessecure tới Logstash. Dưới paths , comment về file - /var/log/*.log . Điều này sẽ ngăn Filebeat gửi mọi .log trong folder đó tới Logstash. Sau đó, thêm các mục mới cho syslogauth.log . Nó sẽ trông giống như thế này khi bạn hoàn thành:

filebeat.yml trích đoạn 1/5
...       paths:         - /var/log/secure         - /var/log/messages #        - /var/log/*.log ... 

Sau đó, tìm dòng chỉ định document_type: , bỏ ghi chú và thay đổi giá trị của nó thành “syslog”. Nó sẽ trông như thế này sau khi sửa đổi:

filebeat.yml trích đoạn 2/5
...       document_type: syslog ... 

Điều này chỉ định rằng các log trong trình tìm kiếm này thuộc loại nhật ký hệ thống (là loại mà bộ lọc Logstash của ta đang tìm kiếm).

Nếu bạn muốn gửi các file khác đến server ELK của bạn hoặc thực hiện bất kỳ thay đổi nào đối với cách Filebeat xử lý log của bạn, vui lòng sửa đổi hoặc thêm các mục nhập trình tìm kiếm.

Tiếp theo, bên dưới phần output , hãy tìm dòng có nội elasticsearch: cho biết phần kết quả Elasticsearch (mà ta sẽ không sử dụng). Xóa hoặc comment toàn bộ phần kết quả Elasticsearch (cho đến dòng ghi logstash: .

Tìm phần kết quả Logstash đã comment , được chỉ ra bằng dòng có #logstash: và bỏ ghi chú bằng cách xóa # trước đó. Trong phần này, hãy bỏ comment hosts: ["localhost:5044"] . Thay đổi localhost thành địa chỉ IP riêng (hoặc tên server , nếu bạn sử dụng tùy chọn đó) của server ELK của bạn:

filebeat.yml đoạn trích 3 trên 5
  ### Logstash as output   logstash:     # The Logstash hosts     hosts: ["ELK_server_private_IP:5044"] 

Thao tác này cấu hình Filebeat để kết nối với Logstash trên Server ELK của bạn tại cổng 5044 (cổng mà ta đã chỉ định một đầu vào trước đó).

Ngay dưới mục nhập hosts và với cùng một thụt lề, hãy thêm dòng này:

filebeat.yml đoạn trích 4/5
    bulk_max_size: 1024 

Tiếp theo, tìm phần tls và bỏ ghi chú. Sau đó, bỏ comment chỉ định certificate_authorities và thay đổi giá trị của nó thành ["/etc/pki/tls/certs/logstash-forwarder.crt"] . Nó trông giống như sau :

filebeat.yml đoạn trích 5/5
...     tls:       # List of root certificates for HTTPS server verifications       certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"] 

Điều này cấu hình Filebeat để sử dụng certificate SSL mà ta đã tạo trên Server ELK.

Lưu và thoát.

Bây giờ hãy bắt đầu và kích hoạt Filebeat để đưa các thay đổi của ta vào vị trí:

  • sudo systemctl start filebeat
  • sudo systemctl enable filebeat

, nếu bạn không chắc liệu cấu hình Filebeat của bạn có chính xác hay không, hãy so sánh nó với cấu hình Filebeat ví dụ này.

Như vậy, Filebeat đang gửi messages log hệ thống và các file secure đến Server ELK của bạn! Lặp lại phần này cho tất cả các server khác mà bạn muốn thu thập log .

Kiểm tra cài đặt Filebeat

Nếu ngăn xếp ELK của bạn được cài đặt đúng cách, Filebeat (trên server khách hàng của bạn) sẽ gửi log của bạn đến Logstash trên server ELK của bạn. Logstash sẽ tải dữ liệu Filebeat vào Elasticsearch trong một index được đóng dấu ngày tháng, filebeat-YYYY.MM.DD .

Trên Server ELK của bạn, xác minh Elasticsearch thực sự đang nhận dữ liệu bằng cách truy vấn index Filebeat với lệnh sau:

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

Bạn sẽ thấy một loạt kết quả giống như sau:

Sample Output:
... { "_index" : "filebeat-2016.01.29", "_type" : "log", "_id" : "AVKO98yuaHvsHQLa53HE", "_score" : 1.0, "_source":{"message":"Feb 3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"} } ...

Nếu kết quả của bạn hiển thị tổng số lần truy cập là 0, Elasticsearch đang không tải bất kỳ log nào trong index bạn đã tìm kiếm và bạn nên xem lại cài đặt của bạn để tìm lỗi. Nếu bạn nhận được kết quả mong đợi, hãy tiếp tục bước tiếp theo.

Kết nối với Kibana

Khi bạn hoàn tất cài đặt Filebeat trên tất cả các server mà bạn muốn thu thập log , hãy xem Kibana, giao diện web mà ta đã cài đặt trước đó.

Trong trình duyệt web, truy cập FQDN hoặc địa chỉ IP công cộng của Server ELK của bạn. Sau khi nhập thông tin đăng nhập “kibanaadmin”, bạn sẽ thấy một trang nhắc bạn cấu hình mẫu index mặc định:

Tạo index

Tiếp tục và chọn [filebeat] -YYY.MM.DD từ menu Mẫu index (bên trái), sau đó nhấp vào nút Dấu sao (Đặt làm index mặc định) để đặt index Filebeat làm mặc định.

Bây giờ hãy nhấp vào liên kết Khám phá trong thanh chuyển trên cùng. Theo mặc định, điều này sẽ hiển thị cho bạn tất cả dữ liệu log trong 15 phút qua. Bạn sẽ thấy một biểu đồ với các sự kiện log , với các thông báo log bên dưới:

Trang khám phá

Ngay bây giờ, sẽ không có nhiều thứ trong đó vì bạn chỉ thu thập log hệ thống từ server khách hàng của bạn . Tại đây, bạn có thể tìm kiếm và duyệt qua log của bạn . Bạn cũng có thể tùy chỉnh trang tổng quan của bạn .

Hãy thử những điều sau:

  • Tìm kiếm "root" để xem liệu có ai đang cố gắng đăng nhập vào server của bạn với quyền root không
  • Tìm kiếm một tên server cụ thể (tìm kiếm host: " hostname " )
  • Thay đổi khung thời gian bằng cách chọn một vùng trên biểu đồ hoặc từ menu ở trên
  • Nhấp vào thông báo bên dưới biểu đồ để xem cách dữ liệu đang được lọc

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

Như vậy, các log hệ thống của bạn đã được tập trung thông qua Elasticsearch và Logstash và bạn có thể hình dung chúng bằng Kibana, bạn sẽ có một khởi đầu tốt với việc tập trung tất cả các log quan trọng của bạn . Lưu ý bạn có thể gửi khá nhiều loại log hoặc dữ liệu được lập index tới Logstash, nhưng dữ liệu sẽ trở nên hữu ích hơn nếu nó được phân tích cú pháp và cấu trúc với grok.

Để cải thiện ngăn xếp ELK mới của bạn , bạn nên xem xét việc thu thập và lọc các log khác của bạn bằng Logstash và tạo trang tổng quan Kibana . Bạn cũng có thể cần thu thập các chỉ số hệ thống bằng cách sử dụng Topbeat với ngăn xếp ELK của bạn . Tất cả các chủ đề này được đề cập trong các hướng dẫn khác của loạt bài này.

Chúc may mắn!


Tags:

Các tin liên quan

Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên CentOS 7
2015-03-10
Cách chạy một mạng xã hội phân tán nguồn mở với Diaspora trên CentOS 7
2015-03-04
Cách lưu giữ log lịch sử hiệu quả với Graphite, carbon và sưu tập trên CentOS 7
2015-02-23
Cách cài đặt và cấu hình truy cập từ xa VNC cho GNOME Desktop trên CentOS 7
2014-11-25
Cách ghi lại mạng của bạn bằng Netdot trên CentOS 7
2014-11-24
Cách cài đặt và cập nhật WordPress với Kiểm soát phiên bản trên CentOS 7
2014-11-10
Cách thêm swap trên CentOS 7
2014-10-31
Cách cài đặt và cấu hình OpenShift Origin trên CentOS 6.5
2014-10-31
Cách cài đặt WordPress trên CentOS 7
2014-10-30
Cách cài đặt Git trên CentOS 7
2014-10-29