Agent

agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。

部署说明

agent需要部署到所有要被监控的机器上,比如公司有10万台机器,那就要部署10万个agent。agent本身资源消耗很少,不用担心。

配置说明

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

  1. {
  2. "debug": true, # 控制一些debug信息的输出,生产环境通常设置为false
  3. "hostname": "", # agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的
  4. "ip": "", # agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置
  5. "plugin": {
  6. "enabled": false, # 默认不开启插件机制
  7. "dir": "./plugin", # 把放置插件脚本的git repo clone到这个目录
  8. "git": "https://github.com/open-falcon/plugin.git", # 放置插件脚本的git repo地址
  9. "logs": "./logs" # 插件执行的log,如果插件执行有问题,可以去这个目录看log
  10. },
  11. "heartbeat": {
  12. "enabled": true, # 此处enabled要设置为true
  13. "addr": "127.0.0.1:6030", # hbs的地址,端口是hbs的rpc端口
  14. "interval": 60, # 心跳周期,单位是秒
  15. "timeout": 1000 # 连接hbs的超时时间,单位是毫秒
  16. },
  17. "transfer": {
  18. "enabled": true,
  19. "addrs": [
  20. "127.0.0.1:18433"
  21. ], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
  22. "interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer
  23. "timeout": 1000 # 连接transfer的超时时间,单位是毫秒
  24. },
  25. "http": {
  26. "enabled": true, # 是否要监听http端口
  27. "listen": ":1988",
  28. "backdoor": false
  29. },
  30. "collector": {
  31. "ifacePrefix": ["eth", "em"], # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息
  32. "mountPoint": []
  33. },
  34. "default_tags": {
  35. },
  36. "ignore": { # 默认采集了200多个metric,可以通过ignore设置为不采集
  37. "cpu.busy": true,
  38. "df.bytes.free": true,
  39. "df.bytes.total": true,
  40. "df.bytes.used": true,
  41. "df.bytes.used.percent": true,
  42. "df.inodes.total": true,
  43. "df.inodes.free": true,
  44. "df.inodes.used": true,
  45. "df.inodes.used.percent": true,
  46. "mem.memtotal": true,
  47. "mem.memused": true,
  48. "mem.memused.percent": true,
  49. "mem.memfree": true,
  50. "mem.swaptotal": true,
  51. "mem.swapused": true,
  52. "mem.swapfree": true
  53. }
  54. }

进程管理

  1. ./open-falcon start agent 启动进程
  2. ./open-falcon stop agent 停止进程
  3. ./open-falcon monitor agent 查看日志

验证

看var目录下的log是否正常,或者浏览器访问其1988端口。另外agent提供了一个--check参数,可以检查agent是否可以正常跑在当前机器上

  1. ./falcon-agent --check

/v1/push接口

我们设计初衷是不希望用户直接连到Transfer发送数据,而是通过agent的/v1/push接口转发,接口使用范例:

  1. ts=`date +%s`; curl -X POST -d "[{\"metric\": \"metric.demo\", \"endpoint\": \"qd-open-falcon-judge01.hd\", \"timestamp\": $ts,\"step\": 60,\"value\": 9,\"counterType\": \"GAUGE\",\"tags\": \"project=falcon,module=judge\"}]" http://127.0.0.1:1988/v1/push

视频教程

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