Judge

Judge用于告警判断,agent将数据push给Transfer,Transfer不但会转发给Graph组件来绘图,还会转发给Judge用于判断是否触发告警。

设计初衷

因为监控系统数据量比较大,一台机器显然是搞不定的,所以必须要有个数据分片方案。Transfer通过一致性哈希来分片,每个Judge就只需要处理一小部分数据就可以了。所以判断告警的功能不能放在直接的数据接收端:Transfer,而应该放到Transfer后面的组件里。

源码安装

  1. cd $GOPATH/src/github.com/open-falcon/judge
  2. go get ./...
  3. ./control build
  4. ./control pack

最后一步会pack出一个tar.gz的包,拿着这个包去部署即可。

部署说明

Judge监听了一个http端口,提供了一个http接口:/count,访问之,可以得悉当前Judge实例处理了多少数据量。推荐的做法是一个Judge实例处理50万~100万数据,用个5G~10G内存,如果所用物理机内存比较大,比如有128G,可以在一个物理机上部署多个Judge实例。

配置说明

配置文件必须叫cfg.json,可以基于cfg.example.json修改

  1. {
  2. "debug": true,
  3. "debugHost": "nil",
  4. "remain": 11,
  5. "http": {
  6. "enabled": true,
  7. "listen": "0.0.0.0:6081"
  8. },
  9. "rpc": {
  10. "enabled": true,
  11. "listen": "0.0.0.0:6080"
  12. },
  13. "hbs": {
  14. "servers": ["127.0.0.1:6030"], # hbs最好放到lvs vip后面,所以此处最好配置为vip:port
  15. "timeout": 300,
  16. "interval": 60
  17. },
  18. "alarm": {
  19. "enabled": true,
  20. "minInterval": 300, # 连续两个报警之间至少相隔的秒数,维持默认即可
  21. "queuePattern": "event:p%v",
  22. "redis": {
  23. "dsn": "127.0.0.1:6379", # 与alarm、sender使用一个redis
  24. "maxIdle": 5,
  25. "connTimeout": 5000,
  26. "readTimeout": 5000,
  27. "writeTimeout": 5000
  28. }
  29. }
  30. }

remain这个配置详细解释一下:
remain指定了judge内存中针对某个数据存多少个点,比如host01这个机器的cpu.idle的值在内存中最多存多少个,配置报警的时候比如all(#3),这个#后面的数字不能超过remain-1,一般维持默认就够用了

进程管理

我们提供了一个control脚本来完成常用操作

  1. ./control start 启动进程
  2. ./control stop 停止进程
  3. ./control restart 重启进程
  4. ./control status 查看进程状态
  5. ./control tail tail -f的方式查看var/app.log

验证

访问/health接口验证Judge是否工作正常。

  1. curl 127.0.0.1:6081/health

另外就是查看Judge的log,log在var目录下

视频教程

为judge模块录制了一个视频,做了源码级解读:http://www.jikexueyuan.com/course/1850.html