log-pilot icon indicating copy to clipboard operation
log-pilot copied to clipboard

修复filebeat registry持续增长不释放的问题 #253

Open yuline opened this issue 5 years ago • 8 comments

issue:https://github.com/AliyunContainerService/log-pilot/issues/253

yuline avatar May 09 '20 04:05 yuline

有个疑问,state信息放在了filebeat内存中,通过ioutil.WriteFile(FILEBEAT_REGISTRY, nb, 0600)能成功吗?

不会在filebeat自身调用func (r *Registrar) flushRegistry() {的时候覆盖吗?

silenceper avatar May 14 '20 08:05 silenceper

https://github.com/elastic/beats/blob/master/filebeat/registrar/registrar.go#L372-L408

func (r *Registrar) flushRegistry() {
	if err := r.writeRegistry(); err != nil {
		logp.Err("Writing of registry returned error: %v. Continuing...", err)
	}


	if r.out != nil {
		r.out.Published(r.bufferedStateUpdates)
	}
	r.bufferedStateUpdates = 0
}


// writeRegistry writes the new json registry file to disk.
func (r *Registrar) writeRegistry() error {
	// First clean up states
	r.gcStates()
	states := r.states.GetStates()
	statesCurrent.Set(int64(len(states)))


	registryWrites.Inc()


	tempfile, err := writeTmpFile(r.registryFile, r.fileMode, states)
	if err != nil {
		registryFails.Inc()
		return err
	}


	err = helper.SafeFileRotate(r.registryFile, tempfile)
	if err != nil {
		registryFails.Inc()
		return err
	}


	logp.Debug("registrar", "Registry file updated. %d states written.", len(states))
	registrySuccess.Inc()


	return nil
}

如果是这样的话,我想到的办法是改filebeat代码,去处理不存在文件的state。

silenceper avatar May 14 '20 09:05 silenceper

有个疑问,state信息放在了filebeat内存中,通过ioutil.WriteFile(FILEBEAT_REGISTRY, nb, 0600)能成功吗?

不会在filebeat自身调用func (r *Registrar) flushRegistry() {的时候覆盖吗?

在重写registry前停止filebeat,重写后启动filebeat :)

// 对filebeat进行container释放清理操作
p.Stop()   //停止filebeat
<-p.fbExit //等待filebeat退出
defer func() {
	time.Sleep(2 * time.Second)
	p.Start()
	time.Sleep(2 * time.Second)
}()

yuline avatar May 15 '20 09:05 yuline

请问一下,这个改动是否在生产环境上跑起来了?我这边想把这个改动加上去

恩,已经在生产环境运行了四五个月了

yuline avatar Jun 15 '20 01:06 yuline

请问一下,这个改动是否在生产环境上跑起来了?我这边想把这个改动加上去

恩,已经在生产环境运行了四五个月了

还有哦 1,用的FILEBEAT_VERSION是否也是6.1.1-3?也就是是否升级了filebeat 2,filebeat.tpl和conf.filebeat里的配置是否有做哪些优化改动? 我这边在测试上也跑了几天,正在考虑还有哪些需要优化的地方,再切到生产

life123 avatar Jun 15 '20 01:06 life123

请问一下,这个改动是否在生产环境上跑起来了?我这边想把这个改动加上去

恩,已经在生产环境运行了四五个月了

阿里是不是自己魔改了 filebeat-6.1.1-3 ?我尝试使用 elasitc官方的 filebeat 发现无法自动按照业务创建索引。。

totemofwolf avatar Jul 02 '20 09:07 totemofwolf

请问一下,这个改动是否在生产环境上跑起来了?我这边想把这个改动加上去

恩,已经在生产环境运行了四五个月了

还有哦 1,用的FILEBEAT_VERSION是否也是6.1.1-3?也就是是否升级了filebeat 2,filebeat.tpl和conf.filebeat里的配置是否有做哪些优化改动? 我这边在测试上也跑了几天,正在考虑还有哪些需要优化的地方,再切到生产

我们没有改动filebeat版本和其他配置。

yuline avatar Jul 05 '20 06:07 yuline

请问一下,这个改动是否在生产环境上跑起来了?我这边想把这个改动加上去

恩,已经在生产环境运行了四五个月了

阿里是不是自己魔改了 filebeat-6.1.1-3 ?我尝试使用 elasitc官方的 filebeat 发现无法自动按照业务创建索引。。

索引是logstash创建的吧。

yuline avatar Aug 13 '20 07:08 yuline