Summary
Trong thế giới IoT ngày nay, việc quản lý log một cách hiệu quả là rất quan trọng. Bài viết này sẽ hướng dẫn bạn cách tập trung log file trong mạng IoT bằng Fluent Bit, mang đến những giá trị thiết thực cho việc phân tích và giám sát dữ liệu. Key Points:
- Fluent Bit giúp xử lý log IoT hiệu quả trên các thiết bị hạn chế, cho phép thu thập hàng triệu sự kiện mỗi giây.
- Tích hợp dễ dàng với các nền tảng đám mây như AWS và Google Cloud, giúp phân tích dữ liệu quy mô lớn và giám sát hệ thống IoT toàn diện.
- Hỗ trợ đa nguồn log với cấu hình linh hoạt, giúp quản trị viên dễ dàng tùy chỉnh theo nhu cầu riêng của hệ thống.
Tổng quan về việc thu thập tệp nhật ký trong mạng IOT
Trong một mạng lưới IoT đang phát triển với nhiều cảm biến và thiết bị máy tính, việc truy cập nhanh vào các tệp nhật ký quan trọng là một thách thức không nhỏ. Một bên là các container Docker chạy ứng dụng như Home Assistant hay ESPHome. Bên kia là những cảm biến tạo ra dữ liệu đọc, giá trị và tệp nhật ký của riêng chúng. Cuối cùng, bạn cũng có các máy tính hoặc thiết bị đặc biệt như tường lửa, cũng sản sinh ra các tệp nhật ký. Vậy nếu xảy ra lỗi, bạn sẽ bắt đầu từ đâu? Liệu có cần phải đăng nhập thủ công vào từng hệ thống để kiểm tra từng tệp nhật ký không? Trong bài viết này, bạn sẽ được hướng dẫn cách thiết kế và triển khai việc ghi lại log tập trung bằng Fluent Bit. Chương trình hiệu suất cao này là một công cụ đa năng cho phép đọc, chuyển đổi và lưu trữ hoặc xuất khẩu các tệp nhật ký từ nhiều nguồn khác nhau như Docker, systemd hay các điểm cuối TCP hoặc HTTP tùy chỉnh. Bạn sẽ tìm hiểu về cách cài đặt, cấu hình và khám phá các tệp nhật ký trong bối cảnh thực tế của mạng IoT tại nhà của tôi với Raspberry Pi, Docker Container và nhiều cảm biến khác nhau. _Bối cảnh kỹ thuật của bài viết này dựa trên `Raspberry Pi OS 2024-11-19` và `Fluent Bit v2.2.3`, nhưng những hướng dẫn này nên vẫn áp dụng được cho các phiên bản mới hơn sau này._
So sánh giữa FluentD và Fluent Bit
FluentD và Fluent Bit là hai công cụ phổ biến trong việc quản lý và xử lý log. Đầu tiên, hãy cùng tìm hiểu về FluentD. Đây là một ứng dụng nhỏ gọn có thể chạy trên bất kỳ máy tính Linux nào, bao gồm cả Raspberry Pi. Khi được cài đặt và khởi động dưới dạng daemon, nó sẽ theo dõi các sự kiện log đến, đối chiếu chúng với cấu hình đã định sẵn và từ đó lưu trữ hoặc chuyển tiếp chúng.
FluentD mang lại sự linh hoạt cao nhờ vào khả năng mở rộng với nhiều plugin, cho phép tùy chỉnh từ đầu vào đến đầu ra rất đa dạng. Các loại plugin chính có thể kể đến như sau:
- **Đầu vào**: Cho phép xác định các nguồn dữ liệu mà FluentD lắng nghe, chẳng hạn như TCP, UDP và các socket Unix, HTTP cũng như theo dõi tệp.
- **Bộ phân tích**: Cung cấp cách thức linh hoạt để phân tích thông điệp nhập vào với nhiều định dạng khác nhau như CSV, TSV, JSON hay thậm chí là biểu thức chính quy tổng quát.
Tuy nhiên, bên cạnh FluentD còn có một phiên bản nhẹ hơn là Fluent Bit. Nếu bạn đang tìm kiếm một giải pháp tối ưu cho môi trường nhúng hoặc thiết bị IoT với tài nguyên hạn chế thì Fluent Bit sẽ là lựa chọn hợp lý hơn vì nó tiêu thụ ít bộ nhớ và CPU so với FluentD. Hơn nữa, cả hai đều cung cấp khả năng cấu hình dễ dàng qua các tệp JSON hoặc YAML giúp người dùng điều chỉnh theo nhu cầu riêng của mình.
Cuối cùng nhưng không kém phần quan trọng là tốc độ xử lý của từng công cụ; đây cũng là yếu tố đáng cân nhắc khi lựa chọn giữa chúng dựa trên sự phù hợp trong thực tế sử dụng.
FluentD mang lại sự linh hoạt cao nhờ vào khả năng mở rộng với nhiều plugin, cho phép tùy chỉnh từ đầu vào đến đầu ra rất đa dạng. Các loại plugin chính có thể kể đến như sau:
- **Đầu vào**: Cho phép xác định các nguồn dữ liệu mà FluentD lắng nghe, chẳng hạn như TCP, UDP và các socket Unix, HTTP cũng như theo dõi tệp.
- **Bộ phân tích**: Cung cấp cách thức linh hoạt để phân tích thông điệp nhập vào với nhiều định dạng khác nhau như CSV, TSV, JSON hay thậm chí là biểu thức chính quy tổng quát.
Tuy nhiên, bên cạnh FluentD còn có một phiên bản nhẹ hơn là Fluent Bit. Nếu bạn đang tìm kiếm một giải pháp tối ưu cho môi trường nhúng hoặc thiết bị IoT với tài nguyên hạn chế thì Fluent Bit sẽ là lựa chọn hợp lý hơn vì nó tiêu thụ ít bộ nhớ và CPU so với FluentD. Hơn nữa, cả hai đều cung cấp khả năng cấu hình dễ dàng qua các tệp JSON hoặc YAML giúp người dùng điều chỉnh theo nhu cầu riêng của mình.
Cuối cùng nhưng không kém phần quan trọng là tốc độ xử lý của từng công cụ; đây cũng là yếu tố đáng cân nhắc khi lựa chọn giữa chúng dựa trên sự phù hợp trong thực tế sử dụng.
Extended Perspectives Comparison:
Công Cụ | Mô Tả | Tính Năng Nổi Bật |
---|---|---|
FluentD | Công cụ thu thập log mạnh mẽ với nhiều plugin hỗ trợ. | Có thể mở rộng và tùy chỉnh cao. |
Fluent Bit | Giải pháp nhẹ hơn cho việc thu thập log, tiêu tốn ít tài nguyên. | Hỗ trợ sẵn cho InfluxDB và dễ dàng triển khai trên Docker. |
InfluxDB | Cơ sở dữ liệu thời gian thực chuyên dụng để lưu trữ và truy vấn dữ liệu log. | Tối ưu hóa cho các ứng dụng IoT và giám sát. |
Docker | Nền tảng ảo hóa giúp triển khai ứng dụng trong các container độc lập. | Giúp quản lý môi trường phát triển một cách hiệu quả. |
Telegraf | Bộ thu thập số liệu từ hệ thống, có thể tích hợp với InfluxDB. | Ghi lại thông tin hiệu suất của container và dịch vụ khác. |

Cách hoạt động của FluentD và các plugin của nó
Fluentd hoạt động dựa trên một hệ thống plugin rất linh hoạt, cho phép người dùng dễ dàng mở rộng chức năng. Các plugin này bao gồm filter, output và formatter, giúp bạn điều chỉnh thông điệp log theo nhiều cách khác nhau. Chẳng hạn, filter có thể loại bỏ hoặc thêm các trường dữ liệu, như ẩn đi mật khẩu rõ ràng để bảo vệ thông tin nhạy cảm. Ví dụ cụ thể về filter là grep hay record transformer, công cụ này sẽ tóm tắt nhiều file log lại với nhau.
Phần output cho phép ghi dữ liệu ngay lập tức hoặc lưu trữ tạm thời trước khi viết ra ngoài. Điều này rất hữu ích khi bạn muốn thu thập một số lượng lớn thông điệp log trước khi gửi chúng đi. Các plugin output cũng cực kỳ đa dạng: bạn có thể sao chép dữ liệu đến nhiều nguồn khác nhau, bao gồm các instance Fluentd khác hoặc lưu trữ lâu dài qua MongoDB, Hadoop hay S3 bucket.
Formatter là những trợ lý bổ sung giúp chuyển đổi thông điệp đầu ra thành định dạng mà plugin đầu ra mong muốn có thể đọc được. Một vài định dạng phổ biến là JSON, CSV và MessagePack.
Để đảm bảo hiệu suất hoạt động tối ưu, trạng thái nội bộ của Fluentd có thể được lưu trữ trong hệ thống bên ngoài. Nếu cần khởi động lại Fluentd thì nó có khả năng tiếp tục từ nơi đã dừng lại. Có sẵn các plugin lưu trữ cho MongoDB, Redis và Memcache.
Với tính năng phát hiện dịch vụ (Service Discovery), những instance Fluentd khác được chỉ định làm đầu ra có thể được cấu hình linh hoạt bằng cách cung cấp file hoặc bản ghi SRV mà sẽ được kiểm tra định kỳ.
Các plugin buffer hỗ trợ thêm tùy chọn ghi đệm nữa; cả bộ nhớ lẫn file đều được hỗ trợ để cải thiện hiệu suất đáng kể.
Cuối cùng nhưng không kém phần quan trọng là Metrics - giúp hiển thị số liệu về chính Fluentd như số lượng tổng quát các thao tác input, output hay filter đã thực hiện. Những số liệu này thường xuất hiện dưới dạng cấu trúc dữ liệu tương tự JSON để thuận tiện trong việc theo dõi hiệu quả hoạt động của hệ thống.
Phần output cho phép ghi dữ liệu ngay lập tức hoặc lưu trữ tạm thời trước khi viết ra ngoài. Điều này rất hữu ích khi bạn muốn thu thập một số lượng lớn thông điệp log trước khi gửi chúng đi. Các plugin output cũng cực kỳ đa dạng: bạn có thể sao chép dữ liệu đến nhiều nguồn khác nhau, bao gồm các instance Fluentd khác hoặc lưu trữ lâu dài qua MongoDB, Hadoop hay S3 bucket.
Formatter là những trợ lý bổ sung giúp chuyển đổi thông điệp đầu ra thành định dạng mà plugin đầu ra mong muốn có thể đọc được. Một vài định dạng phổ biến là JSON, CSV và MessagePack.
Để đảm bảo hiệu suất hoạt động tối ưu, trạng thái nội bộ của Fluentd có thể được lưu trữ trong hệ thống bên ngoài. Nếu cần khởi động lại Fluentd thì nó có khả năng tiếp tục từ nơi đã dừng lại. Có sẵn các plugin lưu trữ cho MongoDB, Redis và Memcache.
Với tính năng phát hiện dịch vụ (Service Discovery), những instance Fluentd khác được chỉ định làm đầu ra có thể được cấu hình linh hoạt bằng cách cung cấp file hoặc bản ghi SRV mà sẽ được kiểm tra định kỳ.
Các plugin buffer hỗ trợ thêm tùy chọn ghi đệm nữa; cả bộ nhớ lẫn file đều được hỗ trợ để cải thiện hiệu suất đáng kể.
Cuối cùng nhưng không kém phần quan trọng là Metrics - giúp hiển thị số liệu về chính Fluentd như số lượng tổng quát các thao tác input, output hay filter đã thực hiện. Những số liệu này thường xuất hiện dưới dạng cấu trúc dữ liệu tương tự JSON để thuận tiện trong việc theo dõi hiệu quả hoạt động của hệ thống.
Giới thiệu về Fluent Bit và các tính năng chính
Fluent Bit bắt đầu từ năm 2014, khi các nhà phát triển của FluentD nhận thấy nhu cầu về việc thu thập log file trên những hệ thống có tài nguyên hạn chế như thiết bị nhúng chạy Linux. Mục tiêu thiết kế của nó là hiệu suất và khả năng tương tác. Với kiến trúc plugin linh hoạt, Fluent Bit cũng được sử dụng rộng rãi trong các môi trường đám mây và có một cơ sở người dùng mạnh mẽ trong lĩnh vực này.
Khác với FluentD, được xây dựng bằng Ruby và C, Fluent Bit hoàn toàn được viết bằng C và chỉ nặng khoảng 650Kb theo thông tin từ trang so sánh. Giống như dự án gốc, Fluent Bit cung cấp nhiều plugin khác nhau:
- **Input**: Cho phép cấu hình nhiều loại đầu vào chính từ danh sách phong phú như collectd, statsd, log và sự kiện Docker, hoặc các công nghệ hoàn chỉnh như MQTT và Node Exporter.
- **Parser**: Biến đổi cấu trúc của sự kiện log để dễ dàng tiêu thụ upstream hơn, chẳng hạn như chuyển đổi sang JSON hoặc sử dụng biểu thức chính quy để biến đổi thành bất kỳ nguồn nào.
- **Filter**: Thực hiện điều chỉnh chi tiết hơn cho các sự kiện log nhằm khớp hoặc loại bỏ chúng hoặc làm giàu thêm với siêu dữ liệu tùy chỉnh. Một số trường hợp sử dụng thú vị bao gồm làm giàu địa chỉ IP với thông tin địa lý, thêm metadata đặc thù Kubernetes hay thậm chí chạy mô hình Tensorflow với nội dung của các thông điệp log.
Khác với FluentD, được xây dựng bằng Ruby và C, Fluent Bit hoàn toàn được viết bằng C và chỉ nặng khoảng 650Kb theo thông tin từ trang so sánh. Giống như dự án gốc, Fluent Bit cung cấp nhiều plugin khác nhau:
- **Input**: Cho phép cấu hình nhiều loại đầu vào chính từ danh sách phong phú như collectd, statsd, log và sự kiện Docker, hoặc các công nghệ hoàn chỉnh như MQTT và Node Exporter.
- **Parser**: Biến đổi cấu trúc của sự kiện log để dễ dàng tiêu thụ upstream hơn, chẳng hạn như chuyển đổi sang JSON hoặc sử dụng biểu thức chính quy để biến đổi thành bất kỳ nguồn nào.
- **Filter**: Thực hiện điều chỉnh chi tiết hơn cho các sự kiện log nhằm khớp hoặc loại bỏ chúng hoặc làm giàu thêm với siêu dữ liệu tùy chỉnh. Một số trường hợp sử dụng thú vị bao gồm làm giàu địa chỉ IP với thông tin địa lý, thêm metadata đặc thù Kubernetes hay thậm chí chạy mô hình Tensorflow với nội dung của các thông điệp log.

