Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

計測は一度、エクスポートはどこへでも:OpenCensus実践

By Aviv LauferMar 20, 20182 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

1 d5 bkyyjuqallljychz2ba

数か月前、GoogleがOpenCensusを発表しました。テレメトリとトレース収集のためのベンダーニュートラルなオープンソースライブラリです。OpenCensusを使えば、アプリからのメトリクス収集や、リクエストの進行状況のトレースを手軽に行えます。

多くの場合、データを収集する処理と、それをトレーシング/モニタリング基盤へエクスポートする処理は明確に分かれています。プロジェクトでOpenCensusを使い始め、トレースしたいメトリクスやモニタリングしたい指標が見えてきたあとも、メトリクス収集ロジックには一切手を加えることなく、別のモニタリング基盤に切り替えたり、複数の基盤を同時に使ったりできます。

私たちDoiT Internationalでは現在、イベント分析パイプラインのリファレンスアーキテクチャとその実装を開発中です(まだ作業中ですが、こちらから先行プレビューをご覧いただけます)。

APIはGoで実装しており、システムの稼働状況や、独自に公開したいカスタムメトリクスをユーザーが把握できるようにしたいと考えていました。かつては、まずモニタリング基盤を選定する必要があり、後から別のものに乗り換えるとなると相応の時間(とコスト)がかかったものです。しかし、オープンソースのシステムを開発する場合、どこにどう展開され、どのようにモニタリングされるかを事前に決めきれないこともあります。そんなときはどうすればよいのでしょうか。

OpenCensusなら、事前にほとんど何も決め打ちする必要がありません。モニタリング基盤の選択が密結合になっておらず、複数のモニタリングやメトリクス収集の仕組みを併用することもできます。

選択したモニタリング基盤にメトリクスを公開するには、新しい_exporter_を作成して登録するだけで済みます。

https://gist.github.com/avivl/15fd071ca0212838aebec2e45430eb1c

メトリクスの作成もとても簡単で、種類と表示方法を決めるだけです。

https://gist.github.com/avivl/32ed40cbbfb8bbc07e3b3ae07a161251

あとはメトリクスを収集するだけ。_Record_メソッドを呼び出して必要なデータを渡せば完了です。

https://gist.github.com/avivl/f49969508a846fbf0abd1a7a37825c52

以下のチャートのとおり、メトリクスはPrometheusとStackdriverの両方にエクスポートされ、それぞれの基盤上で可視化されます。

1 gxsw5wj6gdp6 zcbhiu 7qPrometheus・Grafanaのダッシュボード1 3gi3tdhbv2erve90zorimwStackdriverのダッシュボード

他の記事もぜひご覧ください。ブログをチェックするか、AvivのTwitterをフォローしてみてください。