Làm thế nào để cài đặt Elasticsearch, Logstash, và Kibana (ELK Stack) trên Ubuntu 16.04

Hải Phạm

Giới thiệu

Trong hướng dẫn này, chúng tôi sẽ đi qua việc cài đặt Elasticsearch ELK Stack trên Ubuntu 16.04 (có nghĩa là, Elasticsearch 2.3.x, Logstash 2.3.x, và Kibana 4.5.x). Chúng tôi 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 syslog của hệ thống của bạn ở một vị trí tập trung, sử dụng Filebeat 1.2.x. Logstash là một công cụ mã nguồn mở để thu thập, phân tích cú pháp và lưu trữ các bản ghi để sử dụng trong tương lai. Kibana là một giao diện web có thể được sử dụng để tìm kiếm và xem nhật ký mà Logstash đã lập chỉ mục. Cả hai công cụ này đều dựa trên Elasticsearch, được sử dụng để lưu trữ nhật ký.

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

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

Mục tiêu của chúng tôi

Mục tiêu của hướng dẫn này là thiết lập Logstash để thu thập nhật ký hệ thống của nhiều máy chủ và thiết lập Kibana để hiển thị các nhật ký được thu thập.

Thiết lập ngăn xếp ELK của chúng tôi có bốn thành phần chính:

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

ELK Infrastructure

Chúng tôi sẽ cài đặt ba thành phần đầu tiên trên một máy chủ duy nhất, mà chúng tôi sẽ gọi là Máy chủ ELK. Filebeat sẽ được cài đặt trên tất cả các máy chủ khách hàng mà chúng tôi muốn thu thập nhật ký, mà chúng tôi sẽ gọi chung là Máy chủ khách hàng.

Điều kiện tiên quyết

Để hoàn thành hướng dẫn này, bạn sẽ cần sudo truy cập trên máy chủ Ubuntu 16.04. Bạn có thể tìm thấy hướng dẫn thiết lập tại đây: Thiết lập máy chủ ban đầu với Ubuntu 16.04.

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

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

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

Ngoài máy chủ ELK của bạn, bạn sẽ muốn có một vài máy chủ khác mà bạn sẽ thu thập nhật ký từ đó.

Hãy bắt đầu thiết lập Máy chủ ELK của chúng tôi!

Cài đặt Java 8

Elasticsearch và Logstash yêu cầu Java, vì vậy chúng tôi sẽ cài đặt ngay bây giờ. Chúng tôi sẽ cài đặt phiên bản Oracle Java 8 gần đây vì đó là những gì Elasticsearch đề xuất. Nó nên, tuy nhiên, làm việc tốt với OpenJDK, nếu bạn quyết định đi con đường đó.

Thêm Oracle Java PPA vào apt:

sudo add-apt-repository -y ppa:webupd8team/java

Cập nhật của bạn apt cơ sở dữ liệu gói:

sudo apt-get update

Cài đặt phiên bản ổn định mới nhất của Oracle Java 8 với lệnh này (và chấp nhận thỏa thuận cấp phép bật lên):

sudo apt-get -y install oracle-java8-installer

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 danh sách nguồn gói của Elastic.

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

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Nếu lời nhắc của bạn có vẻ như bị treo, có thể bạn đang chờ mật khẩu của người dùng (để cho phép sudo chỉ huy). Nếu đúng như vậy, hãy nhập mật khẩu của bạn.

Tạo danh sách nguồn Elasticsearch:

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

Cập nhật apt cơ sở dữ liệu gói một lần nữa:

sudo apt-get update

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

sudo apt-get -y install elasticsearch

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

sudo nano /etc/elasticsearch/elasticsearch.yml

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

/etc/elasticsearch/elasticsearch.yml excerpt (updated)

network.host: localhost

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

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

sudo systemctl restart elasticsearch

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

sudo systemctl daemon-reload

sudo systemctl enable elasticsearch

Bây giờ Elasticsearch đã hoạt động, hãy cài đặt Kibana.

Cài đặt Kibana

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

Thêm Kibana vào danh sách nguồn của bạn:

echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list

Cập nhật của bạn apt cơ sở dữ liệu gói:

sudo apt-get update

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

sudo apt-get -y install kibana

Kibana hiện đã được cài đặt.

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

sudo nano /opt/kibana/config/kibana.yml

