Promscaleのデモから見えるタイムシリーズデータを使った現代的なオブザーバビリティ

2022年5月19日(木)
松下 康之 - Yasuyuki Matsushita
タイムシリーズデータを活用したオブザーバビリティの例から、タイムシリーズデータの可能性を探る。

クラウドネイティブなオブザーバビリティについて、Cloud Native Computing Foundation(CNCF)のウェビナーからタイムシリーズデータベースを提供するTimescaleのセッションを紹介する。これはOpenTelemetry、Grafana、Promscaleの3つのオープンソースソフトウェアを使ってデモとして構築されたマイクロサービスに対して観測を行うという内容となっている。

この動画は2022年4月7日に公開されたCNCFの公式動画である。セッションを担当したのは、Promscaleを開発するTimescaleにおいて、VP of Observability Productsのタイトルを持つRamon Guiu氏だ。セッションのタイトルは「Understand your system like never before with OpenTelemetry, Grafana, and Promscale」、意味としては「OpenTelemetry、GrafanaそしてPromscaleを使ってシステムを(観測して)理解するこれまでにない方法」といったところだろうか。PromscaleはPrometheusから採取されるタイムシリーズデータを処理するシステムの名称だ。

動画:Understand your system like never before with OpenTelemetry, Grafana, & Promscale

この動画が特徴的なのは、単にデモアプリケーションに対してOpenTelemetryでトレーシングを行ってその結果をGrafanaのグラフィカルなインターフェースで参照するというだけではなく、必要なデータの取得をSQLのインターフェースで行っているという部分だろう。またデータストアとしてPostgreSQLを拡張したTimescaleDBというタイムシリーズデータに特化したデータベースを使っているという部分が、単なるPrometheusのデモではなくオブザーバビリティの観点からイベントやエラーに関するデータをSQL構文で処理可能であることの利点を解説した内容となっている。

セッションのタイトル

セッションのタイトル

ここではOpenTelemetryが得意とするトレーシングに注目して解説を行っている。複数のプロセスで構成されたサービスにおいてメッセージを交換して処理を進め、データベースへの書き込みや外部サービスへの呼び出しなどを行うことで必要とするサービスが完成するという例を挙げている。そして、その処理の繋がりをトレースと呼び、それぞれの処理が実行される時間をスパンと呼ぶことなどの基本的な概念を説明した。

トレースの基本を解説

トレースの基本を解説

そして今回のテクノロジースタックの中心となる、タイムシリーズデータベースについて説明を行った。

PromscaleはPostgreSQLをベースにしたタイムシリーズデータベースとSQLバックエンドの総称

PromscaleはPostgreSQLをベースにしたタイムシリーズデータベースとSQLバックエンドの総称

システムの内部で何が起きているのかを観測するためにログ、イベント、トレース、メトリクスなどが利用されるが、それらのデータにはいつそれが発生したのか? というタイムスタンプが付随している。そのタイムスタンプとそれがどこで起きたのか? というサーバー名やプロセスID/コンテナIDを繋ぎ合わせたデータは、発生原因などを突き止めるために役立つことは明らかだ。そのためのソフトウェアであるPromscaleでは、タイムシリーズデータベースであるTimescaleDBというPostgreSQLを拡張したデータベースと、外部との連携を行うコネクターがセットになっているということだ。

Promscaleと関連するソフトウェア群

Promscaleと関連するソフトウェア群

ここから今回のデモで利用されるデモシステムの解説に移った。このデモアプリケーションはパスワードジェネレータであると紹介されている通り、ランダムなパスワードを自動生成するためのアプリケーションである。大文字、小文字、数値、特殊文字をそれぞれランダムに生成するモジュールから構成されているが、小文字を生成するモジュールのみSinatraを使ったRubyで書かれており、その他のモジュールはFlaskを使ってPythonで書かれている。コード自体はそれぞれ100行程度の長さの簡単なものとなっているので、内容を理解するのはさほど難しくないだろう。

デモのコードはGitHubで公開されている。

デモシステムのGitHubサイト:https://github.com/timescale/opentelemetry-demo

