Introduction
多IDC时,可能面对 "分区到中心的专线网络质量较差&公网ACL不通" 等问题。这时,可以在分区内部署一套数据路由服务,接收本分区内的所有流量(包括所有的agent流量),然后通过公网(开通ACL),将数据push给中心的Transfer。如下图,
站在client端的角度,gateway和transfer提供了完全一致的功能和接口。只有遇到网络分区的情况时,才有必要使用gateway组件。
Build
请参考falcon-plus README
Deploy
服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。
# modify config
mv cfg.example.json cfg.json
vim cfg.json
# start service
./open-falcon start gateway
# check, you should get 'ok'
./open-falcon monitor gateway
...
# stop service
./open-falcon stop gateway
服务启动后,可以通过日志查看服务的运行状态,日志文件地址为./var/app.log。可以通过调试脚本./test/debug查看服务器的内部状态数据,如 运行 bash ./test/debug 可以得到服务器内部状态的统计信息。
gateway组件,部署于分区中。单个gateway实例的转发能力,为 {1核, 500MB内存, Qps不小于1W/s};但我们仍然建议,一个分区至少部署两个gateway实例,来实现高可用。
Configuration
{
"debug": true,
"http": {
"enabled": true,
"listen": "0.0.0.0:6060"
},
"rpc": {
"enabled": true,
"listen": "0.0.0.0:8433"
},
"socket": {
"enabled": true,
"listen": "0.0.0.0:4444",
"timeout": 3600
},
"transfer": {
"enabled": true, //true/false, 表示是否开启向tranfser转发数据
"batch": 200, //数据转发的批量大小,可以加快发送速度,建议保持默认值
"retry": 2, //重试次数,默认1、不重试
"connTimeout": 1000, //毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
"callTimeout": 5000, //毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
"maxConns": 32, //连接池相关配置,最大连接数,建议保持默认
"maxIdle": 32, //连接池相关配置,最大空闲连接数,建议保持默认
"cluster": { //transfer服务器集群,支持多条记录
"t1": "127.0.0.1:8433" //一个transfer实例,形如"node":"$hostname:$port"
}
}
}
从版本v0.0.11后,gateway组件引入了golang业务监控组件GoPerfcounter。GoPerfcounter会主动将gateway的内部状态数据,push给本地的falcon-agent,其配置文件perfcounter.json
内容如下,含义见这里
{
"tags": "service=gateway", // 业务监控数据的标签
"bases": ["debug","runtime"], // 开启gvm基础信息采集
"push": { // 开启主动推送,数据将被推送至本机的falcon-agent
"enabled": true
},
"http": { // 开启http调试,并复用gateway的http端口
"enabled": true
}
}
Debug
可以通过调试脚本./test/debug查看服务器的内部状态数据,含义如下
# bash ./test/debug
{
"data": {
"gauge": {
"SendQueueSize": { // size of cached items
"value": 0
}
},
"meter": {
"Recv": { // counter of items received
"rate": 954.88407253945127,
"rate.15min": 938.12973764674587,
"rate.1min": 892.82060496256759,
"rate.5min": 889.51059449035426,
"sum": 2460636
},
"Send": { // counter of items sent to transfer
"rate": 950.21411950079619,
"rate.15min": 918.55392627259835,
"rate.1min": 886.32981239416608,
"rate.5min": 888.16132862191205,
"sum": 2458708
},
"SendFail": { // counter of items sent to transfer failed
"rate": 0,
"rate.15min": 0,
"rate.1min": 0,
"rate.5min": 0,
"sum": 0
},
"SendDrop": { // counter of items sent to transfer drop
"rate": 0,
"rate.15min": 0,
"rate.1min": 0,
"rate.5min": 0,
"sum": 0
},
}
},
"msg": "success"
}
TODO