Lựa chọn giữa FluentD và Fluent Bit cho dự án của bạn
Trong các môi trường hạn chế, có thể cần thêm các tùy chọn để lưu trữ tạm thời các thông điệp nhật ký trước khi chúng được xử lý. Giai đoạn cuối cùng của quá trình là chuyển tiếp các bản ghi đó đến tay người tiêu dùng.
Hướng dẫn cài đặt và cấu hình Fluent Bit với Docker
Quá trình này dựa vào việc áp dụng các thẻ cho các sự kiện log và định nghĩa các bộ lọc để phản ứng với những thẻ này. Cuối cùng, sự kiện log sẽ được chuyển tiếp đến một danh sách đầu ra ấn tượng, bao gồm các tùy chọn cơ bản như tệp hoặc HTTP, cũng như nhiều công nghệ cụ thể như Prometheus, Elastic Search hay InfluxDB.
## Nên sử dụng công cụ nào?
Trong quá trình viết bài này, tôi đã bắt đầu với FluentD trước tiên. Để ghi lại log vào InfluxDB, có một [bài hướng dẫn hoàn chỉnh] đã tồn tại. Điểm quan trọng là bạn cần cài đặt thêm các plugin và cấu hình chúng một cách chính xác.
Fluent Bit hoạt động bằng cách thu thập logs từ nhiều nguồn khác nhau, xử lý chúng thông qua các bộ lọc và sau đó gửi đến nơi lưu trữ mong muốn. Các tham số tùy chỉnh trong tệp cấu hình như `Input`, `Filter` và `Output` rất quan trọng để tối ưu hóa quy trình này. Ví dụ về loại logs mà người dùng có thể theo dõi giúp làm rõ hơn tính hữu ích của Fluent Bit trong môi trường IoT.
## Nên sử dụng công cụ nào?
Trong quá trình viết bài này, tôi đã bắt đầu với FluentD trước tiên. Để ghi lại log vào InfluxDB, có một [bài hướng dẫn hoàn chỉnh] đã tồn tại. Điểm quan trọng là bạn cần cài đặt thêm các plugin và cấu hình chúng một cách chính xác.
Fluent Bit hoạt động bằng cách thu thập logs từ nhiều nguồn khác nhau, xử lý chúng thông qua các bộ lọc và sau đó gửi đến nơi lưu trữ mong muốn. Các tham số tùy chỉnh trong tệp cấu hình như `Input`, `Filter` và `Output` rất quan trọng để tối ưu hóa quy trình này. Ví dụ về loại logs mà người dùng có thể theo dõi giúp làm rõ hơn tính hữu ích của Fluent Bit trong môi trường IoT.

