agent

agent包含两部分上报信息:其一是上报心跳到HBS,其二是上报metrics到transfer。

main.go在根目录下,是程序的入口。主函数依次创建一系列协程。除了在main中显示通过go创建的外,其他均在cron包中创建。

main函数

  1. 初始化相关配置。
  2. 上报心跳到HBS组件。
  3. 上报metrics到Transfer组件。
  4. 开启http接口服务,端口是1988,对插件暴露的上报接口,收集其他插件上报来的metric,统一由agent上报给transfer。
  5. 通过select{},阻塞当前main函数,来使主函数不退出,可以一直在后台运行。

上报心跳数据

  1. 默认通过heartbeat.addr上报心跳到HBS组件,默认是6030端口。
  2. 使用rpc,上报主机存活信息cron.ReportAgentStatus()。
  3. 同步进程端口,cron.SyncBuiltinMetrics()
  4. 同步监控插件,cron.SyncMinePlugins()
  5. 同步信任ip,cron.SyncTrustableIps()

上报metrics

  1. funcs.BuildMappers()函数,创建Mappers,包含四个FuncsAndInterval机器负载信息、硬件信息、服务器监控信息、开源软件监控指标。即Mappers中已经规定包含四个FuncsAndInterval,每个FuncsAndInterval中有一个Fs,Fs是一个model.MetricValue结构体数组指针,四个Fs内容如下:

    a、AgentMetrics,CpuMetrics,NetMetrics,KernelMetrics,LoadAvgMetrics,MemMetrics,DiskIOMetrics,IOStatsMetrics,NetstatMetrics,ProcMetrics,UdpMetrics

    b、DeviceMetrics

    c、PortMetrics,SocketStatSummaryMetrics

    d、DuMetrics

  2. Metrics主要有两种类型,GAUGE和COUNTER,前者为瞬时指标,后者为累加数据。

  3. 通过cron.collect()函数定时收集上述metrics,再通过g.SendToTransfer()函数上报给transfer组件。默认通过配置文件中的transfer.addrs获取组件ip和端口,默认8843端口。
  4. 使用简单的随机策略,随机获取一组transfer中的一个.因此agent可以保证transfer集群的HA。上报成功,break;否则继续随机下一个transfer上报

https://github.com/open-falcon

https://book.open-falcon.org/zh_0_2/