benthos - Benthosは高性能で回復力のあるストリームプロセッサであり、さまざまな仲介パターンでさまざまなソースとシンクを接続し、ペイロードに対してハイドレーション、エンリッチメント、変換、フィルターを実行できます。

(Fancy stream processing made operationally mundane)

Created at: 2016-03-22 09:18:48
Language: Go
License: MIT

底生生物

底生生物/底生生物のためのゴドック ビルドステータス 不和の招待 ドキュメント サイト

Benthosは高性能で回復力のあるストリームプロセッサであり、さまざまな仲介パターンでさまざまなソースシンクを接続し、ペイロードに対してハイドレーション、エンリッチメント、変換、フィルターを実行できます。

強力なマッピング言語が付属しており、デプロイと監視が簡単で、静的バイナリ、Dockerイメージ、またはサーバーレス関数としてパイプラインにドロップする準備ができているため、クラウドネイティブになります。

Benthosは宣言型であり、ストリームパイプラインはわずか1つの構成ファイルで定義され、コネクタと処理ステージのリストを指定できます。

input:
  gcp_pubsub:
    project: foo
    subscription: bar

pipeline:
  processors:
    - mapping: |
        root.message = this
        root.meta.link_count = this.links.length()
        root.user.age = this.user.age.number()

output:
  redis_streams:
    url: tcp://TODO:6379
    stream: baz
    max_in_flight: 20

配送保証

配達保証は危険な問題になる可能性があります。Benthos は、ディスク永続状態を必要としないインプロセス トランザクション モデルを使用してメッセージを処理および確認するため、少なくとも 1 回はソースとシンクに接続すると、クラッシュ、ディスク破損、またはその他の予期しないサーバー障害が発生した場合でも、少なくとも 1 回の配信を保証できます。

この動作はデフォルトであり、警告がないため、Benthosのデプロイとスケーリングもはるかに簡単になります。

サポートされているソースとシンク

AWS (DynamoDB、Kinesis、S3、SQS、SNS)、Azure (Blob storage、Queue storage、Table storage)、GCP (Pub/Sub、Cloud storage、Big query)、Kafka、NATS (JetStream、Streaming)、NSQ、MQTT、AMQP 0.91 (RabbitMQ)、AMQP 1、Redis (streams、list、pubsub、hashes)、Cassandra、Elasticsearch、HDFS、HTTP (サーバーおよびクライアント、ウェブソケットを含む)、MongoDB、SQL (MySQL、PostgreSQL、Clickhouse、MSSQL)など。

コネクタは絶えず追加されており、必要なものが不足している場合は、問題を開いてください

ドキュメンテーション

Benthosに完全に飛び込みたい場合は、このダンプで時間を無駄にしないでください、ドキュメントサイトをチェックしてください。

ストリーム結合、エンリッチメントワークフローなど、より高度なストリーム処理の概念を設定する方法のガイダンスについては、クックブックのセクションを参照してください。

Go で独自のカスタムプラグインを構築するためのガイダンスについては、パブリック API を確認してください。

取り付ける

ここからOSのバイナリを入手してくださいまたは、次のスクリプトを使用します。

curl -Lsf https://sh.benthos.dev | bash

または、ドッカーイメージをプルします。

docker pull jeffail/benthos

ベントスは自作でインストールすることもできます。

brew install benthos

詳細については、入門ガイドをご覧ください。

走る

benthos -c ./config.yaml

または、ドッカーで:

# Using a config file
docker run --rm -v /path/to/your/config.yaml:/benthos.yaml jeffail/benthos

# Using a series of -s flags
docker run --rm -p 4195:4195 jeffail/benthos \
  -s "input.type=http_server" \
  -s "output.type=kafka" \
  -s "output.kafka.addresses=kafka-server:9092" \
  -s "output.kafka.topic=benthos_topic"

モニタリング

ヘルスチェック

Benthos は、ヘルスチェック用に 2 つの HTTP エンドポイントを提供します。

  • /ping
    常に200を返すため、活性プローブとして使用できます。
  • /ready
    入力と出力の両方が接続されている場合にのみ200にサービスを提供し、それ以外の場合は503が返されるため、準備プローブとして使用できます。

メトリック

Benthos は、Statsd、Prometheus、またはデバッグ目的でJSON形式のオブジェクトを返すHTTPエンドポイントのいずれかに多くのメトリックを公開します。

トレーシング

また、Benthosは、パイプライン内のプロセッサを視覚化するために使用できる、選択したトレーサー(現在はJaegerのみがサポートされています)にトレースイベントを発行します。

構成

Benthosは、構成の検出、デバッグ、整理を容易にするための多くのツールを提供します。あなたはそれらについて読むことができます 詳細を見る.

建てる

Go でビルドする (現在サポートされているバージョン):

git clone git@github.com:benthosdev/benthos
cd benthos
make

リント布

ベントスはリンティングにゴランチリントを使用しています。

curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

そして、それを実行します。

make lint

プラグイン

GoでBenthos用の独自のカスタムプラグインを作成するのは非常に簡単です、情報についてはAPIドキュメントをチェックしてください、そしてインスピレーションのためにさまざまなプラグイン実装を示すサンプルリポジトリがあります。

追加プラグイン

デフォルトでは、Benthos は、入力や出力などの外部ライブラリへのリンクを必要とするコンポーネントを使用してビルドされません。これらの依存関係を使用してBenthosをローカルでビルドする場合は、ビルドタグを設定します。

zmq4
x_benthos_extra

# With go
go install -tags "x_benthos_extra" github.com/benthosdev/benthos/v4/cmd/benthos@latest

# Using make
make TAGS=x_benthos_extra

このタグは、メジャーバージョンリリース以外の個々のコンポーネントの詳細なタグに変更または分割される可能性があることに注意してください。ビルドを試みたときにこれらの依存関係が存在しない場合は、次のようなエラー メッセージが表示されます。

ld: library not found for -lzmq

ドッカービルド

Benthosドッカーイメージを作成するためのマルチステージがあり、ゼロから最小限のイメージが得られます。あなたはそれを構築することができます:

Dockerfile

make docker

次に、画像を使用します。

docker run --rm \
	-v /path/to/your/benthos.yaml:/config.yaml \
	-v /tmp/data:/data \
	-p 4195:4195 \
	benthos -c /config.yaml

貢献

貢献は大歓迎です、ガイドラインを読み、来てチャットし(リンクはコミュニティページにあります)、そしてあなたの背中を見てください。