Trong tệp cấu hình Kibana, hãy tìm dòng xác định server.hostvà thay thế địa chỉ IP ("0.0.0.0" theo mặc định) bằng "localhost":

/opt/kibana/config/kibana.yml excerpt (updated)

server.host: "localhost"

Lưu và thoát. Thiết lập này làm cho nó như vậy Kibana sẽ chỉ có thể truy cập vào localhost. Điều này là tốt bởi vì chúng tôi sẽ sử dụng một proxy đảo ngược Nginx để cho phép truy cập bên ngoài.

Bây giờ kích hoạt dịch vụ Kibana và khởi động nó:

sudo systemctl daemon-reload

sudo systemctl enable kibana

sudo systemctl start kibana

Trước khi chúng ta có thể sử dụng giao diện web Kibana, chúng ta phải thiết lập một proxy ngược. Hãy làm điều đó ngay bây giờ, với Nginx.

Cài đặt Nginx

Bởi vì chúng tôi đã cấu hình Kibana để lắng nghe localhost, chúng tôi phải thiết lập proxy ngược để cho phép truy cập bên ngoài vào nó. Chúng tôi sẽ sử dụng Nginx cho mục đích này.

Note

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

Sử dụng apt để cài đặt Nginx:

sudo apt-get -y install nginx

Sử dụng openssl để tạo người dùng quản trị, đượ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 -v

echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users

Nhập mật khẩu tại dấu nhắc. Nhớ thông tin đăng nhập này, vì bạn sẽ cần nó để truy cập vào giao diện web Kibana.

Bây giờ mở khối máy chủ mặc định Nginx trong trình soạn thảo yêu thích của bạn:

sudo nano /etc/nginx/sites-available/default

Xóa nội dung của tệp và dán khối mã sau vào tệp. Hãy chắc chắn cập nhật server_name để khớp với tên máy chủ hoặc địa chỉ IP công khai của bạn:

/etc/nginx/sites-available/default

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 sẽ cấu hình Nginx chuyển hướng lưu lượng HTTP của máy chủ đến ứng dụng Kibana đang lắng nghe localhost:5601. Ngoài ra, Nginx sẽ sử dụng htpasswd.users tệp mà chúng tôi đã tạo trước đó và yêu cầu xác thực cơ bản.

Bây giờ, hãy kiểm tra cấu hình cho các lỗi cú pháp và khởi động lại Nginx nếu không tìm thấy lỗi nào:

sudo nginx -t

sudo systemctl restart nginx

Nếu bạn làm theo hướng dẫn thiết lập máy chủ ban đầu cho 16.04, bạn đã bật tường lửa UFW. Để cho phép kết nối với Nginx, chúng tôi có thể điều chỉnh các quy tắc bằng cách nhập:

sudo ufw allow 'Nginx Full'

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

Cài đặt Logstash

Gói Logstash có sẵn từ cùng một kho lưu trữ như Elasticsearch, và chúng ta đã cài đặt khóa công khai đó, vì vậy hãy thêm Logstash vào danh sách nguồn của chúng ta:

echo "deb http://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list

Cập nhật của bạn apt cơ sở dữ liệu gói:

sudo apt-get update

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

sudo apt-get install logstash

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

Tạo chứng chỉ SSL

Vì chúng ta sẽ sử dụng Filebeat để gửi nhật ký từ Máy chủ Khách hàng đến Máy chủ ELK của chúng tôi, chúng tôi cần tạo chứng chỉ SSL và cặp khóa. Chứng chỉ được Filebeat sử dụng để xác minh danh tính của Máy chủ ELK. Tạo các thư mục sẽ lưu trữ chứng chỉ và khóa riêng với các lệnh sau:

sudo mkdir -p /etc/pki/tls/certs

sudo mkdir /etc/pki/tls/private

Bây giờ bạn có hai tùy chọn để tạo chứng chỉ SSL của mình. Nếu bạn có thiết lập DNS cho phép máy chủ khách hàng của bạn giải quyết địa chỉ IP của Máy chủ ELK, hãy sử dụng Lựa chọn 2. Nếu không thì, lựa 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ó thiết lập DNS sẽ cho phép máy chủ của bạn, bạn sẽ thu thập nhật ký từ, để giải quyết địa chỉ IP của Máy chủ ELK của bạn, bạn sẽ phải thêm địa chỉ IP riêng của Máy chủ ELK của bạn vào subjectAltName (SAN) của chứng chỉ SSL mà chúng tôi sắp tạo ra. Để làm như vậy, hãy mở tệp cấu hình OpenSSL:

