open-falcon / falcon-plus

An open-source and enterprise-level monitoring system.
Apache License 2.0
7.26k stars 1.53k forks source link

[faq]宕机后报警滞后5分钟(nodata工作逻辑) #294

Closed kxst closed 6 years ago

kxst commented 6 years ago

当我关机后,http://10.13.144.110:6081/history/bx252.sae_longkang/agent.alive 接受到的 nodata 数据,滞后 2分钟才收到 agent 为 -1 的值,整个报警滞后将近 5分钟。描述如下:

  1. date && /sbin/shutdown -h now Tue Nov 21 15:37:23 CST 2017

37 左右我执行了关机

  1. http://10.13.144.110:6081/history/bx252.sae_longkang/agent.alive

1511250000 2017-11-21 15:40:00 -1 1511249940 2017-11-21 15:39:00 -1 1511249820 2017-11-21 15:37:00 1 1511249760 2017-11-21 15:36:00 1

39 才收集到 agent.alived == -1 的值

  1. 报警日志:
    2017-11-21 15:42:18 [ERROR] checkpoint: bx252.sae_longkang, server: 10.13.144.252, logger: 机器可能宕机 [测试-请忽略]

42 才发出报警。

机器宕机是 37,报警是 42,整个过程滞后 5 分钟。请问是哪里有问题呢?

mdh67899 commented 6 years ago

你看一下设置的nodata的数据补发规则和nodata打印的日志,如果nodata设置的是最新的两个数据没有上报就补发-1,那么就好解释了

你的两个-1值的显示的时间是是39和40分,但是nodata实际补发给transfer数据的时候真实时间是在41分和42分,这样你的alarm在就会在15:42报警

如果nodata的日志和我的描述符合,那就没问题了,这个是nodata本身的机制,可以好好看一下nodata的源码,我看过应该是这样进行数据补发处理的,具体代码忘掉了 @kxst

laiwei commented 6 years ago

nodata的工作逻辑是:通过api去graph中查询数据,如果没有查询到数据,则对这个counter补发设定后的值。

nodata的补发数据 和 用户正常上报数据,都是靠时钟来对齐的,因此在nodata的代码中,强行延迟了一到两个周期,以免造成 nodata 补发的值先到达graph,这样就会造成正常的值失效。

image

所以:

  1. 37分23秒的时候关机,39分的时候收到 -1,是正常的;
  2. 39分、40分、41分 都是-1,42分的时候收到报警,可能是你配置的策略中是连续三次满足条件才报警;

@kxst

kxst commented 6 years ago

谢谢