5 lưu ý thường gặp khi sử dụng Filebeat gửi log

5 lưu ý thường gặp khi sử dụng Filebeat gửi logCuongquach.com | Filebeat thuộc bộ sản phẩm Beats trong bộ giải pháp ELK Stack dùng để giám sát và quản lý log tập trung. Filebeat là một công cụ log shipper, dùng để đọc file log và chuyển dữ liệu log về các output remote như Logstash, Elasticsearch,… Bài viết này sẽ không đi tìm hiểu về Filebeat mà sẽ đề cập đến những vấn đề cần lưu ý nếu bạn đã biết cài đặt và sử dụng Filebeat.

vấn đề lưu ý khi sử dụng filebeat

Có thể bạn cũng quan tâm chủ đề khác
Hướng dẫn tạo Document và quản lý Document cơ bản trong Elasticsearch
Hướng dẫn tạo Index và quản lý Index cơ bản trong Elasticsearch
Tìm hiểu dịch vụ Logstash trong hệ thống ELK Stack Logging

Cấu trúc cấu hình YAML của Filebeat

Filebeat sử dụng cấu trúc cú pháp của YAML để định nghĩa các nội dung cấu hình cho hoạt động quét log và gửi log đi. Vì vậy nếu bạn là một người mới làm quen với YAML thì cần lưu ý như sau :

  • Không sử dụng TAB ( 4 khoảng trắng ) khi cấu hình YAML .
  • Chỉ sử dụng 2 khoảng trắng giữa các dòng thụt ra/vào của nội dung cấu hình.
  • Lỗi cú pháp khi cấu hình filebeat.yml có thể làm ngưng dịch vụ Filebeat khi khởi động lại dịch vụ.

Ví dụ cấu hình filebeat.yml:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/httpd/access.log
  fields:
    service: apache-access
  fields_under_root: true

Filebeat Registry File phình to dung lượng

Filebeat được thiết kế để nhớ trạng thái của các dòng log mà nó đọc từ file. Việc lưu trữ trạng thái của từng dòng log cụ thể (offset log line) giúp cho Filebeat biết : dòng log đó đã được gửi đi chưa, dòng log đó đã được đọc thông tin chưa,… Điều này cũng giúp Filebeat đảm bảo các dòng log sẽ không bao giờ bị bỏ qua hoặc đảm bảo log được gửi đến máy chủ remote hay chưa với cách thức ack event log,..

File Filebeat Registry được dùng để chứa thông tin trạng thái của các log file được quy định. Nếu mà bạn cấu hình quá nhiều file log, hoặc file log được sinh ra quá nhiều thì file Filebeat Registry có khả năng phình to dung lượng lưu trữ để chứa thông tin trạng thái của file log.

Filebeat Registry thường có mẫu dữ liệu (đã beautifier json) như sau :

#  cat /var/lib/filebeat/registry
[
  {
    "source": "/var/log/httpd/access.log",
    "offset": 2,
    "timestamp": "2018-09-11T05:23:46.016862098-04:00",
    "ttl": -1,
    "type": "log",
    "meta": null,
    "FileStateOS": {
      "inode": 270729,
      "device": 2049
    }
  }
]

Để đảm bảo bạn không rơi vào tình huống dung lượng Filebeat Registry tăng đột biến, thì bạn cần cân nhắc 2 cấu hình filebeat.yml như sau :

  • clean_inactive : xoá thông tin trạng thái của file sau khoảng thời gian không có dữ liệu cập nhật.
  • clean_removed : xoá thông tin về file sau một khoảng thời gian không có dữ liệu.

File log bị xoá hoặc đổi tên

Trong trường hợp này bạn cần hiểu sơ khái niệm ‘File Handle‘ tương tự ‘File Descriptor‘.

+ File Handle/File Descriptor

Bạn hiểu đơn giản là để nhắc đến 1 file thì phải có 1 cái gì cụ thể (sờ được, xoá được, tạo được) để mô tả nó , đó chính là file descriptor. Cái đó trong linux nó chỉ là 1 con số integer để kernel có thể phân biệt được giữa các file.
Do đó

  • File description chỉ là 1 số integer unique để phân biệt giữa các file.
  • Lưu ý là socket, stdout, stdin, stderr… đều là file.

Một trường hợp khác có thể khiến cho dung lượng ổ cứng trên máy chủ cài đặt Filebeat của bạn bị hao tổn , đó là việc số lượng file handle cho các ‘file đã bị xoá‘ hoặc ‘file đã đổi tên‘ tồn tại quá nhiều. Trong suốt thời gian harvester của Filebeat chạy, thì file handle sẽ luôn được giữ chạy để đọc các file log. Nếu một file log bị xoá hoặc đổi tên, thì Filebeat sẽ luôn cố gắng tìm đọc cái file đã không tồn tại đó, vô hình chung file handle này chiếm dụng thêm tài nguyên vô ích của hệ thống.

Xử lý sao nhỉ, hãy dùng option cân nhắc 2 option dưới trong file cấu hình ‘filebeat.yml‘ :
close_inactive : sau khoảng thời gian không thấy có hoạt động trên file log, thì đóng thông tin File Handle.
close_removed : Filebeat tắt một harvester nếu file log được giám sát bởi Filebeat bị xoá đi (Harvester tắt, thì File Handle cũng tắt luôn)

Lưu ý:
– Hãy đọc kĩ tài liệu của Filebeat trước khi sử dụng các cấu hình trên.

Filebeat sử dụng nhiều tài nguyên CPU

Filebeat là một trong những công cụ log shipper hoạt động khá là nhẹ nhàng, tiêu tốn ít tài nguyên. Nhưng trong một số tình huống Filebeat có thể chiếm nhiều CPU tài nguyên.

Điều này có thể xảy ra do bạn cấu hình Filebeat chạy quét các file log với khoảng thời gian giữa các lần quét quá ngắn chăng (< 1s). Hãy kiểm tra giá trị ‘scan_frequency‘ trong file cấu hình ‘filebeat.yml‘ không nên thấp hơn 1 giây, vì sẽ khiến Filebeat sử dụng CPU để thực thi khá nhiều.

Kết nối SSL đến Logstash thất bại

Nếu bạn sử dụng kết nối SSL để truyền dữ liệu log event giữa FilebeatLogstash, nhưng kết nối SSL thất bại. Có lẽ bạn nên kiểm tra các phần sau :
– Logstash remote chạy.
– Đảm bảo cấu hình kích hoạt ssl trên Logstash Input.
– Chứng chỉ SSL của bạn hợp lệ.

Tổng kết

Hiện tại thì với 5 vấn đề ở trên về Filebeat bạn sẽ ít nhiều phải đối mặt và phải xử lý chúng. Hy vọng chúng hữu ích với bạn.

Nguồn: https://cuongquach.com/

Previous articleMCSA 2012: Local Group Policy
Next articleKiểm tra cấu hình khuôn mẫu Logstash Grok bằng công cụ online
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !