功能

采集数据,解析数据,上报数据至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. Hive Beeline 官方文档学习

    Beeline 是什么? 它是一个命令行形式的jdbc客户端.搞Java开发的同学,看到这里就应该知道这货是什么了 ── 它是一个连接数据库的工具. 只不过Beeline连接的数据库是HiveServ ...

  2. 【吉比特】G-bits2017技术类岗位编程题

    求素数 输入M.N,1 < M < N < 1000000,求区间[M,N]内的所有素数的个数.素数定义:除了1以外,只能被1和自己整除的自然数称为素数 输入描述: 两个整数M,N ...

  3. MFC绘图小实验(2)

    1,以正五边形的5个顶点为基础,隔点存储构成五角星.填充模式采用WINDING.五角星边界线为5个像素宽的蓝色实线,内部使用红色填充. CRect rect; //定义矩形 GetClientRect ...

  4. 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码

    第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...

  5. e813. 获得当前选择的菜单或菜单项

    The currently selected menu or menu item in a JMenu or JPopupMenu is tracked by MenuSelectionManager ...

  6. AWT控件称为重量级控件

    AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口. AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的 ...

  7. C#提供-------AttributeUsage使用

    Assembly(c#中简单说明) Assembly(c#中简单说明) 2008-07-11 00:27 什么是Assembly(程序集)?Assembly是一个包含来程序的名称,版本号,自我描述,文 ...

  8. 转载: 让我们聊聊Erlang的nif中资源的安全释放

    让我们聊聊Erlang的nif中资源的安全释放 http://my.oschina.net/u/236698/blog/479221

  9. 查看CentOS系统运行了多久使用uptime命令

    对于一些人来说系统运行了多久是无关紧要的,但是对于服务器管理员来说,这是相当重要的信息. 服务器在运行重要应用的时候,必须尽量保证长时间的稳定运行,有时候甚至要求零宕机. 那么我们怎么才能知道服务器运 ...

  10. js中找string中重复项最多的字符个数

    // split():字符串中的方法,把字符串转成数组. // sort():数组中的排序方法,按照ACALL码进行排序. // join():数组中的方法,把数组转换为字符串 function de ...