#indicator #udf #time-series #kapacitor #influxdata #unix-socket

bin+lib kapacitor-multi-indicator-stream-udf

Kapacitor 多指标流 UDF

2 个版本

0.1.1 2024 年 8 月 15 日
0.1.0 2024 年 8 月 15 日

796异步

Download history 183/week @ 2024-08-10

183 每月下载量

MIT 许可证

31KB
581

Kapacitor 多指标流 UDF

概述

本项目实现了一个用于 Kapacitor 的用户自定义函数 (UDF),为多个金融指标提供流处理能力。目前,它支持指数移动平均 (EMA) 和简单移动平均 (SMA) 计算,并且可以轻松扩展以支持其他指标。

特性

  • 时间序列数据的流处理
  • 支持多个指标(EMA 和 SMA)
  • 使用 Unix socket 与 Kapacitor 通信
  • 使用 async-std 进行异步处理
  • 每个指标的可配置选项

要求

  • Rust 1.70 或更高版本
  • Kapacitor 1.6 或更高版本

安装

  1. 克隆仓库

    
    git clone <https://github.com/suitable-name/kapacitor-udf-indicator-stream-rs>
    cd kapacitor-multi-indicator-stream-udf
    
    
  2. 构建/安装项目

    
    cargo build --release
    
    

    
    sudo cargo install --path . --root /usr/local
    
    

使用方法

  1. 启动 UDF 服务器

    
    ./target/release/kapacitor-multi-indicator-stream-udf
    
    

    默认情况下,服务器监听 /tmp/indicator-stream.sock。您可以使用 -s--socket 选项指定不同的套接字路径

    
    ./target/release/kapacitor-multi-indicator-stream-udf -s /path/to/custom/socket.sock
    
    
  2. 配置 Kapacitor 以使用此 UDF。将以下内容添加到您的 Kapacitor 配置文件中

    [udfs]
      [udfs.functions]
        [udfs.functions.indicator_stream]
          socket = "/tmp/kapacitor-multi-indicator-stream-udf"
          timeout = "10s"
    
  3. 在您的 TICKscripts 中使用 UDF

    stream
        |from()
            .measurement('ticker_data')
        @indicator_stream()
            .type('EMA')
            .field('last_price')
            .as('last_price_ema')
            .period(14)
            .ticker_field('ticker')
        |influxDBOut()
            .database('stocks')
            .retentionPolicy('autogen')
            .measurement('Stocks_EMA_stream')
            .tag('kapacitor', 'true')
    

配置选项

  • type:要计算的指标类型(EMASMA
  • period:指标计算的周期
  • field:用于计算的字段名
  • as:用于输出中计算出的指标值的字段名
  • ticker_field:包含数据点的股票代码或符号的字段名

开发

要启用调试日志运行

RUST_LOG=debug ./target/release/kapacitor-multi-indicator-stream-udf

贡献

欢迎贡献!请随时提交 Pull Request。

许可证

本项目采用MIT许可协议 - 请参阅LICENSE文件获取详细信息。

依赖项

约14–26MB
约378K SLoC