Cách sử dụng Logstash và Kibana để tập trung log trên Ubuntu 14.04
Lưu ý: Hướng dẫn này dành cho version cũ hơn của ngăn xếp ELK, không tương thích với version mới nhất. Phiên bản mới nhất của hướng dẫn này có sẵn tại Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên Ubuntu 14.04 .Trong hướng dẫn này, ta sẽ xem xét cài đặt Logstash 1.4.2 và Kibana 3 cũng như cách cấu hình chúng để tập hợp và trực quan hóa các log hệ thống của ta ở một vị trí tập trung. 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 3 là một giao diện web được dùng để tìm kiếm và xem các log mà Logstash đã lập index . Cả hai công cụ này đều dựa trên Elasticsearch. Elasticsearch, Logstash và Kibana, khi được sử dụng cùng nhau được gọi là ngăn xếp ELK.
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 Logstash / Kibana 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
- Logstash Forwarder : Được cài đặt trên các server sẽ gửi log của họ đến Logstash, Logstash Forwarder đóng role là đại lý chuyển tiếp log sử dụng giao thức mạng lumberjack để giao tiếp với Logstash
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 Logstash của ta . Logstash Forwarder sẽ được cài đặt trên tất cả các server mà ta muốn thu thập log , ta sẽ gọi chung là Server 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 Ubuntu 14.04. 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 Ubuntu 14.04 .
Số lượng CPU, RAM và dung lượng lưu trữ mà Server Logstash 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 Logstash của ta :
- Hệ điều hành: Ubuntu 14.04
- RAM: 4GB
- CPU: 2
Ngoài Server Logstash 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 Logstash của ta !
Cài đặt Java 7
Elasticsearch và Logstash yêu cầu Java 7, vì vậy ta sẽ cài đặt nó ngay bây giờ. Ta sẽ cài đặt Oracle Java 7 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 đó.
Thêm Oracle Java PPA vào apt:
sudo add-apt-repository -y ppa:webupd8team/java
Cập nhật database gói apt của bạn:
sudo apt-get update
Cài đặt version ổn định mới nhất của Oracle Java 7 bằng 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-java7-installer
wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
Tạo danh sách nguồn Elasticsearch:
echo 'deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main' | sudo tee /etc/apt/sources.list.d/elasticsearch.list
Cập nhật database gói apt của bạn:
sudo apt-get update
Cài đặt Elasticsearch bằng lệnh này:
sudo apt-get -y install elasticsearch=1.1.1
Elasticsearch hiện đã được cài đặt. Hãy chỉnh sửa cấu hình:
sudo vi /etc/elasticsearch/elasticsearch.yml
Thêm dòng sau vào đâu đó trong file , để tắt các tập lệnh động:
script.disable_dynamic: true
Bạn cũng 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 Elasticseach của bạn thông qua API HTTP. Tìm dòng chỉ định network.host
và bỏ ghi chú để nó trông giống như sau:
network.host: localhost
Lưu và thoát elasticsearch.yml
.
Bây giờ bắt đầu Elasticsearch:
sudo service elasticsearch restart
Sau đó chạy lệnh sau để khởi động Elasticsearch khi khởi động:
sudo update-rc.d elasticsearch defaults 95 10
Bây giờ Elasticsearch đã được cài đặt và chạy, hãy cài đặt Kibana.
Cài đặt Kibana
Lưu ý : Logstash 1.4.2 khuyến nghị Kibana 3.0.1
Tải Kibana về folder chính của bạn bằng lệnh sau:
cd ~; wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.1.tar.gz
Extract repository Kibana bằng tar:
tar xvf kibana-3.0.1.tar.gz
Mở file cấu hình Kibana để chỉnh sửa:
sudo vi ~/kibana-3.0.1/config.js
Trong file cấu hình Kibana, tìm dòng chỉ định elasticsearch
, và thay thế số cổng (9200 theo mặc định) với 80
:
elasticsearch: "http://"+window.location.hostname+":80",
Điều này là cần thiết vì ta đang lên kế hoạch truy cập Kibana trên cổng 80 (tức là http: // logstash \ _server \ _public \ _ip / ).
Ta sẽ sử dụng Nginx để phục vụ cài đặt Kibana, vì vậy hãy di chuyển các file vào một vị trí thích hợp. Tạo một folder bằng lệnh sau:
sudo mkdir -p /var/www/kibana3
Bây giờ sao chép các file Kibana vào folder mới tạo của bạn:
sudo cp -R ~/kibana-3.0.1/* /var/www/kibana3/
Trước khi có thể sử dụng giao diện web Kibana, ta phải cài đặt Nginx. Hãy làm điều đó ngay bây giờ.
Cài đặt Nginx
Sử dụng apt để cài đặt Nginx:
sudo apt-get install nginx
Do cách Kibana giao diện user với Elasticsearch ( user cần có thể truy cập trực tiếp vào Elasticsearch), ta cần cấu hình Nginx để ủy quyền các yêu cầu cổng 80 tới cổng 9200 (cổng mà Elasticsearch lắng nghe theo mặc định). May mắn là Kibana cung cấp một cấu hình Nginx mẫu giúp cài đặt phần lớn điều này.
Download cấu hình Nginx mẫu từ repository github của Kibana vào folder chính của bạn:
cd ~; wget https://gist.githubusercontent.com/thisismitch/2205786838a6a5d61f55/raw/f91e06198a7c455925f6e3099e3ea7c186d0b263/nginx.conf
Mở file cấu hình mẫu để chỉnh sửa:
vi nginx.conf
Tìm và thay đổi các giá trị của server_name
thành FQDN của bạn (hoặc localhost nếu bạn không sử dụng domain ) và root
đến nơi ta đã cài đặt Kibana, để chúng trông giống như các mục sau:
server_name FQDN; root /var/www/kibana3;
Lưu và thoát. Bây giờ sao chép nó qua khối server mặc định Nginx của bạn bằng lệnh sau:
sudo cp nginx.conf /etc/nginx/sites-available/default
Bây giờ ta sẽ cài đặt apache2-utils
để ta có thể sử dụng htpasswd
để tạo cặp tên user và password :
sudo apt-get install apache2-utils
Sau đó, tạo thông tin đăng nhập sẽ được sử dụng trong Kibana để lưu và chia sẻ trang tổng quan (thay thế tên user của bạn ):
sudo htpasswd -c /etc/nginx/conf.d/kibana.myhost.org.htpasswd user
Sau đó nhập password và xác minh nó. Tệp htpasswd vừa tạo được tham chiếu trong cấu hình Nginx mà bạn đã cấu hình gần đây.
Bây giờ hãy khởi động lại Nginx để các thay đổi của ta có hiệu lực:
sudo service nginx restart
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 Logstash của bạn, tức là http: // logstash \ _server \ _public \ _ip / . Nếu truy cập vào đó trong trình duyệt web, bạn sẽ thấy trang chào mừng Kibana cho phép bạn xem trang tổng quan nhưng sẽ không có log nào để xem vì Logstash chưa được cài đặt . Hãy làm điều đó ngay bây giờ.
Cài đặt Logstash
Gói Logstash có sẵn từ cùng một repository như Elasticsearch và ta đã cài đặt public key đó, vì vậy hãy tạo danh sách nguồn Logstash:
echo 'deb http://packages.elasticsearch.org/logstash/1.4/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash.list
Cập nhật database gói apt của bạn:
sudo apt-get update
Cài đặt Logstash bằng lệnh này:
sudo apt-get install logstash=1.4.2-1-2c0f5a1
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 Logstash Forwarder để gửi log từ Server đến Server Logstash của ta , ta cần tạo certificate SSL và cặp khóa. Chứng chỉ được Logstash Forwarder sử dụng để xác minh danh tính của Logstash Server. Tạo các folder sẽ lưu trữ certificate và private key bằng các lệnh sau:
sudo mkdir -p /etc/pki/tls/certs sudo mkdir /etc/pki/tls/private
Đế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 cho phép server khách hàng của bạn phân giải địa chỉ IP của Server Logstash, 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ó một DNS cài đặt -mà sẽ cho phép server của bạn, rằng bạn sẽ thu thập các bản ghi từ, để giải quyết địa chỉ IP của Logstash bạn Server-bạn sẽ có thêm địa chỉ IP riêng Logstash Server đến 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/ssl/openssl.cnf
Tìm phần [ v3_ca ]
trong file và thêm dòng này vào bên dưới (thay thế bằng địa chỉ IP riêng của Server Logstash):
subjectAltName = IP: logstash_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/ssl/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 có chứa địa chỉ IP riêng của Server Logstash — 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 ( server mà bạn sẽ thu thập log từ đó) sẽ có thể phân giải domain thành Server Logstash của bạn.
Bây giờ, hãy 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 Logstash):
cd /etc/pki/tls; sudo openssl req -subj '/CN=logstash_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 01-lumberjack-input.conf
và cài đặt đầu vào “lumberjack” của ta (giao thức mà Logstash Forwarder sử dụng):
sudo vi /etc/logstash/conf.d/01-lumberjack-input.conf
Chèn cấu hình đầu vào sau:
input { lumberjack { port => 5000 type => "logs" 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 lumberjack
sẽ lắng nghe trên cổng tcp 5000
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 là 10-syslog.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.conf
Chèn cấu hình bộ lọc log hệ thống sau:
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 Logstash Forwarder) và nó sẽ cố gắng sử dụng "grok" để phân tích cú pháp các 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-lumberjack-output.conf
:
sudo vi /etc/logstash/conf.d/30-lumberjack-output.conf
Chèn cấu hình kết quả sau:
output { elasticsearch { host => localhost } stdout { codec => rubydebug } }
Lưu và thoát. Đầu ra này về cơ bản cấu hình Logstash để lưu trữ các bản ghi trong Elasticsearch.
Với cấu hình này, Logstash cũng sẽ chấp nhận log không trùng với bộ lọc, nhưng dữ liệu sẽ không có cấu trúc (ví dụ: log Nginx hoặc Apache chưa được lọc sẽ xuất hiện dưới dạng thông báo phẳng thay vì phân loại thông báo theo mã phản hồi HTTP, địa chỉ IP nguồn, file được cung cấp , Vân vân.).
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 Logstash Forwarder, hãy đảm bảo đặ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ả (tức là từ 01 đến 30).
Khởi động lại Logstash để thay đổi cấu hình của ta có hiệu lực:
sudo service logstash restart
Bây giờ Server Logstash của ta đã sẵn sàng, hãy chuyển sang cài đặt Logstash Forwarder.
Cài đặt Logstash Forwarder
Lưu ý: Thực hiện các bước này cho từng server mà bạn muốn gửi log đến Server Logstash của bạn . Để biết hướng dẫn về cách cài đặt Logstash Forwarder 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 phần Build và Package Logstash Forwarder của biến thể CentOS của hướng dẫn này.
Sao chép Chứng chỉ SSL và Gói Chuyển tiếp Logstash
Trên Server Logstash , sao chép certificate SSL vào Server (thay thế bằng thông tin đăng nhập của chính bạn):
scp /etc/pki/tls/certs/logstash-forwarder.crt user@server_private_IP:/tmp
Cài đặt gói Logstash Forwarder
Trên Server , tạo danh sách nguồn Logstash Forwarder:
echo 'deb http://packages.elasticsearch.org/logstashforwarder/debian stable main' | sudo tee /etc/apt/sources.list.d/logstashforwarder.list
Nó cũng sử dụng cùng một khóa GPG như Elasticsearch, có thể được cài đặt bằng lệnh này:
wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -
Sau đó cài đặt gói Logstash Forwarder:
sudo apt-get update sudo apt-get install logstash-forwarder
Lưu ý: Nếu bạn đang sử dụng bản phát hành 32 bit của Ubuntu và gặp lỗi “Không thể định vị gói logstash-forwarder”, bạn cần cài đặt Logstash Forwarder theo cách thủ công:
wget https://assets.digitalocean.com/articles/logstash/logstash-forwarder_0.3.1_i386.deb sudo dpkg -i logstash-forwarder_0.3.1_i386.deb
Tiếp theo, bạn cần cài đặt tập lệnh init Logstash Forwarder, để nó bắt đầu khi server khởi động :
cd /etc/init.d/; sudo wget https://raw.githubusercontent.com/elasticsearch/logstash-forwarder/a73e1cb7e43c6de97050912b5bb35910c0f8d0da/logstash-forwarder.init -O logstash-forwarder sudo chmod +x logstash-forwarder sudo update-rc.d logstash-forwarder defaults
Bây giờ sao chép certificate SSL 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/
Cấu hình Logstash Forwarder
Trên Server , tạo và chỉnh sửa file cấu hình Logstash Forwarder, ở định dạng JSON:
sudo vi /etc/logstash-forwarder
Bây giờ, hãy thêm các dòng sau vào file , thay thế bằng địa chỉ IP riêng của Server Logstash của bạn cho logstash_server_private_IP
:
{ "network": { "servers": [ "logstash_server_private_IP:5000" ], "timeout": 15, "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt" }, "files": [ { "paths": [ "/var/log/syslog", "/var/log/auth.log" ], "fields": { "type": "syslog" } } ] }
Lưu và thoát. Điều này cấu hình Logstash Forwarder để kết nối với Server Logstash của bạn trên cổng 5000 (cổng mà ta đã chỉ định một đầu vào trước đó) và sử dụng certificate SSL mà ta đã tạo trước đó. Phần đường dẫn chỉ định các file log sẽ gửi (ở đây ta chỉ định syslog và auth.log) và phần loại chỉ định rằng các log này thuộc loại “syslog * (là loại mà bộ lọc của ta đang tìm kiếm).
Lưu ý đây là nơi bạn sẽ thêm nhiều file / loại hơn để cấu hình Logstash Forwarder cho các file log khác tới Logstash trên cổng 5000.
Bây giờ hãy khởi động lại Logstash Forwarder để đưa các thay đổi của ta vào vị trí:
sudo service logstash-forwarder restart
Bây giờ Logstash Forwarder đang gửi syslog và auth.log đến Server Logstash của bạn! Lặp lại quá trình này cho tất cả các server khác mà bạn muốn thu thập log .
Kết nối với Kibana
Khi bạn hoàn tất việc cài đặt Logstash Forwarder 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 Logstash của bạn. Bạn sẽ thấy một trang chào mừng Kibana.
Nhấp vào Control panel Logstash để chuyển đến console được tạo sẵn. Bạn sẽ thấy biểu đồ có các sự kiện log , với các thông báo log bên dưới (nếu bạn không thấy bất kỳ sự kiện hoặc thông báo nào, một trong bốn thành phần Logstash của bạn không được cấu hình đúng cách).
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 . Đây là một ví dụ về version Kibana của bạn có thể trông như thế nào:
Hãy thử những điều sau:
- Tìm kiếm "root" để xem 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ể
- 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
Bây giờ các log hệ thống của bạn được tập trung thông qua 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 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.
Lưu ý trang tổng quan Kibana của bạn có thể truy cập được cho bất kỳ ai có thể truy cập vào server của bạn, vì vậy bạn cần bảo mật nó bằng một thứ như htaccess.
Các tin liên quan
Cách cài đặt Graylog2 và tập trung log trên Ubuntu 14.042014-06-06
Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên server Ubuntu 14.04
2014-06-05
Cách cấu hình Collectd để thu thập số liệu hệ thống cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cấu hình StatsD để thu thập số liệu thống kê tùy ý cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cài đặt OctoberCMS trên VPS chạy Ubuntu 14.04
2014-05-28
Cách cài đặt và sử dụng Graphite trên server Ubuntu 14.04
2014-05-27
Cách cài đặt và sử dụng Ack, một sự thay thế Grep cho các nhà phát triển, trên Ubuntu 14.04
2014-05-27
Cách sử dụng BitTorrent Sync để đồng bộ hóa các thư mục trong Ubuntu 14.04
2014-05-19
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 4 cho server ứng dụng WordPress trên Ubuntu 14.04
2014-05-16
Cách sử dụng kpcli để quản lý tệp mật khẩu KeePass2 trên server Ubuntu 14.04
2014-05-16