Hướng dẫn python-logstash - nhật ký python

Cài đặt Logstashedit

Cài đặt từ BinyaDit đã tải xuống

Các nhị phân Logstash có sẵn từ https://www.elastic.co/doads. Tải xuống tệp cài đặt Logstash cho môi trường máy chủ của bạn, Tar Tar.GZ, Deb, Zip hoặc RPM.

Giải nén tập tin. Không cài đặt Logstash vào một đường dẫn thư mục có chứa dấu hai chấm (:) ký tự.

Các gói này được sử dụng miễn phí theo giấy phép đàn hồi. Chúng chứa nguồn mở và các tính năng thương mại miễn phí và quyền truy cập vào các tính năng thương mại trả phí. Bắt đầu một bản dùng thử 30 ngày để thử tất cả các tính năng thương mại trả phí. Xem trang đăng ký để biết thông tin về mức giấy phép đàn hồi.

Ngoài ra, bạn có thể tải xuống gói

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
0, chỉ chứa các tính năng có sẵn theo giấy phép Apache 2.0.

Trên các hệ điều hành Linux được hỗ trợ, bạn có thể sử dụng Trình quản lý gói để cài đặt Logstash.

Cài đặt từ gói hàng gói

Chúng tôi cũng có các kho lưu trữ có sẵn cho các phân phối dựa trên APT và YUM. Lưu ý rằng chúng tôi chỉ cung cấp các gói nhị phân, nhưng không có gói nguồn nào, vì các gói được tạo như một phần của bản dựng Logstash.

Chúng tôi đã chia kho lưu trữ gói Logstash bằng phiên bản thành các URL riêng biệt để tránh nâng cấp tình cờ trên các phiên bản chính. Đối với tất cả các bản phát hành 8.x.y sử dụng 8.x làm số phiên bản.

Chúng tôi sử dụng khóa PGP D88E42B4, phím ký kết đàn hồi, với dấu vân tay

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4

Để ký tất cả các gói của chúng tôi. Nó có sẵn từ https://pgp.mit.edu.

Aptedit

Tải xuống và cài đặt khóa ký công khai:

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

Bạn có thể cần cài đặt gói

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
1 trên Debian trước khi tiến hành:

sudo apt-get install apt-transport-https

Lưu định nghĩa kho lưu trữ vào

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

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

Sử dụng phương thức

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
3 được mô tả ở trên để thêm kho lưu trữ logstash. Không sử dụng
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
4 vì nó cũng sẽ thêm mục
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
5, nhưng chúng tôi không cung cấp gói nguồn. Nếu bạn đã thêm mục nhập
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
5, bạn sẽ thấy một lỗi như sau:

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

Chỉ cần xóa mục

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
5 khỏi tệp
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
8 và cài đặt sẽ hoạt động như mong đợi.

Chạy

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
9 và kho lưu trữ đã sẵn sàng để sử dụng. Bạn có thể cài đặt nó với:

sudo apt-get update && sudo apt-get install logstash

Xem Chạy Logstash để biết chi tiết về việc quản lý Logstash dưới dạng dịch vụ hệ thống.

Yumedit

Tải xuống và cài đặt khóa ký công khai:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Thêm các mục sau trong thư mục

sudo apt-get install apt-transport-https
0 của bạn trong một tệp có hậu tố
sudo apt-get install apt-transport-https
1, ví dụ
sudo apt-get install apt-transport-https
2

