Site icon Cung cấp dịch vụ Cloud VPS, Server, Hosting Việt Nam & Thế giới

Hướng dẫn cấu hình Logstash để chuyển tiếp Apache logs sang OpenSearch

Hướng dẫn cấu hình Logstash để chuyển tiếp Apache logs sang OpenSearch

Quản lý log máy chủ web hiệu quả đóng vai trò quan trọng trong việc tối ưu hiệu suất website, xử lý sự cố và phân tích hành vi người dùng. Apache, một trong những máy chủ web phổ biến nhất, tạo ra các log truy cập và log lỗi chứa nhiều dữ liệu quan trọng. Để khai thác và phân tích log một cách tối ưu, bạn có thể sử dụng Logstash để thu thập, xử lý và chuyển tiếp dữ liệu đến DataOnline Managed OpenSearch. Điều này giúp lập chỉ mục và trực quan hóa thông tin, mang lại cái nhìn sâu sắc về hiệu suất hệ thống và trải nghiệm người dùng.

Chúng tôi sẽ hướng dẫn bạn cách cài đặt Logstash trên một Droplet, cấu hình Logstash để thu thập nhật ký Apache của bạn, và gửi chúng đến Managed OpenSearch để phân tích.

Yêu Cầu Ban Đầu

  1. Droplet có cài đặt Apache Webserver.

  2. Managed OpenSearch Cluster

Bước 1 – Cài đặt Logstash

Logstash có thể được cài đặt thông qua các file binary hoặc qua kho gói. Để quản lý và cập nhật dễ dàng hơn, việc sử dụng kho gói thường được khuyến nghị.

Trong phần này, chúng ta sẽ hướng dẫn cài đặt Logstash trên Droplet của bạn sử dụng cả hai trình quản lý gói APT và YUM.

Hãy xác định hệ điều hành

Chạy lệnh sau để xác định hệ điều hành:

cat /etc/os-release

Đối với Hệ Thống Dựa trên APT (Ubuntu/Debian)

Tải về và cài đặt Public Signing Key:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

Bạn có thể cần cài đặt gói apt-transport-https 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 file /etc/apt/sources.list.d/elastic-8.x.list:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Hãy sử dụng phương pháp echo như trên để thêm kho Logstash. Đừng sử dụng lệnh add-apt-repository vì nó sẽ thêm cả mục deb-src, và chúng tôi không cung cấp gói nguồn. Nếu bạn đã thêm mục deb-src, bạn sẽ thấy 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 xoá mục deb-src trong file /etc/apt/sources.list và cài đặt sẽ hoạt động như mong đợi.

Chạy lệnh sau để cập nhật và chuẩn bị kho:

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

Đối với Hệ Thống Dựa trên YUM (CentOS/RHEL)

Tải về và cài đặt public signing key:

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

Thêm đoạn sau vào file /etc/yum.repos.d/logstash.repo. Bạn có thể sử dụng lệnh tee để tạo và cập nhật file:

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[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
EOF

Kho của bạn đã sẵn sàng để sử dụng. Cài đặt Logstash bằng lệnh:

sudo yum install logstash

Để biết thêm thông tin, vui lòng tham khảo hướng dẫn cài đặt Logstash.

Bước 2 – Cấu hình Logstash để gửi nhật ký đến OpenSearch

Một pipeline (đường ống) của Logstash gồm ba giai đoạn chính: input, filter, và output. Các pipeline của Logstash sử dụng các plugin. Bạn có thể sử dụng các plugin do cộng đồng cung cấp hoặc tự tạo.

Bước 3 – Cài đặt Plugin OpenSearch Output

Plugin output của OpenSearch có thể được cài đặt bằng cách chạy lệnh sau:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

Thông tin chi tiết hơn có thể được tìm thấy tại repository của logstash-output-opensearch-plugin.

Bây giờ, hãy tạo một pipeline.

Tạo một file mới tại đường dẫn /etc/logstash/conf.d/ với tên apache_pipeline.conf, và sao chép nội dung sau:

input {
  file {
    path => "/var/log/apache2/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => "apache_access"
  }

  file {
    path => "/var/log/apache2/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => "apache_error"
  }
}

filter {
  if "apache_access" in [tags] {
    grok {
        match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
    mutate {
        remove_field => [ "message","[log][file][path]","[event][original]" ]
      }
   } else {
   grok {
        match => { "message" => "%{HTTPD24_ERRORLOG}" }
    }
   }
}

output {
  if "apache_access" in [tags] {
  opensearch {
    hosts       => "https://<OpenSearch-Hostname>:25060"
    user        => "doadmin"
    password    => "<your_password>"
    index       => "apache_access"
    ssl_certificate_verification => true
  }

  } else {
  opensearch {
    hosts       => "https://<OpenSearch-Hostname>:25060"
    user        => "doadmin"
    password    => "<your_password>"
    index       => "apache_error"
    ssl_certificate_verification => true
  }
  }
}

Thay <OpenSearch-Hostname> bằng tên miền (hostname) của máy chủ OpenSearch của bạn và <your_password> bằng mật khẩu OpenSearch của bạn.

Hãy cùng phân tích cấu hình trên:

INPUT:
Đoạn này dùng để cấu hình nguồn dữ liệu cho các sự kiện. Ở đây, plugin input dạng ‘file’ được sử dụng.

FILTER:

Bắt đầu với các điều kiện (conditionals)

Do make sure that the Logstash service has access to the input path.

Plugin output dùng để gửi các sự kiện tới một đích đến cụ thể.

Khối output bắt đầu với một điều kiện if. Ở đây, chúng ta sử dụng điều kiện if:

if "apache_access" in [tags] {}

Hãy cùng khám phá plugin OpenSearch Output:

hosts            => "https://XXX:25060"  Your Open search Hostname
user             => "doadmin"            Your Open search Username
password         => "XXXXX"              OpenSearch Password
index            => "apache_error"       Index name in OpenSearch
ssl_certificate_verification => true     Enabled SSL certificate verification

Hy vọng phần giải thích trên đã giúp bạn hiểu rõ hơn cấu hình của Logstash trong việc thu thập và xử lý nhật ký Apache để gửi đến OpenSearch!

Bước 4 – Khởi động Logstash

Khi pipeline đã được cấu hình, hãy khởi động dịch vụ Logstash:

systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

Bước 5 – Khắc Phục Sự Cố

Kiểm Tra Kết Nối

Bạn có thể kiểm tra xem Logstash có thể kết nối đến OpenSearch hay không bằng cách kiểm tra kết nối với lệnh:

curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"

Thay <your-opensearch-server> bằng hostname của máy chủ OpenSearch của bạn và <your_username>, <your_password> bằng thông tin đăng nhập OpenSearch của bạn.

Nhập Dữ Liệu

Đảm bảo rằng dữ liệu được lập chỉ mục chính xác trong OpenSearch:

curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"

Thay <your-index-name> bằng tên index bạn muốn kiểm tra.

Cấu Hình Firewall và Mạng

Đảm bảo rằng các quy tắc firewall và cài đặt mạng cho phép lưu lượng truy cập giữa Logstash và OpenSearch trên cổng 25060.

Nhật Ký

Nhật ký của Logstash có thể được tìm thấy tại /var/log/logstash/logstash-plain.log.
Để biết thêm chi tiết, hãy tham khảo mục Troubleshooting.

Kết Luận

Trong hướng dẫn này, chúng ta đã cùng nhau thực hiện các bước:

Với các bước trên, bạn hiện đã có một thiết lập chức năng, trong đó Logstash thu thập nhật ký Apache và gửi chúng đến OpenSearch để phân tích.

Exit mobile version