すべてのモジュールがOpenTelemetryでトレーシングできるように設定されており、OpenTelemetryコレクターから収集されたトレーシングデータはタイムシリーズデータベースであるTimescaleDBに格納される形だ。

デモシステムの構成

デモシステムの構成

ここから実際にGrafanaのダッシュボードを使ってリクエストレート、エラーレートなどを参照するデモを行った。デモアプリケーションからはトレースデータが細かく採取されているため、PromQL(Prometheus Query Language、Prometheusのクエリ言語)を使ったSELECT文などで欲しいデータをグラフなどの形で可視化している。

リクエストの実行時間の分布を表示

リクエストの実行時間の分布を表示

SQLによってさまざまなデータが取れるようすを実演している。またDigitという数値を生成するモジュールではわざと処理を遅らせるコードを入れることで、実際にトレースの中でスパンが長いことを確認できる。

Digitというモジュールだけが処理に時間が掛かっていることが可視化されている

Digitというモジュールだけが処理に時間が掛かっていることが可視化されている

このデモのポイントは、SQLを使ってオブザーバビリティのためのデータを取り込むことが可能であることと、OpenTelemetryを利用する際のサンプルコードを提示したことだろう。デモの内容についてはTimescaleのブログに詳しく解説されている。

デモアプリケーションの解説:Learn OpenTelemetry tracing with this lightweight microservices demo

このデモで紹介されている仕組みが開発される前は、Honeycombが開発した複数のプロセスで実行される複雑なアプリケーションを使ってオブザーバビリティを実演していたという。以前のデモはKubernetesのクラスターが必要な重い構成だったとして、より軽量なデモとして開発されたという経緯も説明されている。デモ自体はSQLによって柔軟にデータが可視化されていることが良く解説されている。

このサイトで紹介されているタイムシリーズデータの活用事例として、アメリカのフットボールリーグであるNFLがプレイヤーやボールの動きをRFIDで検知して各ゲームの分析に役立てているというものがあるので、それを最後に紹介したい。これは「Hacking NFL data with PostgreSQL, TimescaleDB, and SQL」と題されたブログポストで2021年7月27日に公開されている。

NFLでのタイムシリーズデータの活用例:Hacking NFL data with PostgreSQL, TimescaleDB, and SQL

NFLはAWS上ですべてのゲームに関するデータを保存し、Next Gen Statsという形でより科学的な分析が行えるように公開しているという。このデータは公開されており、BIG DATA BOWLというオープンなコンテストとして分析を競う機会を提供しているのが興味深い。コンテストとして実施することで、NFLチーム以外のエンジニア、データサイエンティストがさまざまな結果(例えば、最もラッシュが成功するルートは何か?)を発見し、NFLでデータサイエンティストとして働きたい人材を発掘することに役立っているという。

参考:Big Data Bowl

SQLで前進したヤード数を計算

SQLで前進したヤード数を計算

このSQLの例ではすべてのチームのすべてのゲームからクオーターバック、ランニングバック、ワイドレシーバー、タイトエンドなどのポジションのプレイヤーがどれだけのヤード数を獲得したのかを算出している。

このようにオブザーバビリティとしてのタイムシリーズデータという側面だけではなく、さまざまな利用形態が考えられるというのがTimescaleとしての訴求ポイントだろう。時系列データの処理を検討している企業には参考となる事例だ。

このデモで利用されているタイムシリーズデータベース及びPromscaleについては以下の公式サイトを参照されたい。

Timescale公式サイト:https://www.timescale.com/

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

OSSイベント

Open Source Summit Japan 2022開催。車載からストレージ、Kubernetesまで幅広いトピックをカバー

2023/4/26
2022年12月、横浜でOpen Source Summit Japanが開催された。リアルでは約500名が参加し、車載システムからSBoM、AIまで広範なセッションが行われた。
開発言語イベント

WASM Meetup@ByteDanceで垣間見たWebAssemblyの静かな広がり

2023/4/11
ByteDanceのシリコンバレーオフィスで開催されたWebAssemblyのミートアップを紹介。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています