falcon-agent 超时造成数据图频繁断点bug

问题描述

接到易超的反馈 之前用falcon数据做的几张报表屡次出现断图详见:

image.png

经过排查,发现该机器为windows服务器

排查过程与问题确认

排查方向为:

  • tcp连接数过多
    netstat 查看 time_wait 的连接几乎没有
  • 内存不足
    从zabbix的监控数据来看,内存使用率在30%左右
  • 网络不稳定
    无丢包
  • 重启服务
    还是断图

但是经过观察,发现zabbix并未出现断图,应该是falcon agent本身的问题

检查falcon-agent windows版源码

在排查过程中发现整个agent 有用的日志极少,而且未做切割,阅读起来极其困难

修改源码,丰富日志

通过对源码的阅读,最终定位在采集指标的那一段代码,最终定位在:buildmapper函数,发现是TcpipMetrics()函数阻塞了整个agent的日志上报
具体可以看:

image.png

为什么会阻塞?

因为该函数需要调用windows的wmi 才能获取到数据,而windows的wmi组件经常会抽风,比如我们在用在通虚拟机时会调用该模块,但是经常会超时,导致虚机开通失败

解决方案

既然无法绕过,那可以修改其机制,而且换一个角度想,如果下次是其他的原因导致某个指标长时间未返回,是不是也会同步阻塞掉其他指标的上报?
修改源码,所有函数都并发执行即可,具体见代码

funcs.go

//var Mappers []FuncsAndInterval
var Mappers = []func() []*model.MetricValue{
    AgentMetrics,
    CpuMetrics, //
    NetMetrics, //
    MemMetrics,//
    DeviceMetrics,//

    DiskIOMetrics,
    TcpipMetrics,
    PortMetrics,
    ProcMetrics,
    NetstatSummaryMetrics,

    iisMetrics,
    mssqlMetrics,
}

image.png

仓储地址:

https://github.com/peng19940915/windows-agent

你可能感兴趣的:(falcon-agent 超时造成数据图频繁断点bug)