功能

采集数据,解析数据,上报数据至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. Prolog学习:用八卦的精神走进Prolog

    最近枕头书是<七周七语言:理解多种编程范型>这本,前面两章分别看了Ruby和IO,都是命令式语言.虽然它们在语法上跟之前接触过的C,C#,Java这些C家族的语言差别很大,但是编程范型却是 ...

  2. Eclipse JUnit简单示例

    在本节中,我们将看到一个简单的JUnit例子. 先创建一个工程,名称为:CalculateTest,并在这个工程上点击右键,选择:Build Path -> Add Library -> ...

  3. MySQL 数据库定时自动备份

    创建备份目录 cd /home mkdir backup cd backup 创建备份 Shell 脚本: vim DatabaseName.sh #!/bin/bash /usr/local/mys ...

  4. shiro+redis多次调用doReadSession方法的解决方案

    Web 项目使用shiro,针对这个问题可以重写DefaultWebSessionManager,将缓存数据存放到request中,这样可以保证每次请求(可能会多次调用doReadSession方法) ...

  5. Linux学习笔记<五>——<Shell部分>

    管道命令(pipe) 1.把一个命令的输出作为另一个命令的输入 ls -al /etc | less 2.选取命令:cut和grep cut命令可以将一段消息的某段切出来. -d接分隔符,-f是取出第 ...

  6. Xcode 文档注释

    首先要下载一个服务:[下载地址]这是一个老外写的工作流,解压缩,然后双击,安装一下, 选择xcode —> services —> services perference 安装完就会在右边 ...

  7. 手机浏览器中屏蔽img的系统右键菜单context menu

    我们知道通过oncontextmenu事件可以屏蔽浏览器右键菜单 $('img').on("contextmenu",function(E){E.preventDefault(); ...

  8. MSM--Memcached_Session_Manager介绍及使用

    MSM--Memcached_Session_Manager介绍及使用 http://www.iteye.com/topic/1125301 我们都知道对于一些大型的web2.0的网站,在正式部署时一 ...

  9. koa2入门学习

    koa模块 koa-route 路由 route.get("路径",路由函数) koa-static 静态资源加载     const serve(路径) koa-compose  ...

  10. workerman定时器使用 php定时任务

    add int \Workerman\Lib\Timer::add(float $time_interval, callable $callback [,$args = array(), bool $ ...