功能

采集数据,解析数据,上报数据至transfer

  • 基本涵盖了系统层面监控指标,直接将数据转换为metricValue形式,上报至transfer

  • 支持插件采集,代码插件放可受git管理,放置在plugin目录,从HBS中获取执行周期,版本等

  • 支持数据直接上报,提供HTTPAPI,将收到的数据转换为metricValue形式,上报至transfer

  • 支持HTTP API对自身控制

配置文件:

  • 设置采集数据的脚本更新地址

  • 指定Agent的上游模块的地址,包括heartbeat和transfer模块

  • agent开放的HTTP端口

  • 采集数据的过滤条件


{ "debug": true, # 控制一些debug信息的输出,生产环境通常设置为false "hostname": "", # agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的 "ip": "", # agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置 "plugin": { "enabled": false, # 默认不开启插件机制 "dir": "./plugin", # 把放置插件脚本的git repo clone到这个目录 "git": "https://github.com/open-falcon/plugin.git", # 放置插件脚本的git repo地址 "logs": "./logs" # 插件执行的log,如果插件执行有问题,可以去这个目录看log }, "heartbeat": { "enabled": true, # 此处enabled要设置为true "addr": "127.0.0.1:6030", # hbs的地址,端口是hbs的rpc端口 "interval": 60, # 心跳周期,单位是秒 "timeout": 1000 # 连接hbs的超时时间,单位是毫秒 }, "transfer": { "enabled": true, # 此处enabled要设置为true "addrs": [ "127.0.0.1:8433", "127.0.0.1:8433" ], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA "interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer "timeout": 1000 # 连接transfer的超时时间,单位是毫秒 }, "http": { "enabled": true, # 是否要监听http端口 "listen": ":1988" # 如果监听的话,监听的地址 }, "collector": { "ifacePrefix": ["eth", "em"] # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息 }, "ignore": { # 默认采集了200多个metric,可以通过ignore设置为不采集 "cpu.busy": true, "mem.swapfree": true } }

agent 和HBS 通信

每隔一分钟,Agent会与HBS进行一系列RPC通信,上报自己的状态,并且获取一些自己需要的数据。

  • 向HBS汇报的数据:

    • HostName

    • IP (cfg中的IP,或者本机的IP)

    • Agent版本

    • Plugin版本(脚本所在git目录的版本,git rev-parse HEAD)

  • 从HBS获取的数据:

    • Plugin信息,需要以什么频率运行什么脚本

    • 内置采集信息

      • URL_CHECK_HEALTH,需要定期检查哪些URL

      • NET_PORT_LISTEN,需要检查哪些端口的存活

      • DU_BS,需要检查哪些文件夹的占用空间

      • PROC_NUM,需要检查哪些进程的存活

    • 信任的IP列表(执行远程命令时需要检查)

agent HTTP API

提供如下功能:

  • Admin命令

    • Agent进程退出

    • 重新加载配置

    • 返回工作目录

    • 返回信任的IP列表)

    • 返回目前采集的数据CPU、磁盘、IO、内存……

  • Plugin(使用git同步远端的脚本)

  • 接收其它模块Push数据

  • 运行任意用户命令

    运行系统命令:date, uptime, loadavg


http://127.0.0.1:1988/exit http://127.0.0.1:1988/config/reload http://127.0.0.1:1988/workdir http://127.0.0.1:1988/ips http://127.0.0.1:1988/proc/cpu/num http://127.0.0.1:1988/proc/cpu/mhz http://127.0.0.1:1988/page/cpu/usage http://127.0.0.1:1988/proc/cpu/usage http://127.0.0.1:1988/page/df http://127.0.0.1:1988/health http://127.0.0.1:1988/version http://127.0.0.1:1988/page/diskio http://127.0.0.1:1988/proc/kernel/hostname http://127.0.0.1:1988/proc/kernel/maxproc http://127.0.0.1:1988/proc/kernel/maxfiles http://127.0.0.1:1988/proc/kernel/version http://127.0.0.1:1988/page/memory http://127.0.0.1:1988/proc/memory http://127.0.0.1:1988/ http://127.0.0.1:1988/plugin/update http://127.0.0.1:1988/plugin/reset http://127.0.0.1:1988/plugins http://127.0.0.1:1988/v1/push http://127.0.0.1:1988/system/date http://127.0.0.1:1988/page/system/uptime http://127.0.0.1:1988/proc/system/uptime http://127.0.0.1:1988/page/system/loadavg http://127.0.0.1:1988/proc/system/loadavg

上报的数据格式:

通过在transfer 的8433端口抓包拿到了agent上报数据的格式


{"method":"Transfer.Update","params":[[{"endpoint":"open-falcon-1","metric":"rate","value":0.016666596005299582,"step":60,"counterType":"GAUGE","tags":"name=pfc.push.cnt","timestamp":1491879 120},{"endpoint":"open-falcon-1","metric":"sum","value":76,"step":60,"counterType":"GAUGE","tags":"name=pfc.push.cnt","timestamp":1491879120},{"endpoint":"open-falcon-1","metric":"value","value":4,"st ep":60,"counterType":"GAUGE","tags":"name=pfc.push.ms","timestamp":1491879120},{"endpoint":"open-falcon-1","metric":"value","value":4,"step":60,"counterType":"GAUGE","tags":"name=pfc.push.size","times tamp":1491879120}]],"id":23}