Cấu hình cơ bản để theo dõi tệp nhật ký hệ thống
FluentD có thể hoạt động tốt khi được cài đặt trực tiếp trên hệ thống, nhưng nếu bạn chạy nó dưới dạng một container Docker, bạn sẽ cần phải tạo một Dockerfile tùy chỉnh để thực hiện tất cả các bước cấu hình này. Ngược lại, Fluent Bit cung cấp hỗ trợ sẵn có cho InfluxDB mà không cần cài đặt thêm plugin nào. Hơn nữa, nó còn cung cấp các ảnh Docker tương thích với ARM Linux, điều này rất phù hợp với hệ điều hành Raspberry Pi OS. Với việc Fluent Bit là dự án mới hơn và hoàn toàn được xây dựng bằng ngôn ngữ lập trình C, tôi quyết định tiếp tục sử dụng giải pháp này.
## Cài Đặt và Cấu Hình Fluent Bit Trên Docker
Fluent Bit được cung cấp dưới dạng một ảnh Docker hoàn chỉnh. Bạn có thể nhúng nó vào tệp `docker-compose.yml`, trong đó bạn có thể gán các thư mục từ máy chủ để cung cấp tệp cấu hình và quyền truy cập bổ sung đến máy chủ theo yêu cầu.
## Cài Đặt và Cấu Hình Fluent Bit Trên Docker
Fluent Bit được cung cấp dưới dạng một ảnh Docker hoàn chỉnh. Bạn có thể nhúng nó vào tệp `docker-compose.yml`, trong đó bạn có thể gán các thư mục từ máy chủ để cung cấp tệp cấu hình và quyền truy cập bổ sung đến máy chủ theo yêu cầu.
Bắt nhật ký từ các container Docker bằng Fluent Bit
Để chuẩn bị cho việc lấy các tệp nhật ký hệ thống, tôi đã sử dụng cấu hình tùy chỉnh sau đây, mà trong đó tôi gắn cả một tệp cấu hình và tệp `parser.conf`, xác định cách thức để phân tích các tệp nhật ký.
Fluent Bit có thể được cấu hình bằng các tệp văn bản theo kiểu ini hoặc bằng YAML. Mặc dù việc sử dụng YAML vẫn đang ở giai đoạn [kỹ thuật thử nghiệm], nhưng tôi không gặp vấn đề gì với cấu hình này cả. Hãy bắt đầu với một cấu hình cơ bản, mà sẽ giúp Fluent Bit theo dõi sự thay đổi trong các tệp nhật ký thực tế và chuyển tiếp bất kỳ thay đổi nào đến `stdout`.
Khi khởi động cả hai container Docker, Fluent Bit sẽ xuất ra những thay đổi từ các tệp nhật ký như sau:
## Ghi lại Nhật Ký của Docker
Với mẫu thử nghiệm trên đã hoạt động tốt, bây giờ chúng ta sẽ cấu hình Fluent Bit để cũng ghi lại đầu ra của tất cả các container Docker khác và lưu trữ những nhật ký này vào InfluxDB. Có ba bước cần thực hiện:
- Cấu hình Fluent Bit để lắng nghe nhật ký từ Docker.
- Thêm InfluxDB làm đầu ra cho Fluent Bit.
- Cấu hình các container Docker để sử dụng trình điều khiển ghi log fluentd.
services:
fluentbit:
image: fluent/fluent-bit:2.2.3
container_name: fluentbit
volumes:
- type: bind
source: ./volumes/fluent-bit/
target: /fluent-bit/etc
- type: bind
source: /var/log/
target: /mnt/host/var/log/
networks:
- fluentd-logging
command:
- fluent-bit
- -c
- /fluent-bit/etc/fluent-bit.yaml
Fluent Bit có thể được cấu hình bằng các tệp văn bản theo kiểu ini hoặc bằng YAML. Mặc dù việc sử dụng YAML vẫn đang ở giai đoạn [kỹ thuật thử nghiệm], nhưng tôi không gặp vấn đề gì với cấu hình này cả. Hãy bắt đầu với một cấu hình cơ bản, mà sẽ giúp Fluent Bit theo dõi sự thay đổi trong các tệp nhật ký thực tế và chuyển tiếp bất kỳ thay đổi nào đến `stdout`.
pipeline:
inputs:
- name: tail
path: /mnt/host/var/log/*.log
tag: nexus
outputs:
- name: stdout
match: '*'
Khi khởi động cả hai container Docker, Fluent Bit sẽ xuất ra những thay đổi từ các tệp nhật ký như sau:
[2] nexus: [1679850361.616388472, {"log"=>"Mar 26 19:06:01 nexus CRON[1473]: pam_unix(cron:session): session opened for user root by (uid=0)"}]
[3] nexus: [1679850361.621528441, {"log"=>"Mar 26 19:06:01 nexus CRON[1474]: pam_unix(cron:session): session opened for user pi by (uid=0)"}]
[4] nexus: [1679850361.696900558, {"log"=>"Mar 26 19:06:01 nexus CRON[1473]: pam_unix(cron:sesssion): session closed for user root"}]
[5] nexus; [1679850361.778212768, {"log"=>"Mar 26 19;06;01 nexus CRON[1474]: pam_unix(cron:sesssion): session closed for user pi"}]
## Ghi lại Nhật Ký của Docker
Với mẫu thử nghiệm trên đã hoạt động tốt, bây giờ chúng ta sẽ cấu hình Fluent Bit để cũng ghi lại đầu ra của tất cả các container Docker khác và lưu trữ những nhật ký này vào InfluxDB. Có ba bước cần thực hiện:
- Cấu hình Fluent Bit để lắng nghe nhật ký từ Docker.
- Thêm InfluxDB làm đầu ra cho Fluent Bit.
- Cấu hình các container Docker để sử dụng trình điều khiển ghi log fluentd.

Lưu trữ thông tin nhật ký vào InfluxDB dễ dàng như thế nào
Đầu tiên, hãy thay đổi cấu hình Fluent Bit như sau:
pipeline:
inputs:
- name: forward
port: 24224
host: 0.0.0.0
tag: docker
- name: tail
path: /mnt/host/var/log/*.log
tag: nexus
outputs:
- name: stdout
match: '*'
- name: influxdb
match: '*'
host: influxdb
port: 8086
database: fluent
Thứ hai, tải xuống tệp [parsers.conf] từ kho chính thức, gắn nó vào container Fluent Bit và thay đổi tập lệnh khởi động như sau:
services:
fluentbit:
image: fluent/fluent-bit:2.2.3
container_name: fluentbit
volumes:
- type: bind
source: ./volumes/fluent-bit/
target: /fluent-bit/etc
- type: bind
source: /var/log/
target:/mnt/host/var/log/
ports:
- "24224 :24224"
- "24224 :24224/udp"
networks:
- fluentd
command:
- fluent-bit
- -c
- /fluent-bit/etc/fluent-bit.yaml
- -R
- /fluent-bit/etc/parsers.conf
Cuối cùng, trong tệp `docker-compose.yml`, bạn cần thêm cấu hình `logging` cho container và đảm bảo rằng nó chạy trong cùng một mạng Docker với container Fluent Bit. Dưới đây là ví dụ về cách sửa đổi container `telegraf`:
telegraf :
container_name : telegraf
# ...
networks :
– fluentd
logging :
driver : fluentd
Trong ngăn xếp Docker của tôi, Telegraf liên tục ghi nhật ký khi các chỉ số được thu thập/thêm vào bộ đệm và được ghi vào đầu ra đã cấu hình của nó — độ chi tiết đủ để bắt đầu. Sau khi thực hiện `docker-compose up --force-recreate – d telegraf`, tất cả nhật ký của các container sẽ được Fluent Bit ghi lại:
[125] 75371422f9f9 : [1679851058.000000000 , {"container_name"=>"/telegraf" ,"source"=>"stderr" ,"log"=>"2023-03-26T17 :16 :21Z D ! [outputs.influxdb] Buffer fullness : 0 / 10000 metrics" ,"container_id"=>"75371422f9f964ecc698d92d5b38a8f1338bb01c90b3aab55acf3e7982ae15f6"}]
[126] 75371422f9f9 : [1679851058.000000000 , {"container_name"=>"/telegraf" ,"source"=>"stderr" ,"log"=>"2023-03-26T17 :16 :31Z D ! [outputs.influxdb] Buffer fullness : 0 / 10000 metrics" ,"container_id"=>"75371422f9f964ecc698d92d5b38a8f1338bb01c90b3aab55acf3e7982ae15f6"}]
[127] 75371422f9f9 : [1679851058.000000000 , {"log"=>"2023-03-26T17 :16 :41Z D ! [outputs.influxdb] Buffer fullness : 0 / 10000 metrics","container_id"=>"75371422 f9 f964ecc698d92 d5 b38 a8 f1338 bb01 c90 b3 aa b55 ac f3 e7982 ae15 f6", "container_name"=>"/telegraf", "source"=>"stderr"}]
[128] 75371422 f9 f9:[1679851058 .0000000 ,{"container_id=>"7537142252944 ecc698 d92 d5 b38 a1... (và nhiều hơn nữa)}]
## Lưu trữ thông tin nhật ký trong InfluxDB
Mở rộng cấu hình cuối cùng là lưu trữ thông tin nhật ký vào InfluxDB. Điều này thật sự đơn giản — bạn chỉ cần cung cấp một InfluxDB đang chạy trên cùng máy tính, sau đó thêm đoạn cấu hình dưới đây vào tệp cấu hình Fluent Bit:
pipeline :
inputs :
# ...
outputs :
# ...
- name :influxdb
match :'*'
host :influxdb
port :8086
database :fluent
Sau khi khởi động thành công, các mục nhập từ hệ thống đăng nhập sẽ được lưu trữ trong InfluxDB với ba trường là `time`, `_seq` và `log`.
Kết luận về lợi ích của việc sử dụng Fluent Bit cho quản lý nhật ký
Fluent Bit giúp việc thu thập và quản lý nhật ký trở nên dễ dàng hơn. Với một tệp nhị phân nhẹ và tiêu thụ tài nguyên thấp, cùng với nhiều plugin, đây là một công cụ rất linh hoạt để ghi lại thông tin đầu vào, thêm metadata và chuyển tiếp nhật ký đến hệ thống khác. Trong bài viết này, bạn đã tìm hiểu sự khác biệt giữa FluentD và Fluent Bit, cách cài đặt Fluent Bit cũng như cấu hình cơ bản thông qua các tệp YAML. Với những ví dụ mã được cung cấp trong bài viết này, bạn có thể thu thập nhật ký từ máy chủ mà Fluent Bit đang chạy, đồng thời sử dụng nó làm trình điều khiển ghi nhật ký cho các container Docker được tạo ra bằng docker-compose. Những bài viết tiếp theo sẽ đi sâu vào cách sử dụng FluentD để thu thập các nguồn ghi chép khác nhau và cách trực quan hóa thông tin nhật ký.
Reference Articles
Fluentd là gì? So sánh Fluentd và Logstash
Fluentd và Fluent Bit là công cụ thu thập log từ nhiều nguồn khác nhau, như hạ tầng mạng, hệ điều hành, và các dịch vụ PaaS/SaaS.
Source: 200Lab
Related Discussions