[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Và kho lưu trữ của bạn đã sẵn sàng để sử dụng. Bạn có thể cài đặt nó với:

sudo yum install logstash

Các kho lưu trữ không hoạt động với các phân phối dựa trên RPM cũ hơn vẫn sử dụng RPM V3, như Centos5.

Xem tài liệu Logstash đang chạy để quản lý Logstash dưới dạng dịch vụ hệ thống.

Dockeredit

Hình ảnh có sẵn để chạy Logstash dưới dạng container Docker. Chúng có sẵn từ Cơ quan đăng ký Docker đàn hồi.

Xem Chạy Logstash trên Docker để biết chi tiết về cách định cấu hình và chạy Logstash Docker Container.

Hướng dẫn python-logstash - nhật ký python

Đã đăng vào thg 5 10, 2021 2:28 SA 4 phút đọc 4 phút đọc

Mở đầu

Xin chào các bạn, nhân dịp đang có cơ hội được tìm hiểu về ELK Stack mình muốn chia sẻ với các bạn một số thứ mà mình mò mẫm và học được từ công nghệ đang khá hot này. Như tiêu đề bài viết, trong bài này mình sẽ hướng dẫn các bạn cách phân tích log, trích xuất ra các trường trong log của Web Server Apache, ngoài ra đối với các log của các phần mềm khác thì cũng gần tương tự để chúng ta có thể áp dụng.

Tổng quan về ELK Stack

ELK Stack được viết rút gọn từ 3 từ ( Elasticsearch - LogStash - Kibana ), 3 công cụ này hợp tại tạo nên một môi trường giúp chúng ta phân tích, lưu trữ tập trung, tìm kiếm và mô hình hóa log để có thể tiếp cận một cách dễ dàng hơn. được viết rút gọn từ 3 từ ( Elasticsearch - LogStash - Kibana ), 3 công cụ này hợp tại tạo nên một môi trường giúp chúng ta phân tích, lưu trữ tập trung, tìm kiếm và mô hình hóa log để có thể tiếp cận một cách dễ dàng hơn.

Hướng dẫn python-logstash - nhật ký python

Đến với từng công cụ trong Stack này:

  • Beats - Filebeat: Phần mềm này sẽ được cài ở các máy chủ mà chúng ta muốn lấy log. Phần mềm này sẽ giúp chúng ta chọn ra những loại log nào cần lấy và đẩy log đến LogStash cho tiền xử lý hoặc gửi trực tiếp đến Elasticsearch. Phần mềm này sẽ được cài ở các máy chủ mà chúng ta muốn lấy log. Phần mềm này sẽ giúp chúng ta chọn ra những loại log nào cần lấy và đẩy log đến LogStash cho tiền xử lý hoặc gửi trực tiếp đến Elasticsearch.
  • LogStash: Phần mềm này sẽ giúp chúng ra lọc ra những trường cần thiết trong log, hoặc sửa đổi log trước khi gửi đến Elasticsearch. Phần mềm này sẽ giúp chúng ra lọc ra những trường cần thiết trong log, hoặc sửa đổi log trước khi gửi đến Elasticsearch.
  • ElastichSearch: Log sẽ được lưu trữ và tìm kiếm nhanh chóng tại đây. Log sẽ được lưu trữ và tìm kiếm nhanh chóng tại đây.
  • Kibana: Phần mềm giúp mô hình hóa log dưới dạng biểu đồ, cột,... Phần mềm giúp mô hình hóa log dưới dạng biểu đồ, cột,...

Phân tích Apache Log

Trước hết đi vào quá trình phân tích log ta cần phải biết Apache ghi ra những loại log gì, Apache mặc định sẽ ghi ra 2 loại log là Access Log và Error Log tại thư mục

sudo apt-get install apt-transport-https
3 Access LogError Log tại thư mục
sudo apt-get install apt-transport-https
3
Hướng dẫn python-logstash - nhật ký python

Xem qua định dạng Access Log:

Về cơ bản chúng ta hiểu ý nghĩa từng mục của Apache Access Log thế này:

Hướng dẫn python-logstash - nhật ký python

Nếu để mặc định mà đẩy log này lên ElasticSearch thì sẽ rất rối, không thể bóc tách được ra các trường mà chúng ta cần. Vì vậy chúng ta sẽ cần lọc ra các trường tại LogStash bằng các plugin. Chúng ta có thể tham khảo các pipeline mẫu về phân tích log các phần mềm phổ biến tại trang chủ Elastic.co .

Đầu tiên, tại Filebeat ở máy cần lấy log ta thêm trường "custom_services: apachelog" trong phần "filebeat.inputs:" ở file

sudo apt-get install apt-transport-https
4 như hình để có thể định danh được luồng log này khi đẩy lên LogStash:"custom_services: apachelog" trong phần "filebeat.inputs:" ở file
sudo apt-get install apt-transport-https
4 như hình để có thể định danh được luồng log này khi đẩy lên LogStash:

Quay về với LogStash trên ELK Stack Server, mình sử dụng file YAML với cấu hình như phía dưới được lưu tại

sudo apt-get install apt-transport-https
5 .

input {
  beats {
    port => 5044
    host => "0.0.0.0"
  }
}
filter {
   if [custom_services] == "apachelog" {
      grok {
        match => { "message" => ["%{IPORHOST:clientip} - %{DATA:username} \[%{HTTPDATE:http_date}\] \"%{WORD:method} %{DATA:path} HTTP/%{NUMBER:apache_http_version}\" %{NUMBER:code} %{NUMBER:sent_bytes}( \"%{DATA:referrer}\")?( \"%{DATA:agent}\")?",
          "%{IPORHOST:clientip} - %{DATA:username} \\[%{HTTPDATE:http_date}\\] \"-\" %{NUMBER:code} -" ] }
      }
      mutate {
        rename => {
          "clientip" => "apache_remote_ip"
          "username" => "apache_user"
          "http_date" => "apache_access_time"
          "method" => "apache_method"
          "path" => "apache_path"
          "code" => "apache_code"
          "apache_http_version" => "apache_http_version"
          "sent_bytes" => "apache_sent_bytes"
          "referrer" => "apache_referrer"
          "agent" => "apache_agent"
        }
      }
   }
}
output {
  elasticsearch {
    hosts => localhost
    manage_template => false
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

Giải thích đơn giản là với input vào có trường "custom_services" bằng "apachelog" thì sẽ tiến hành tìm đoạn message và phân tích ra theo các định dạng có sẵn như: IPRHOST, HTTPDATE, NUMBER,... Sau đó chúng ta sẽ sửa đổi tên các thành phần mà đã phân tích từ message bằng mutate và rename. Còn 2 khối input và output là luồng chạy của dữ liệu. Sau khi cấu hình xong chúng ta restart services để cập nhật cấu hình mới."custom_services" bằng "apachelog" thì sẽ tiến hành tìm đoạn message và phân tích ra theo các định dạng có sẵn như: IPRHOST, HTTPDATE, NUMBER,... Sau đó chúng ta sẽ sửa đổi tên các thành phần mà đã phân tích từ message bằng mutaterename. Còn 2 khối inputoutput là luồng chạy của dữ liệu. Sau khi cấu hình xong chúng ta restart services để cập nhật cấu hình mới.

Sau khi cập nhật xong trên ElasticSearch chúng ta sẽ thấy xuất hiện thêm các trường mà ta đã lọc. Từ đó là sẽ chọn lọc và hiển thị ra những thông tin cần thiết và dễ dàng mô hình hóa hơn. Từ đó là sẽ chọn lọc và hiển thị ra những thông tin cần thiết và dễ dàng mô hình hóa hơn.

Kết

Mình là newbie nên chắc chắn sẽ có thiếu sót và sai, nếu có đóng góp hãy comment cho mình biết. Hy vọng bài viết này giúp cho bạn có thêm 1 chút kiến thức. Have a nice day!

All rights reserved