Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
9年弱前投稿 修正あり

Kapacitor: オープンソースのストリーミングとバッチの時系列プロセッサ(InfluxDB Blogより)

InfluxDB社が掲げていたTICKスタックのうち、未発表だったK(Kapacitor)についてご紹介します。 KapacitorはGo言語で書かれた時系列データ向けデータ処理エンジンで、TICKscriptと呼ばれる簡単なDSLによるタスク定義で、アラートの設定、ETLジョブの実行などが制御できます。

原文
Announcing Kapacitor, An Open Source Streaming And Batch Time Series Processor | InfluxDB (English)
翻訳依頼者
B5aa4f809000b9147289650532e83932
翻訳者
B5aa4f809000b9147289650532e83932 taka-h
翻訳レビュアー
D98ee74ffe0fafbdc83b23907dda3665 doublemarket
原著者への翻訳報告
未報告


出典について

この記事はInfluxDB BlogのNathaniel Cook氏によるAnnouncing Kapacitor, an open source streaming and batch time series processor(2015/12/1)を翻訳したものです。


本日、Goで書かれたオープンソースの時系列データ向けデータ処理エンジンであるKapacitorを発表できたことを嬉しく思います。Kapacitorによって次のことができるようになります。

  • 複雑で動的な基準に基づいてアラートの設定ができ、
  • 現在と過去のデータにETLジョブを実行でき、
  • リアルタイムかバッチでデータを処理ができる

簡単に概要を確認するには下記の動画をご覧いただくか、記事の続きをご覧ください。

元記事のページ埋込みの動画を参照

Kapacitorとは?

待ちきれない場合は、今すぐ使い始めましょう!

Kapacitorは時系列データを処理するスタンドアロンのプログラムです。データはストリーミング可能ですし、スケジューリングされたバッチでKapacitorに送ることもできます。InfluxDBを含む複数の入力に対応しています。KapacitorはInfluxDBのクラスターに送信された全てのデータをサブスクライブすることも可能です。

現在時点では、KapacitorはデータをInfluxDBのクエリ言語と同じ関数(例えば、sum, min, max, stddevなど)でデータの処理を行うことができます。機能追加を間もなく行う予定で、具体的には、集計関数の追加、ユーザー定義関数、例外検知です。

皆さんの多くはKapacitorのようなツールをずっと求めてきており、我々はその需要を満たすべく最善を尽くしてきました。このリリースではKapacitorが需要にフィットしているかと、これを改善するために何をすれば良いかに関する早期のフィードバックをいただけることを期待しています。Kapacitorをサードパーティーのアプリケーションに組込めるようにしたいとも考えています。すでに何か考えがあれば、Kapacitorへの独自の出力コネクターを作成しどのようにコントリビュートすれば良いかを記載したこのガイドをチェックしてください。出力コネクタにより、変換したデータをストリーミングし、他のデータストアあるいはサードパーティーのAPIにアラートを発行できるようになります。

Kapacitorの使い方

KapacitorはTICKscriptと名付けられたDSLで定義されたタスクを実行します。TICKscriptはKapacitorでどのデータをどのように処理するかを定義します。次のTICKscriptは、Kapacitorの「Hello World」タスクで、CPU利用率が高い時にアラートを発生させるものです。

stream
    .from().measurement('cpu')
    .alert()
        .crit(lambda: "value" > 80.0)
        .log('/tmp/high_cpu.log')

このシンプルなスクリプトでCPU利用率に基づいたアラートを発生させることができます。

もう少し複雑な例をみてみましょう。あなたがゲームの開発者で、見ている人にトッププレーヤーのスコアを表示するダッシュボードを作成しなければいけないとしましょう。Kapacitorを使うと、各ゲームに対してプレイヤーのスコアを最新の状態に保つという大変な処理を定義することができます。スコアの更新をKapacitorに送信し、ダッシュボードにKapacitorからデータを取得するように設定するだけでよくなるのです。次のTICKscriptは、各プレイヤーの最新のスコアを取得し、ゲームごとのトップ5プレイヤーを計算するものです。

stream
    // 'scores'ストリームからデータをSelectする
    .from().measurement('scores')
    // 各プレーヤーのゲーム毎の最新のスコアを取得する
    .groupBy('game', 'player')
    .window()
        .period(10s)
        .every(1s)
        .align()
    .mapReduce(influxql.last('value'))
    // ゲーム毎のトップ5スコアを計算する
    .groupBy('game')
    .mapReduce(influxql.top(5, 'last', 'player'))
    // 'top_scores'エンドポイントのHTTP APIでスコアを公開する
    // これによってリーダーボードはKapacitorにトップスコアをリクエストするだけでよくなり
    // 常に最新の結果を取得する
    .httpOut('top_scores')

この例がどのように動作するかの詳細な説明はこのページをご覧ください。

入門ガイドには、Kapacitorを使うときの最初の1歩についての概要の記載があります。どう思ったかを教えてください。メーリングリストを使うか、Issueを発行する、できればgithubのPull Requestを発行してください。

次の記事
こんなコーディングは退屈だ!
前の記事
Amazon Aurora : パラメーターから見るその詳細(Percona Data Performance Blogより)

Feed small 記事フィード

新着記事Twitterアカウント