其中,Step和CounterType中RRD中的概念。Step就是数据采集的间隔,单位为秒。而CounterType分为五个类型,分别如下表:

  • COUNTER: 必须是递增的,除非是计数器溢出(overflows)。在这种情况下,RRDtool 会自动修改收到的值。例如网络接口流量、收到的packets 数量都属于这一类型。

  • DERIVE: 和 COUNTER 类似。但可以是递增,也可以递减,或者一会增加一会儿减少。

  • ABSOLUTE: ABSOLUTE 比较特殊,它每次都假定前一个interval的值是0,再计算平均值。

  • GAUGE: GAGUE 和上面三种不同,它没有“平均”的概念,RRDtool 收到值之后字节存入 RRA 中。

  • COMPUTE: COMPUTE 比较特殊,它并不接受输入,它的定义是一个表达式,能够引用其他DS并自动计算出某个值。

agent 和transfer底层链接

  • agent和transfer 之间数据交互采用长连接方式

  • agent刚启动之后,不会立即和transfer建立链接,而是在第一次上报数据的时候经过tcp 三次握手之后建立,此后保持链接不断

  • agent 上报完数据之后,transfer 会返回给agent 上报的结果


2017/04/11 11:11:00 var.go:56: => <Total=4> <Endpoint:open-falcon-1, Metric:rate, Type:GAUGE, Tags:name=pfc.push.cnt, Step:60, Time:1491880260, Value:0.016666685985855727> 2017/04/11 11:11:00 var.go:63: <= <Total=4, Invalid:0, Latency=0ms, Message:ok> 2017/04/11 11:11:27 var.go:56: => <Total=7> <Endpoint:open-falcon-1, Metric:df.bytes.free.percent, Type:GAUGE, Tags:mount=/,fstype=ext4, Step:60, Time:1491880287, Value:95.25614893427964> 2017/04/11 11:11:27 var.go:56: => <Total=6> <Endpoint:open-falcon-1, Metric:ss.estab, Type:GAUGE, Tags:, Step:60, Time:1491880287, Value:57> 2017/04/11 11:11:27 var.go:63: <= <Total=7, Invalid:0, Latency=0ms, Message:ok> 2017/04/11 11:11:27 var.go:63: <= <Total=6, Invalid:0, Latency=0ms, Message:ok> 2017/04/11 11:11:27 var.go:56: => <Total=88> <Endpoint:open-falcon-1, Metric:agent.alive, Type:GAUGE, Tags:, Step:60, Time:1491880287, Value:1> 2017/04/11 11:11:27 var.go:63: <= <Total=88, Invalid:0, Latency=0ms, Message:ok>

##agent 和transfer建立tcp 链接 11:11:00.003435 IP localhost.53889 > localhost.8433: Flags [S], seq 860978551, win 32792, options [mss 16396,sackOK,TS val 5479392 ecr 0,nop,wscale 7], length 0 11:11:00.003457 IP localhost.8433 > localhost.53889: Flags [S.], seq 3616557726, ack 860978552, win 32768, options [mss 16396,sackOK,TS val 5479392 ecr 5479392,nop,wscale 7], length 0 11:11:00.003474 IP localhost.53889 > localhost.8433: Flags [.], ack 1, win 257, options [nop,nop,TS val 5479392 ecr 5479392], length 0 #agent 第一次上报数据 11:11:00.004004 IP localhost.53889 > localhost.8433: Flags [P.], seq 1:619, ack 1, win 257, options [nop,nop,TS val 5479393 ecr 5479392], length 618 11:11:00.004180 IP localhost.8433 > localhost.53889: Flags [.], ack 619, win 266, options [nop,nop,TS val 5479393 ecr 5479393], length 0 11:11:00.004976 IP localhost.8433 > localhost.53889: Flags [P.], seq 1:83, ack 619, win 266, options [nop,nop,TS val 5479394 ecr 5479393], length 82 11:11:00.005027 IP localhost.53889 > localhost.8433: Flags [.], ack 83, win 257, options [nop,nop,TS val 5479394 ecr 5479394], length 0 #agent 第二次上报数据,此次上报的数据tcp 交互不再是连续的,和日志相对应 11:11:27.387968 IP localhost.53889 > localhost.8433: Flags [P.], seq 619:1816, ack 83, win 257, options [nop,nop,TS val 5506777 ecr 5479394], length 1197 11:11:27.388750 IP localhost.8433 > localhost.53889: Flags [P.], seq 83:165, ack 1816, win 285, options [nop,nop,TS val 5506778 ecr 5506777], length 82 11:11:27.388758 IP localhost.53889 > localhost.8433: Flags [.], ack 165, win 257, options [nop,nop,TS val 5506778 ecr 5506778], length 0 11:11:27.397886 IP localhost.53889 > localhost.8433: Flags [P.], seq 1816:2631, ack 165, win 257, options [nop,nop,TS val 5506787 ecr 5506778], length 815 11:11:27.398225 IP localhost.8433 > localhost.53889: Flags [P.], seq 165:247, ack 2631, win 304, options [nop,nop,TS val 5506787 ecr 5506787], length 82 11:11:27.437698 IP localhost.53889 > localhost.8433: Flags [.], ack 247, win 257, options [nop,nop,TS val 5506827 ecr 5506787], length 0 11:11:27.472026 IP localhost.53889 > localhost.8433: Flags [P.], seq 2631:15063, ack 247, win 257, options [nop,nop,TS val 5506861 ecr 5506787], length 12432 11:11:27.474822 IP localhost.8433 > localhost.53889: Flags [P.], seq 247:330, ack 15063, win 384, options [nop,nop,TS val 5506863 ecr 5506861], length 83 11:11:27.474837 IP localhost.53889 > localhost.8433: Flags [.], ack 330, win 257, options [nop,nop,TS val 5506863 ecr 5506863], length 0

