【友云音】【问题排查记录-2】Agent成环问题

  • Post author:
  • Post category:其他


问题现象

agent停止,数据上传异常。查询业务数据后发现,业务数据也异常


问题分析

在10.1.228.172的agent目录下的在httpchanle.log中发现,这个机器的agent自发现把10.1.228.176当成了跳板机。

2019-06-18 21:40:38 ReceiverRunable - [ INFO ] 设置自动发现的跳板机IP= 10.1.228.176 
2019-06-18 21:40:39 SendRunable - [ INFO ] 发送ping信号 
2019-06-18 21:40:39 ReceiverRunable - [ INFO ] 接收到10.1.228.172发送的ping信号 
2019-06-18 21:40:39 ReceiverRunable - [ INFO ] 接收到10.1.228.176发送的pong信号

又看了下errorCollection.log,确认了数据确实再向10.1.228.176,发送数据。

2019-06-18 21:46:14 HttpClientUtil - [ ERROR ]  url = https://10.1.228.176:44444/send/api/metric
2019-06-18 21:46:14 ForwardEventSink - [ ERROR ]  Sink send data happends IOException !!
java.io.IOException: Timeout waiting for connection from pool
	at ycm.agent.util.send.HttpClientUtil.sendPost(HttpClientUtil.java:186)
	at ycm.agent.util.send.HttpClientUtil.send(HttpClientUtil.java:110)
	at ycm.agent.util.send.SinkTool.sendPost(SinkTool.java:39)
	at ycm.agent.appmoni.trace.ForwardEventSink.sendTraceData(ForwardEventSink.java:214)
	at ycm.agent.appmoni.trace.ForwardEventSink.dealEventData(ForwardEventSink.java:176)
	at ycm.agent.appmoni.trace.ForwardEventSink.process(ForwardEventSink.java:67)
	at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)
	at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:148)
	at java.lang.Thread.run(Thread.java:662)

去10.1.228.176看同样日志发现,这台机器的agent把数据发往了10.1.228.173上发送数据。在6月18号晚,云端新架构上线,agent自己连接不到这样所有的agent都这么做,使agent行程了闭环,数据在内网发不出来。

代码逻辑

当有两台以上的服务器能连公网的情况下:

2018年6月~2018年11月这个版本的agent的自发现跳板机逻辑是:如果当前agent检测agent和云端不能通信,那么他就会实时的去找在同一网段的别的机器的agent,认为他是跳板机,把数据发向他。

新版探针,也有这个自发现跳板机的功能,但是加了一层判断,每隔几分钟就检测本agent和云端的通信状况,如果可以通信,就用本agent把数据发往云端,进而避免了成环解不了套的局面。

解决办法

临时解决

重启其中一台agent,让环打开,各自把数据发往云端。

永久解决

更换最新版的探针



版权声明:本文为zfr629原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。