falcon-query 数据查询组件
Query 面向终端用户,收到查询请求后,根据一致性哈希算法,会去相应的 Graph 里面,查询不同 metric 的数据,汇总后统一返回给用户。
查询历史数据
查询过去一段时间内的历史数据,使用接口 HTTP POST /graph/history
。该接口不能查询最新上报的两个数据点。一个 python 例子,如下
#!-*- coding:utf8 -*- import requests import time import json end = int(time.time()) start = end - 3600 #查询过去一小时的数据 d = { "start": start, "end": end, "cf": "AVERAGE", "endpoint_counters": [ { "endpoint": "host1", "counter": "cpu.idle", }, { "endpoint": "host1", "counter": "load.1min", }, ], } url = "http://127.0.0.1:9966/graph/history" r = requests.post(url, data=json.dumps(d)) print r.text
其中cf的值可以为:AVERAGE、MAX、MIN ,具体可以参考 RRDtool 的相关概念
查询最新上报的数据
查询最新上报的一个数据点,使用接口 HTTP POST /graph/last
。一个 bash 的例子,如下
#!/bin/bash if [ $# != 2 ];then printf "format:./last \"endpoint\" \"counter\"\n" exit 1 fi # args endpoint=$1 counter=$2 # form request body req="[{\"endpoint\":\"$endpoint\", \"counter\":\"$counter\"}]" # request url="http://127.0.0.1:9966/graph/last" curl -s -X POST -d "$req" "$url" | python -m json.tool
源码编译
注意: 请首先更新 common 模块
# download source cd $GOPATH/src/github.com/open-falcon git clone https://github.com/open-falcon/query.git # or use git pull to update query # update dependencies: open-falcon/common, toolkits/consistent, toolkits/pool cd query go get ./... # compile and pack ./control build ./control pack
最后一步会 pack 出一个 tar.gz 的安装包,拿着这个包去部署服务即可。你也可以在这里,下载最新发布的代码。
服务部署
服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。
# 修改配置, 配置项含义见下文, 注意graph集群的配置 mv cfg.example.json cfg.json vim cfg.json # 注意: 从v1.4.0开始, 我们把graph列表的配置信息,移动到了cfg.json中,不再需要graph_backends.txt # 启动服务 ./control start # 校验服务,这里假定服务开启了9966的http监听端口。检验结果为ok表明服务正常启动。 curl -s "127.0.0.1:9966/health" ... # 停止服务 ./control stop
服务启动后,可以通过日志查看服务的运行状态,日志文件地址为 ./var/app.log。可以通过 ./test/debug
,查看服务的内部状态数据。可以通过 scripts 下的 query last
等脚本,进行数据查询。
配置文件格式说明
注意: 配置文件格式有更新; 请确保 graph.replicas
和 graph.cluster
的内容与 transfer 的配置完全一致
{ "debug": "false", // 是否开启debug日志 "http": { "enabled": true, // 是否开启http.server "listen": "0.0.0.0:9966" // http.server监听地址&端口 }, "graph": { "connTimeout": 1000, // 单位是毫秒,与后端graph建立连接的超时时间,可以根据网络质量微调,建议保持默认 "callTimeout": 5000, // 单位是毫秒,从后端graph读取数据的超时时间,可以根据网络质量微调,建议保持默认 "maxConns": 32, // 连接池相关配置,最大连接数,建议保持默认 "maxIdle": 32, // 连接池相关配置,最大空闲连接数,建议保持默认 "replicas": 500, // 这是一致性hash算法需要的节点副本数量,应该与transfer配置保持一致 "cluster": { // 后端的graph列表,应该与transfer配置保持一致;不支持一条记录中配置两个地址 "graph-00": "test.hostname01:6070", "graph-01": "test.hostname02:6070" }, "api": { // 适配grafana需要的API配置 "query": "http://127.0.0.1:9966", // query的http地址 "dashboard": "http://127.0.0.1:8081", // dashboard的http地址 "max": 500 //API返回结果的最大数量 } } }
补充说明
部署完成 query 组件后,请修改 dashboard 组件的配置、使其能够正确寻址到 query 组件。请确保 query 组件的 graph 列表 与 transfer 的配置 一致。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: falcon-judge 告警判定组件
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论