open-falcon之agent的更多相关文章

  1. 002.Open-Falcon Server部署及Agent监控

    一 前期准备 节点 IP 备注 falcon 私网:172.24.10.95 临时公网:120.132.23.107 Open-Falcon服务端 node01 172.24.10.216 被监控端 ...

  2. IT运维监控解决方案介绍

    现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...

  3. 【Open-Falcon】Linux下安装Open-Falcon

    一.Open-Falcon组件简述 [Open-Falcon绘图相关组件] Agent:  部署在目标机器采集机器监控项 Transfer : 数据接收端,转发数据到后端Graph和Judge Gra ...

  4. 开源一个监控数据采集Agent:OpenFalcon-SuitAgent

    OpenFalcon-SuitAgent 项目地址:github 版本说明 本系统版本划分如下 alpha:内部测试版(不建议使用于生产环境) beta:公开测试版(不建议使用于生产环境) final ...

  5. Linux记录-JMX监控Tomcat上传到falcon

    1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...

  6. 关于open falcon 与nightingale 的一些调研

    针对 open-falcon 与 nightingale 的调研 一.open-falcon 1.1 组件介绍 1.1.1 agent > agent用于采集机器负载监控指标,比如cpu.idl ...

  7. SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错

    可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...

  8. 搭建TFS 2015 Build Agent环境(一)

    Download the build agent Downloading the build agent is really simple. Navigate to your TFS control ...

  9. 数据库日常维护-CheckList_01历史Agent Job执行情况检查

    检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...

  10. Exception thrown by the agent : java.rmi.server.ExportException: Port already in use

    今天有个应用一直起不来,感觉配置都对啊,奇了怪了.看日志发现如下: STATUS | wrapper | 2017/01/04 08:09:31 | Launching a JVM...INFO | ...

随机推荐

  1. 第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中

    第三百五十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—将selenium操作谷歌浏览器集成到scrapy中 1.爬虫文件 dispatcher.connect()信号分发器,第一个参数信 ...

  2. SpringMVC系列(十六)Spring MVC与Struts2的对比

    • Spring MVC 的入口是 Servlet, 而 Struts2 是 Filter• Spring MVC 会稍微比 Struts2 快些. Spring MVC 是基于方法设计, 而 Stu ...

  3. MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP

    From: http://www.cnblogs.com/cyq1162/archive/2011/05/17/2049055.html 在 CYQ.Data 数据框架的反向工程中,遇到MySQL的问 ...

  4. mysql 中 时间和日期函数

    From: http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日 ...

  5. Jenkins的安装配置[转]

    Jenkins的安装配置 一.Jenkins简介 Jenkins 是一个可扩展的持续集成引擎.Jenkins可以帮我们将代码进行统一的编译打包.还可以放到tomcat容器中进行发布.简单来说就是我们通 ...

  6. angular.extend深拷贝(deep copy)

    在用到angular.extend的时候,正好碰到一个对象,是层层嵌套的Array, 结果发现只能extend第一层,查阅官文档,确实不支持deep copy: Note: Keep in mind ...

  7. java并发包研究之-ConcurrentHashMap

    概述 HashMap是非线程安全的,HashTable是线程安全的. 那个时候没怎么写Java代码,所以根本就没有听说过ConcurrentHashMap,只知道面试的时候就记住这句话就行了…至于为什 ...

  8. highcharts学习1----Line charts

    今天开始将之前使用的highcharts控件的经验进行总结和整理,一方面方便自己以后使用查询,同时也为正在学习的人们做一些指引,算是资源分享吧. 官网链接: http://www.highcharts ...

  9. linux下主流的三种远程技术

    远程登录操作对于租用服务器的用户来说都不陌生.特别是租用国外服务器的用户来说,更是家常便饭.通过远程登录操作,即使我们人在深圳,也能无差别的操作远在美国的服务器.而对于linux系统下的服务器,目前主 ...

  10. windows7 安装IIS没有default web site 解决方法

    因当时是第一次在Windows 7上使用IIS,不小心把default web site删除了,后来无论怎么重装IIS都不行,最后想到能不能直接把别人安装好后的IIS相关文件夹拷过来使用,用宿舍一哥们 ...