輕量級日誌收集轉發 | fluent-bit外部插件詳解(三)

"本文主要對fluent-bit 1.3版本外部插件做詳細介紹,關注後回覆【pdf】獲得文檔"

1、回顧

隨着集羣規模不斷擴大,日誌收集問題將一直縈繞在我們耳邊,前段時間我用六篇文章安利了使用fluentd及fluent-bit好處,具體可以參考如下鏈接:

下面我就直接介紹fluent-bit整體收集架構和插件,如果對整體有不理解的部分,可以參考如上鍊接。

2、外部輸入插件

fluent-bit可以收集事件、日誌、度量指標等數據,它可以通過一個網絡接口,無線電硬件或一些內置的度量。以下是各個版本支持數據收集表格:

1.0版本

1.1版本

1.2版本

1.3版本

名稱

標題

描述

X

X

collected

Collected

偵聽來自Collected的UDP數據包。

CPU

CPU使用率

測量CPU的總使用率

disk

磁盤使用率

測量磁盤IO

dummy

Dummy

生成虛擬事件

exec

Exec

執行外部程序並收集事件日誌。

forward

Forward

fluentd轉發協議

head

Head

讀取文件的前幾行

health

health

檢查TCP服務的健康狀況。

kmsg

Kernel Log Buffer

讀取Linux內核日誌緩衝區消息。

MEM

內存使用情況

測量系統上使用的內存總量。

MQTT

MQTT

啓動MQTT服務器並接收發布消息。

netif

網絡流量

測量網絡流量。

proc

處理

檢查進程的運行狀況。

random

隨機

生成隨機樣本

serial

串行事件

從串行接口讀取數據信息。

stdin

標準輸入

從標準輸入讀取數據。

syslog

syslog

從Unix套接字讀取syslog消息。

systemd

Systemd

從Systemd / Journaled讀取日誌。

tail

tail

從文件末尾讀取數據

TCP

TCP

通過tcp監聽json數據

X

X

thermal

Thermal

測量系統溫度。

3、外部輸出插件

以下是fluent-bit可用的輸出插件,具體見表格:

1.0版本

1.1版本

1.2版本

1.3版本

name

title

describtion

azure

Azure日誌分析

將記錄吸收到Azure Log Analytics中

bigquery

bigquery

將記錄提取到Google BigQuery中

counter

counter

簡單記錄計數器。

X

datadog

datadog

提取日誌到Datadog。

es

es

將記錄刷新到Elasticsearch服務器。

file

文件

將記錄刷新到文件。

flowcounter

FlowCounter

計數記錄。

forward

forward

轉發協議

http

HTTP

將記錄刷新到HTTP端點。

influxdb

InfluxDB

將記錄刷新到InfluxDB時間序列數據庫。

kafaka

kafaka

將記錄刷新到Apache Kafka

kafaka-rest

Kafka REST代理

將記錄刷新到Kafka REST代理服務器。

stackdriver

Google Stackdriver記錄

將記錄刷新到Google Stackdriver Logging服務。

stdout

標準輸出

將記錄刷新到標準輸出。

splunk

Splunk

將記錄刷新到Splunk Enterprise服務

tcp

TCP和TLS

將記錄刷新到TCP服務器。

td

td

將記錄刷新到雲服務以進行分析。

nats

nats

將記錄刷新到NATS服務器。

null

空值

不進行事件處理

4、使用示例

4.1、 tail插件(輸入)

輸入插件tail允許監視一個或多個文本文件。它具有類似於tail -f shell命令的行爲。該插件讀取路徑模式中的每個匹配文件,併爲找到的每個新行(用\ n分隔)生成一條新記錄。(可選)可以使用數據庫文件,以便插件可以具有跟蹤文件的歷史記錄和偏移狀態,這對於重新啓動服務時恢復狀態非常有用。

配置參數:

該插件支持以下參數配置,如下表所示:

Key

Description

Default

Buffer_Chunk_Size

設置初始緩衝區大小以讀取文件數據。該值也用於增加緩衝區大小。該值必須符合“ 單位大小”規範。

32k

Buffer_Max_Size

設置每個受監視文件的緩衝區大小的限制。當需要增加緩衝區時(例如:很長的行),該值用於限制內存緩衝區可以增長多少。如果讀取的文件超過此限制,將從監視的文件列表中刪除該文件。該值必須符合“ 單位大小”規範。

Buffer_Chunk_Size

Path

通過使用通用通配符指定一個或多個特定日誌文件的模式。


Path_Key

如果啓用,它將附加受監視文件的名稱作爲記錄的一部分。分配的值成爲映射中的鍵。


Exclude_Path

設置一個或多個用逗號分隔的外殼模式,以排除符合特定條件的文件,例如:exclude_path = *.gz,*.zip


Refresh_Interval

刷新監視文件列表的時間間隔(以秒爲單位)。

60s

Rotate_Wait

指定在刷新某些掛起的數據時,以秒爲單位監視文件一次輪轉所需的額外時間。