sudo nano /etc/ssl/openssl.cnf

Tìm [ v3_ca ] trong tệp và thêm dòng này vào nó (thay thế trong Máy chủ của ELK địa chỉ IP riêng):

/etc/ssl/openssl.cnf excerpt (updated)

subjectAltName = IP: ELK_server_private_IP

Lưu và thoát.

Bây giờ tạo chứng chỉ SSL và khóa cá nhân ở các vị trí thích hợp (/etc/pki/tls/...), với các lệnh sau:

cd /etc/pki/tls

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

Các logstash-forwarder.crt tập tin sẽ được sao chép vào tất cả các máy chủ sẽ gửi nhật ký tới Logstash nhưng chúng tôi sẽ thực hiện sau này một chút. Hãy hoàn thành cấu hình Logstash của chúng tôi. 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ó thiết lập DNS với mạng riêng của mình, bạn nên tạo bản ghi A chứa địa chỉ IP riêng của Máy chủ ELK - tên miền này sẽ được sử dụng trong lệnh tiếp theo để tạo chứng chỉ 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 máy chủ. Chỉ cần chắc chắn rằng các máy chủ của bạn (các máy chủ mà bạn sẽ thu thập nhật ký từ) sẽ có thể giải quyết tên miền cho Máy chủ ELK của bạn.

