fluent-bit很好的与k8s 融合 ,离不开本身的设计。fluent-bit采用配置插件的方式对输入、过滤、分析、输出进行实现,这使得与k8s集成时,只需要采用configmap(crd中使用的secret)就可以完成原有的功能。
在fluent-bit operator(接下来简称fbo)中并没有直接使用k8s原生 配置 资源,而是使用了自定义CRD,接下来让我们一一分析。
每个插件对应一种日志收集功能。
type InputSpec struct {
// 输入别名
Alias string json:"alias,omitempty"
// Dummy defines Dummy Input configuration.
Dummy *input.Dummy json:"dummy,omitempty"
// tail收集配置
Tail *input.Tail json:"tail,omitempty"
// Systemd收集配置
Systemd *input.Systemd json:"systemd,omitempty"
}
// 监控文本文件
type Tail struct {
// 读取文件缓冲大小
BufferChunkSize string `json:"bufferChunkSize,omitempty"`
// 缓冲最大
BufferMaxSize string `json:"bufferMaxSize,omitempty"`
// 日志路径 比如/var/log/containers/*.log
Path string `json:"path,omitempty"`
// 排除文件
// e.g: exclude_path=*.gz,*.zip
ExcludePath string `json:"excludePath,omitempty"`
// 刷新监视文件列表的时间间隔,以秒为单位。
RefreshIntervalSeconds *int64 `json:"refreshIntervalSeconds,omitempty"`
RotateWaitSeconds *int64 `json:"rotateWaitSeconds,omitempty"`
// 根据日志时间检索,仅当Parser能够解析出time后使用
IgnoreOlder string `json:"ignoredOlder,omitempty"`
// 监视文件缓存已满后是否结束
SkipLongLines *bool `json:"skipLongLines,omitempty"`
// 指定数据库文件以跟踪监控的文件和偏移量。 比如/tail/pos.db
DB string `json:"db,omitempty"`
// tail使用内存量,如果达到峰值则暂停等恢复
MemBufLimit string `json:"memBufLimit,omitempty"`
// 指定解析器 例如 docker
Parser string `json:"parser,omitempty"`
// 未应用解析器时,为记录指定key值
Key string `json:"key,omitempty"`
// 指定日志记录的tag
// E.g. kube.<namespace_name>.<pod_name>.<container_name>
Tag string `json:"tag,omitempty"`
}
对input传来的日志记录进行解析格式化。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删