open-falcon之agent
功能
采集数据,解析数据,上报数据至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的更多相关文章
- 002.Open-Falcon Server部署及Agent监控
一 前期准备 节点 IP 备注 falcon 私网:172.24.10.95 临时公网:120.132.23.107 Open-Falcon服务端 node01 172.24.10.216 被监控端 ...
- IT运维监控解决方案介绍
现状 •小公司/ 创业团队< 500台服务器规模 开源方案:Zabbix.Nagios.Cacti- 云服务提供商:监控宝.oneAlert等 •BAT级别> 10万台服务器 投 ...
- 【Open-Falcon】Linux下安装Open-Falcon
一.Open-Falcon组件简述 [Open-Falcon绘图相关组件] Agent: 部署在目标机器采集机器监控项 Transfer : 数据接收端,转发数据到后端Graph和Judge Gra ...
- 开源一个监控数据采集Agent:OpenFalcon-SuitAgent
OpenFalcon-SuitAgent 项目地址:github 版本说明 本系统版本划分如下 alpha:内部测试版(不建议使用于生产环境) beta:公开测试版(不建议使用于生产环境) final ...
- Linux记录-JMX监控Tomcat上传到falcon
1.登录测试服务器xxxxxx xxxxxx su root输入xxxx 2.先修改Tomcat的启动脚本,(linux下为catalina.sh),添加以下内容: CATALINA_OPTS=&qu ...
- 关于open falcon 与nightingale 的一些调研
针对 open-falcon 与 nightingale 的调研 一.open-falcon 1.1 组件介绍 1.1.1 agent > agent用于采集机器负载监控指标,比如cpu.idl ...
- SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错
可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...
- 搭建TFS 2015 Build Agent环境(一)
Download the build agent Downloading the build agent is really simple. Navigate to your TFS control ...
- 数据库日常维护-CheckList_01历史Agent Job执行情况检查
检查Agent Job中日常维护作业或业务作业是否成功,如每天的备份.碎片整理.索引维护.历史备份文件清除等,可利用SSMS工具,通过CDC下面设置好的DB Server List,运行下面脚本一次, ...
- 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 | ...
随机推荐
- Hive Beeline 官方文档学习
Beeline 是什么? 它是一个命令行形式的jdbc客户端.搞Java开发的同学,看到这里就应该知道这货是什么了 ── 它是一个连接数据库的工具. 只不过Beeline连接的数据库是HiveServ ...
- 【吉比特】G-bits2017技术类岗位编程题
求素数 输入M.N,1 < M < N < 1000000,求区间[M,N]内的所有素数的个数.素数定义:除了1以外,只能被1和自己整除的自然数称为素数 输入描述: 两个整数M,N ...
- MFC绘图小实验(2)
1,以正五边形的5个顶点为基础,隔点存储构成五角星.填充模式采用WINDING.五角星边界线为5个像素宽的蓝色实线,内部使用红色填充. CRect rect; //定义矩形 GetClientRect ...
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- e813. 获得当前选择的菜单或菜单项
The currently selected menu or menu item in a JMenu or JPopupMenu is tracked by MenuSelectionManager ...
- AWT控件称为重量级控件
AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口. AWT 中的图形函数与操作系统所提供的图形函数之间有着一一对应的 ...
- C#提供-------AttributeUsage使用
Assembly(c#中简单说明) Assembly(c#中简单说明) 2008-07-11 00:27 什么是Assembly(程序集)?Assembly是一个包含来程序的名称,版本号,自我描述,文 ...
- 转载: 让我们聊聊Erlang的nif中资源的安全释放
让我们聊聊Erlang的nif中资源的安全释放 http://my.oschina.net/u/236698/blog/479221
- 查看CentOS系统运行了多久使用uptime命令
对于一些人来说系统运行了多久是无关紧要的,但是对于服务器管理员来说,这是相当重要的信息. 服务器在运行重要应用的时候,必须尽量保证长时间的稳定运行,有时候甚至要求零宕机. 那么我们怎么才能知道服务器运 ...
- js中找string中重复项最多的字符个数
// split():字符串中的方法,把字符串转成数组. // sort():数组中的排序方法,按照ACALL码进行排序. // join():数组中的方法,把数组转换为字符串 function de ...