Bây giờ tạo chứng chỉ SSL và khóa cá nhân, ở các vị trí thích hợp (/etc/pki/tls/...), với những điều sau đây (thay thế trong FQDN của Máy chủ 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

Các logstash-forwarder.crt tập tin sẽ được sao chép vào tất cả các máy chủ sẽ gửi nhật ký tới Logstash nhưng chúng tôi sẽ thực hiện sau này một chút. Hãy hoàn thành cấu hình Logstash của chúng tôi.

Định cấu hình Logstash

Các tệp 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à đầu ra.

Hãy tạo một tệp cấu hình có tên 02-beats-input.conf và thiết lập đầu vào "filebeat" của chúng tôi:

sudo nano /etc/logstash/conf.d/02-beats-input.conf

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

/etc/logstash/conf.d/02-beats-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 beats đầu vào sẽ nghe trên cổng TCP 5044và nó sẽ sử dụng chứng chỉ SSL và khóa cá nhân mà chúng tôi đã tạo trước đó.

Nếu bạn làm theo hướng dẫn cài đặt máy chủ ban đầu Ubuntu 16.04, bạn sẽ có một tường lửa UFW được cấu hình. Để cho phép Logstash nhận các kết nối trên cổng 5044, chúng ta cần mở cổng đó:

sudo ufw allow 5044

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

sudo nano /etc/logstash/conf.d/10-syslog-filter.conf

Chèn syslog sau bộ lọc cấu hình:

/etc/logstash/conf.d/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 các nhật ký được gắn nhãn là loại "syslog" (theo Filebeat) và nó sẽ cố gắng sử dụng grok để phân tích các nhật ký nhật ký hệ thống để làm cho nó có cấu trúc và có thể truy vấn.

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

sudo nano /etc/logstash/conf.d/30-elasticsearch-output.conf

Chèn phần sau đầu ra cấu hình:

/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 chỉ mục có tên sau khi nhịp được sử dụng (filebeat, trong trường hợp của chúng tôi).

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 tệp sao cho chúng sắp xếp giữa đầu vào và cấu hình đầu ra (tức là từ 02 đến 30).

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

sudo /opt/logstash/bin/logstash --configtest -f /etc/logstash/conf.d/

Sau một vài giây, 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 đầu ra lỗi để xem có gì sai với cấu hình Logstash của bạn.

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

sudo systemctl restart logstash

sudo systemctl enable logstash

Logstash sẽ lắng nghe

Tiếp theo, chúng tôi sẽ tải các biểu đồ Kibana mẫu.

Tải trang tổng quan Kibana

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

Sử dụng curl để tải tệp xuống thư mục chính của bạn:

cd ~

curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.2.2.zip

Cài đặt unzip gói với lệnh này:

sudo apt-get -y install unzip

Tiếp theo, trích xuất nội dung của tệp lưu trữ:

unzip beats-dashboards-*.zip

Và tải các biểu đồ mẫu, hình ảnh hóa và các mẫu chỉ mục Beats vào Elasticsearch bằng các lệnh sau:

cd beats-dashboards-*

./load.sh

Đây là các mẫu chỉ mục mà chúng tôi vừa tải:

  • packetbeat- *
  • topbeat- *
  • filebeat- *
  • winlogbeat- *

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

Tải mẫu chỉ mục Filebeat trong Elasticsearch

Bởi vì chúng tôi đang có kế hoạch sử dụng Filebeat để gửi nhật ký cho Elasticsearch, chúng tôi sẽ tải mẫu chỉ mục Filebeat. Mẫu chỉ mục sẽ cấu hình Elasticsearch để phân tích các trường Filebeat đến một cách thông minh.

Trước tiên, tải mẫu chỉ mục Filebeat về thư mục 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 với 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ờ máy chủ ELK của chúng tôi đã sẵn sàng để nhận dữ liệu Filebeat, hãy chuyển sang thiết lập Filebeat trên mỗi máy chủ khách.

Thiết lập Filebeat (Thêm máy khách)

Thực hiện các bước này cho mỗi máy chủ Ubuntu hoặc Debian mà bạn muốn gửi nhật ký tới Logstash trên Máy chủ ELK của bạn. Để được hướng dẫn cài đặt Filebeat trên các bản phân phối Linux dựa trên Red Hat (ví dụ: RHEL, CentOS, v.v.), hãy tham khảo Thiết lập phần Filebeat (Add Client Servers) của biến thể CentOS của hướng dẫn này.

Sao chép chứng chỉ SSL

Về bạn Máy chủ ELK, sao chép chứng chỉ SSL bạn đã tạo cho Máy chủ ứng dụng khách (thay thế địa chỉ của máy chủ khách và đăng nhập của riêng 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 rằng bản sao chứng chỉ đã thành công. Nó là cần thiết cho giao tiếp giữa các máy chủ khách hàng và máy chủ ELK.

Bây giờ, trên của bạn Máy chủ ứng dụng khách, sao chép chứng chỉ SSL của Máy chủ 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ờ chúng ta sẽ cài đặt gói Topbeat.

Cài đặt gói Filebeat

Trên Máy chủ ứng dụng khách, tạo danh sách nguồn Beats:

echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list

Nó cũng sử dụng khóa GPG giống như Elasticsearch, có thể được cài đặt bằng lệnh này:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

Sau đó cài đặt gói Filebeat:

sudo apt-get update

sudo apt-get install filebeat

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

Định cấu hình Filebeat

Bây giờ chúng ta sẽ cấu hình Filebeat để kết nối với Logstash trên máy chủ ELK của chúng ta. Phần này sẽ hướng dẫn bạn qua việc sửa đổi tệp 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 tệp trông giống như điều này.

Trên Máy chủ ứng dụng khách, tạo và chỉnh sửa tệp cấu hình Filebeat:

sudo nano /etc/filebeat/filebeat.yml

Note

File cấu hình của Filebeat có định dạng YAML, có nghĩa là sự thụt đầu dòng là rất quan trọng! Hãy chắc chắn sử dụng cùng một số không gian được chỉ ra trong các hướng dẫn này.

Gần đầu tệp, bạn sẽ thấy prospectors , đó là nơi bạn có thể xác định người tìm kiếm xác định tệp nhật ký nào cần được vận chuyển và cách xử lý chúng. Mỗi khách hàng tiềm năng được chỉ định bởi - tính cách.

Chúng tôi sẽ sửa đổi khách hàng tiềm năng hiện tại để gửi syslogauth.log để Logstash. Dưới paths, nhận xét - /var/log/*.log tập tin. Điều này sẽ ngăn chặn Filebeat gửi mọi .log trong thư mục đó để Logstash. Sau đó, thêm mục mới cho syslogauth.log. Nó sẽ giống như thế này khi bạn hoàn thành:

/etc/filebeat/filebeat.yml excerpt 1 of 5

...
      paths:
        - /var/log/auth.log
        - /var/log/syslog
       # - /var/log/*.log
...

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

/etc/filebeat/filebeat.yml excerpt 2 of 5

...
      document_type: syslog
...

Điều này chỉ định rằng nhật ký trong khách hàng tiềm năng này thuộc loại syslog (đó là loại mà bộ lọc Logstash của chúng tôi đang tìm kiếm).

Nếu bạn muốn gửi các tệp khác đến máy chủ ELK của mình hoặc thực hiện bất kỳ thay đổi nào về cách Filebeat xử lý nhật ký của bạn, hãy sửa đổi hoặc thêm các mục nhập của khách hàng tiềm năng.

Tiếp theo, dưới output , tìm dòng nói elasticsearch:, cho biết phần đầu ra Elasticsearch (mà chúng ta sẽ không sử dụng). Xóa hoặc nhận xét toàn bộ phần đầu ra của Elasticsearch (lên đến dòng nói #logstash:).

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

/etc/filebeat/filebeat.yml excerpt 3 of 5

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]

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

Trực tiếp dưới hosts mục nhập và với cùng một thụt đầu dòng, hãy thêm dòng này:

/etc/filebeat/filebeat.yml excerpt 4 of 5

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]
    bulk_max_size: 1024

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

/etc/filebeat/filebeat.yml excerpt 5 of 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 chứng chỉ SSL mà chúng tôi đã tạo trên Máy chủ ELK.

Lưu và thoát.

Bây giờ khởi động lại Filebeat để đặt các thay đổi của chúng tôi vào vị trí:

sudo systemctl restart filebeat

sudo systemctl enable filebeat

Một lần nữa, nếu bạn không chắc chắn nếu cấu hình Filebeat của bạn là chính xác, so sánh nó với điều này Ví dụ cấu hình Filebeat.

Bây giờ Filebeat đang gửi syslogauth.log để Logstash trên máy chủ ELK của bạn! Lặp lại phần này cho tất cả các máy chủ khác mà bạn muốn thu thập nhật ký.

Kiểm tra cài đặt Filebeat

Nếu ngăn xếp ELK của bạn được thiết lập đúng cách, Filebeat (trên máy chủ khách của bạn) sẽ gửi nhật ký của bạn tới Logstash trên máy chủ ELK của bạn. Logstash sẽ tải dữ liệu Filebeat vào Elasticsearch bằng cách sử dụng các chỉ mục mà chúng ta đã nhập trước đó.

Về bạn Máy chủ ELK, xác minh rằng Elasticsearch thực sự đang nhận dữ liệu bằng cách truy vấn chỉ mục Filebeat bằng lệnh này:

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

Bạn sẽ thấy một loạt các đầu ra trông như thế này:

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 đầu ra của bạn hiển thị tổng số 0 lần truy cập, Elasticsearch sẽ không tải bất kỳ nhật ký nào theo chỉ mục bạn đã tìm kiếm và bạn nên xem lại lỗi thiết lập của mình. 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 thiết lập Filebeat trên tất cả các máy chủ mà bạn muốn thu thập nhật ký, hãy xem Kibana, giao diện web mà chúng tôi đã 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 Máy chủ ELK của bạn. Sau khi nhập thông tin xác thực "kibanaadmin", bạn sẽ thấy một trang nhắc bạn định cấu hình mẫu chỉ mục mặc định:

Create index

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

Bây giờ hãy nhấp vào Khám phá liên kết trong thanh điều hướng 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 nhật ký trong 15 phút qua. Bạn sẽ thấy biểu đồ với các sự kiện nhật ký, với các thông điệp tường trình bên dưới:

Discover page

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

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

  • Tìm kiếm "root" để xem có ai đang cố gắng đăng nhập vào máy chủ của bạn dưới dạng root không
  • Tìm kiếm một tên máy chủ cụ thể (tìm kiếm host: "hostname")
  • Thay đổi khung thời gian bằng cách chọn một khu vực 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, do đó, bạn có thể thoải mái poke xung quanh!

Phần kết luận

Giờ đây, các nhật ký hệ thống của bạn được tập trung qua Elasticsearch và Logstash, và bạn có thể hình dung chúng bằng Kibana, bạn nên bắt đầu tốt với việc tập trung tất cả các bản ghi quan trọng của mình. Hãy nhớ rằng bạn có thể gửi bất kỳ loại dữ liệu nhật ký hoặc chỉ mục nào cho Logstash, nhưng dữ liệu trở nên hữu ích hơn nếu nó được phân tích cú pháp và được cấu trúc bằng grok.

Để cải thiện ngăn xếp ELK mới của bạn, bạn nên xem xét thu thập và lọc các nhật ký khác của mình bằng Logstash và tạo trang tổng quan Kibana. Bạn cũng có thể muốn thu thập số liệu 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 trong loạt bài này.

Chúc may mắn!

Thêm Phản Hồi