出典について
この記事は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を発行してください。