前言
telegraf是infuxdb公司开源出来的一个基于插件机制的收集metrics的项目。整个架构和elastic公司的日志收集系统极其类似,具备良好的扩展性。与现在流行的各种exporter+promethues监控方案相比:
- 大致具备良好的可扩展性。很容易增加自己的处理逻辑,在input,output,process,filter等环境定制自己专属的插件。
- 统一了各种exporter,减少了部署各种exporter的工作量和维护成本。
目前telegraf改造工作基本上是两大部分:
- 增加了一些telegraf不支持的插件,比如虚拟化(kvm,vmware等),数据库(oracle),k8s和openstack等input插件。
- telegraf是基于配置文件的,所以会有两个问题,很难做分布式和无停机动态调度input任务。所以我们的工作就是将获取配置接口化,所有的配置文件来源于统一配置中心。然后就是改造无停机动态调度input。
在改造改造无停机动态调度input就涉及到golang多协程精确控制的问题。
一些golang常用并发手段
sync包下WaitGroup
具体事例:
var wg sync.WaitGroup
wg.Add(len(a.Config.Outputs))
for _, o := range a.Config.Outputs {
go func(output *m

最低0.47元/天 解锁文章
317

被折叠的 条评论
为什么被折叠?