5s

Ignore_Older

忽略比該時間舊的記錄(以秒爲單位)。支持m,h,d(分鐘,小時,天)語法。默認行爲是從指定文件中讀取所有記錄。僅在指定了解析器並且可以解析記錄時間時纔可用。


Skip_Long_Lines

當受監視的文件由於行很長(Buffer_Max_Size)而達到緩衝區容量時,默認行爲是停止監視該文件。Skip_Long_Lines會更改該行爲,並指示Fluent Bit跳過長行並繼續處理適合緩衝區大小的其他行。

DB

指定數據庫文件以跟蹤受監視的文件和偏移量。


DB.Sync

設置默認的同步(I / O)方法。值:Extra,Full,Normal,Off。此標誌影響內部SQLite引擎與磁盤同步的方式

full

Mem_Buf_Limit

設置將數據附加到引擎時,Tail插件可以使用的內存限制。如果達到極限,它將被暫停;刷新數據後,它將恢復。


Parser

指定解析器的名稱,以將其解析爲結構化消息。


Key

當消息是非結構化消息(未應用解析器)時,它將作爲字符串附加在鍵名log下。此選項允許爲該鍵定義替代名稱。

log

Tag

設置一個標籤(帶有正則表達式提取字段),該標籤將放置在讀取的行上。例如kube.<namespace_name>.<pod_name>.<container_name>


Tag_Regex

設置正則表達式以從文件中提取字段。例如(?<pod_name>[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?<namespace_name>[^_]+)_(?<container_name>.+)-


注意,如果未指定數據庫參數db,則默認情況下,插件將從頭開始讀取每個目標文件。

Docker日誌收集模式配置參數:

由於行長度限制,通過docker模式收集docker守護進程產生json日誌,如果需要使用此模式。需要解析器配置tail插件,然後啓用docker模式。

Key

Description

Default

Docker

如果啓用,該插件將重新組合已拆分的Docker日誌行,然後將其傳遞至如上配置的任何解析器。此模式不能與多行同時使用。

Docker_Mode_Flush

等待時間(以秒爲單位),以刷新未完成的數據行。

4

入門

爲了尾隨文本或日誌文件,您可以從命令行或通過配置文件運行插件。

命令行:

$ fluent-bit -i tail -p path=/var/log/syslog -o stdout

配置:

[INPUT]
    Name        tail
    Path        /var/log/syslog


[OUTPUT]
    Name   stdout
    Match  *

文件獲取狀態保持:

該tail插件功能輸入保存跟蹤文件的狀態,強烈建議您啓用此。爲此,可以使用db屬性,例如:

 fluent-bit -i tail -p path=/var/log/syslog -p db=/path/to/logs.db -o stdout

4.2、file文件介紹(輸出)

配置參數:

該插件支持以下配置參數:

Key

Description

Path

輸出文件路徑。如果未設置,則文件名將爲標籤名。

format

文件內容的格式。另請參閱格式部分。默認值:out_file。

格式:

輸出時間,標籤和json記錄,如下所示:

tag: [time, {"key1":"value1", "key2":"value2", "key3":"value3"}]

將記錄輸出爲JSON(沒有其他和屬性),如下所示:

{"key1":"value1", "key2":"value2", "key3":"value3"}

將記錄輸出爲CSV,CSV支持其他配置參數,如下所示:

Key

Description

Delimiter

用於分隔每個數據的字符。默認值:“,”

time[delimiter]"value1"[delimiter]"value2"[delimiter]"value3"

模板格式

使用自定義格式模板輸出記錄配置參數如下:

Key

Description

Template

格式字符串。默認值:“ {time} {message}”

例如,如果您按如下模板所示設置配置:

[INPUT]
  Name mem


[OUTPUT]
  Name file
  Format template
  Template {time} used={Mem.used} free={Mem.free} total={Mem.total}

輸出:

1564462620.000254 used=1045448 free=31760160 total=32805608

入門介紹:

您可以從命令行或通過配置文件運行插件;

命令行模式收集cpu運行指標信息:

fluent-bit -i cpu -o file -p path=output.txt

配置文件運行:

[INPUT]
    Name cpu
    Tag  cpu


[OUTPUT]
    Name file
    Match *
    Path output.txt

5、總結

本文主要介紹了各個版本插件支持進行列舉以及對部分插件的使用做了簡單介紹,如果對上述運行有疑問的地方,可以參考前幾節的介紹;下文我會繼續分享fluent-bit結合docker和Kubernetes使用介紹,敬請期待。關注、公衆號後臺回覆【pdf】可獲得詳細文檔。

推薦閱讀:


Kubernetes排障指南

從零搭建Kubernetes下的nignx和tomcat

Kubernetes中如何使用ClusterDNS進行服務發現?

Kubernetes入門培訓(內含PPT)

從Ice到Kubernetes容器技術,微服務架構經歷了什麼?


原創不易,隨手關注或者”在看“,誠摯感謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章