filebeat 启动流程

2024-02-29 19:48
文章标签 流程 启动 filebeat

本文主要是介绍filebeat 启动流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为各种各样的原因,好久没有写博客了,还是希望能够坚持下来

讲解一下filebeat的启动流程吧,核心功能先不描述了0.0


filebeat启动入口在main.go文件内, cmd.RootCmd.Execute()启动filebeat;

func main() {if err := cmd.RootCmd.Execute(); err != nil {os.Exit(1)}
}

filebeat/cmd/root.go文件内,加载&初始化相关的配置,以及构建filebeat对象。下面代码里的beater.New方法会构建了filebeat对象。GenRootCmdWithSettings方法内会构建启动filebeat相关命令。

var RootCmd *cmd.BeatsRootCmdfunc init() {...RootCmd = cmd.GenRootCmdWithSettings(beater.New, instance.Settings{RunFlags: runFlags, Name: Name})...
}

GenRootCmdWithSettings函数在filebeat/libbeat/cmd/root.go文件内。此函数内会调用filebeat/libbeat/cmd/run.go文件内的func genRunCmd(settings instance.Settings, beatCreator beat.Creator) *cobra.Command方法。

func genRunCmd(settings instance.Settings, beatCreator beat.Creator) *cobra.Command {name := settings.NamerunCmd := cobra.Command{Use:   "run",Short: "Run " + name,Run: func(cmd *cobra.Command, args []string) {err := instance.Run(settings, beatCreator)if err != nil {os.Exit(1)}},}...
}

根据方法名字就能关注到重点

instance.Run(settings, beatCreator)

Run方法内会构建Beat对象,并调用launch方法。ps: go里面对象的命名真是蛋疼

b, err := NewBeat(name, idxPrefix, version)
...
return b.launch(settings, bt)

launch方法内又构建了Beater对象(Beater是个接口),并且在最后调用了Beater接口的Run方法启动。这个接口有多个实现,但是我们这里只需要关注一个,文件filebeat/beater/filebeat.go文件内的Run方法,这里就是启动filebeat的实现。

func (b *Beat) launch(settings Settings, bt beat.Creator) error {...beater, err := b.createBeater(bt)...return beater.Run(&b.Beat)
}

Run方法内,会构建一个crawler对象,此对象用来采集数据,工作原理其实是对Inputs的包装,Inputs就是filebeat官网介绍的核心组件之一。

// Run allows the beater to be run as a beat.
func (fb *Filebeat) Run(b *beat.Beat) error {...crawler, err := crawler.New(channel.NewOutletFactory(outDone, wgEvents).Create,config.Inputs,b.Info.Version,fb.done,*once)if err != nil {logp.Err("Could not init crawler: %v", err)return err}...err = crawler.Start(b.Publisher, registrar, config.ConfigInput, config.ConfigModules, pipelineLoaderFactory, config.OverwritePipelines)if err != nil {crawler.Stop()return err}...
}

至此整个filebeat启动流程基本清晰了。

这篇关于filebeat 启动流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/759875

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

Linux下在线安装启动VNC教程

《Linux下在线安装启动VNC教程》本文指导在CentOS7上在线安装VNC,包含安装、配置密码、启动/停止、清理重启步骤及注意事项,强调需安装VNC桌面以避免黑屏,并解决端口冲突和目录权限问题... 目录描述安装VNC安装 VNC 桌面可能遇到的问题总结描js述linux中的VNC就类似于Window

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级