总览

    • Source层开启端口监听,通过netty server实现。解码之后的数据发到channel层
    • channel层有一个selector,用于选择走哪种类型的channel,如果memory最终满了,会对数据做落地处理
    • channel层的数据会通过sink层做转发,这里主要是将数据转为TDMsg1的格式,并推送到cache层(这里用的比较多的是tube)

    DataProxy支持配置化的source-channel-sink,配置方式与flume的配置文件结构相同。

    • Source配置示例:
    • Channel配置示例,memory channel:
    1. memory channel类型
    2. agent1.channels.ch-more1.capacity = 10000000
    3. memory channel 队列大小,可缓存最大消息条数
    4. agent1.channels.ch-more1.keep-alive = 0
    5. 原子操作时批量处理最大条数,memory channel使用时需要用到加锁,因此会有批处理流程增加效率
    • Channel配置示例,file channel:
    • Sink配置示例:
    1. agent1.sinks.meta-sink-more1.channel = ch-msg1
    2. sink的上游channel名称
    3. agent1.sinks.meta-sink-more1.type = org.apache.flume.sink.MetaSink
    4. sink类实现,此处实现消息向tube集群推送数据
    5. agent1.sinks.meta-sink-more1.master-host-port-list =
    6. tube集群master节点列表
    7. agent1.sinks.meta-sink-more1.send_timeout = 30000
    8. 发送到tube时超时时间限制
    9. agent1.sinks.meta-sink-more1.stat-interval-sec = 60
    10. agent1.sinks.meta-sink-more1.thread-num = 8
    11. Sink类发送消息的工作线程,8表示启动8个并发线程
    12. agent1.sinks.meta-sink-more1.client-id-cache = true
    13. agent id缓存,用于检查agent上报数据去重
    14. agent1.sinks.meta-sink-more1.max-survived-time = 300000
    15. 缓存最大时间
    16. agent1.sinks.meta-sink-more1.max-survived-size = 3000000
    17. 缓存最大个数

    用户能在配置文件common.propetiese增加如下配置,例如:

    • 统一的JMX域名:DataProxy,并定义在参数metricDomains下;自定义的Source、Sink等组件也可以上报到不同的JMX域名。
    • 对一个JMX域名的监控指标MetricListener可以配置在metricDomains.$domainName.domainListeners参数里,可以配置多个,用空格分隔类名。
    • 这些监控指标MetricListener需要实现接口:org.apache.inlong.dataproxy.metrics.MetricListener。
    • 快照参数:metricDomains.$domainName.snapshotInterval,定义拉取一次监控指标数据的间隔时间,参数单位是毫秒。

    org.apache.inlong.dataproxy.metrics.MetricListener接口的方法原型:

      监控指标项的MetricItemValue.metrics有这些指标(DataProxyMetricItem的这些字段通过注解Annotation “@CountMetric”定义):

      propertydescription
      readSuccessCount接收成功条数
      readSuccessSize接收成功大小,单位:byte
      readFailCount接收失败条数
      readFailSize接收失败大小,单位:byte
      sendCount发送条数
      sendSize发送大小,单位:byte
      sendSuccessCount发送成功条数
      sendSuccessSize发送成功大小,单位:byte
      sendFailCount发送失败条数
      sendFailSize发送失败大小,单位:byte
      sinkDuration发送成功回调时间和发送开始时间的时间差,用于评估目标集群的处理时延和健康状况,单位:毫秒
      nodeDuration发送成功回调时间和接收成功时间的时间差,用于评估DataProxy内部处理耗时和健康状况,单位:毫秒
      wholeDuration发送成功回调时间和事件生成时间的时间差,单位:毫秒

      监控指标已经注册到MBeanServer,用户可以在DataProxy的启动参数中增加如下类似JMX定义(端口和鉴权根据情况进行调整),实现监控指标从远端采集。