Transfer

优质
小牛编辑
133浏览
2023-12-01

transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。同时 transfer 也支持将数据转发给 opentsdb 和 influxdb,也可以转发给另外一个 transfer。

服务部署

服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。

# 修改配置, 配置项含义见下文
mv cfg.example.json cfg.json
vim cfg.json

# 启动服务
./open-falcon start transfer

# 校验服务,这里假定服务开启了6060的http监听端口。检验结果为ok表明服务正常启动。
curl -s "127.0.0.1:6060/health"

# 停止服务
./open-falcon stop transfer

# 查看日志
./open-falcon monitor transfer

配置说明

配置文件默认为./cfg.json。默认情况下,安装包会有一个cfg.example.json的配置文件示例。各配置项的含义,如下

Configuration

    debug: true/false, 如果为true,日志中会打印debug信息

    minStep: 30, 允许上报的数据最小间隔,默认为30秒

    http
        - enabled: true/false, 表示是否开启该http端口,该端口为控制端口,主要用来对transfer发送控制命令、统计命令、debug命令等
        - listen: 表示监听的http端口

    rpc
        - enabled: true/false, 表示是否开启该jsonrpc数据接收端口, Agent发送数据使用的就是该端口
        - listen: 表示监听的http端口

    socket #即将被废弃,请避免使用
        - enabled: true/false, 表示是否开启该telnet方式的数据接收端口,这是为了方便用户一行行的发送数据给transfer
        - listen: 表示监听的http端口

    judge
        - enabled: true/false, 表示是否开启向judge发送数据
        - batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可
        - cluster: key-value形式的字典,表示后端的judge列表,其中key代表后端judge名字,value代表的是具体的ip:port

    graph
        - enabled: true/false, 表示是否开启向graph发送数据
        - batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可
        - cluster: key-value形式的字典,表示后端的graph列表,其中key代表后端graph名字,value代表的是具体的ip:port(多个地址用逗号隔开, transfer会将同一份数据发送至各个地址,利用这个特性可以实现数据的多重备份)

    tsdb
        - enabled: true/false, 表示是否开启向opentsdb发送数据
        - batch: 数据转发的批量大小,可以加快发送速度
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - retry: 连接后端的重试次数和发送数据的重试次数
        - address: tsdb地址或者tsdb集群vip地址, 通过tcp连接tsdb. 

    transfer // transfer 可以转发数据给另外一个 transfer,形成级联模式
        - enabled: true/false,   表示是否开启向另一个transfer发送数据
        - batch: 数据转发的批量大小,可以加快发送速度
        - connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
        - callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
        - retry: 连接后端的重试次数和发送数据的重试次数
        - cluster: {   //下游级联的 transfer 列表,以key-value形式的字典
            "t1": "127.0.0.1:8433"
        }

    influxdb  // transfer 可以转发数据给 influxdb,通过 http 的形式提交数据
        - enabled: true/false,  表示是否开启向 influxdb 发送数据
        - batch: 数据转发的批量大小,可以加快发送速度
        - retry: 连接后端的重试次数和发送数据的重试次数
        - maxConns: 连接池相关配置,最大连接数,建议保持默认
        - username: 提交数据给 influxdb 时,需要指定 influxdb 中事先创建好的用户
        - password: 提交数据给 influxdb 时,需要指定 influxdb 中事先创建好的用户的密码
        - precision: 数据的粒度,默认位 s
        - db: 数据会提交到influxdb 中事先已经创建号的 database 中
        - address: influxdb 的http 接口地址,influxdb 的默认 http 端口是8086
        - timeout: 单位是毫秒,与后端建立连接和发送数据的超时时间,可以根据网络质量微调,建议保持默认
    }

补充说明

部署完成transfer组件后,请修改agent的配置,使其指向正确的transfer地址。在安装完graph和judge后,请修改transfer的相应配置、使其能够正确寻址到这两个组件。

视频教程

为transfer模块录制了一个视频,做了源码级解读:http://www.jikexueyuan.com/course/2061.html