コンテンツに移動
管理ツール

Cloud Monitoring での高解像度のユーザー定義指標

2020年9月7日
https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Cloud_Management_Tools.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2020 年 8 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。


動的に変化し続ける環境と、変化の激しいアプリケーションの指標をモニタリングするには、高解像度の指標が不可欠です。高解像度の指標が重要な例として、大量の e コマース、ライブ ストリーミング、Kubernetes クラスタ上のバースト性ワークロードの自動スケーリングなどがあります。現在では、より高解像度のカスタムPrometheus、およびエージェントの指標が一般的に利用可能となり、10 秒の粒度で書き込みが可能になりました。これらの種類の指標は、従来は 60 秒ごとにしか書き込まれなかったものです。

Monitoring エージェントの指標を 10 秒の解像度で書き込む方法

Cloud Monitoring エージェントは、collectd ベースのデーモンで、仮想マシン インスタンスからシステム指標とアプリケーション指標を収集して Cloud Monitoring に送信します。Monitoring エージェントは、ディスク、CPU、ネットワーク、およびプロセス指標を収集します。デフォルトでは、エージェントの指標は 60 秒の粒度で書き込まれます。指標を 10 秒の粒度で送信するようにエージェントの collectd.conf の構成を変更するには、Monitoring エージェントの collectd.conf ファイルで Interval の値を「10」に変更します。

変更を加えた後で、エージェントを再起動する必要があります(オペレーティング システムとディストリビューションによって異なる場合があります)。

sudo service stackdriver-agent restart

高解像度のエージェントの指標を使用するには、Monitoring エージェントのバージョン 6.0.1 以降が必要です。エージェントのバージョンを判定する方法についてのドキュメントはこちらで確認できます。

これで、Monitoring エージェントが指標を 10 秒の粒度で出力するようになったので、Metrics Explorer で “agent.googleapis.com/agent/” というプレフィックスのある指標を検索して確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Metrics_Explorer.max-1300x1300.jpg

カスタム指標を 10 秒の解像度で書き込む方法

カスタム指標を使用すると、Google Cloud の組み込みの指標では得られない指標データを定義して収集できます。アプリケーション、インフラストラクチャ、ビジネスに固有の指標も使用できます。たとえば、e コマース アプリケーションなら「ショッピング カートサービスのレイテンシ」や「繰り返し購入者の割合」などです。

カスタム指標は各種の方法で書き込みできます。Monitoring APICloud Monitoring クライアント ライブラリOpenCensus/OpenTelemetry ライブラリCloud Monitoring エージェントを使用できます。

いくつかの理由から、OpenCensus ライブラリを使用してカスタム指標を書き込むことをおすすめします。

1.オープンソースで、広範な言語とフレームワークがサポートされています。

2.OpenCensus では、ベンダーにかかわらず指標やトレースデータの収集をサポートできます。

3.OpenCensus では、Monitoring API 呼び出しのポイントや一括処理の収集が最適化されています。また、10 秒の解像度や他の間隔で API 呼び出しのタイミングを処理するので、Monitoring API が頻繁に書き込みを行いすぎるという理由でポイントを除去することはありません。さらに再試行、指数バックオフなども処理するので、指標ポイントがモニタリング システムに到着することを保証できます。

4.OpenCensus では収集したデータを Cloud Monitoring など各種のバックエンド アプリケーションやモニタリング サービスにエクスポートできます。

指標のために OpenCensus を使用するようコードを設定するには、以下の 3 つの一般的な手順を行います。

1.OpenCensus 統計情報と OpenCensus Stackdriver エクスポータ パッケージをインポートします。

2.Cloud Monitoring エクスポータを初期化します。

3.OpenCensus API を使用してコードを設定します。

以下は、Cloud Monitoring にカウンタ指標を書き込んで上述のインストルメンテーション手順を示す、最小限の Go プログラムです。

動作中の Go 開発環境がない場合は、Google Cloud Console と Cloud Shell でこれらの手順に沿ってデモプログラムをコンパイルし、実行します。

1.Cloud Monitoring に移動します。Cloud Monitoring を初めて使用するときは、ワークスペースの作成を求められます(デフォルトは、現在の GCP プロジェクトと同じ名前です)。

2.Cloud Console で Cloud Shell を開きます。

3.Monitoring API を有効にするため、gcloud services enable monitoring を実行します。

4.動作中の Go 環境が存在しない場合は、以下の手順に沿って操作します。

1.mkdir ~/go

2.export GOPATH=~/go

3.mkdir -p ~/go/src/testCustomMetrics

4.cd ~/go/src/testCustomMetrics

5.“go mod init” を実行します。

6.touch testCustomMetrics.go

7.テキスト エディタで testCustomMetrics.go を開き、次のコードをコピーします。

8.“go mod tidy” を実行します。注: “go mod tidy” は、パッケージによってモジュールに他動的にインポートされた、すべてのパッケージを検索します。

9.“go build testCustomMetrics.go” を実行します。

10.“./testCustomMetrics” を実行します。

サンプル プログラムは次のようになります。

読み込んでいます...

このプログラムは、3 分間にわたって 1 秒ごとにランダムなスターカウントを書き込みます。このプログラムを見てわかるように、カスタム指標は 10 秒の粒度でのみ書き込むことができます。元の指標ポイントはこれより短い周期で書き込みますが、OpenCensus エクスポータの ‘ReportingInterval’ を 10 秒ごとに設定しているため、エクスポータは Monitoring API の ‘CreateTimeSeries endpoint’ を正しく 10 秒ごとに呼び出します。ポイントをクエリするときは、Metrics Explorer で ‘aligner’ と ‘aggregation’ のオプションを選択します。これにより、10 秒間のスパンに複数のポイントが含まれていても、aligner と aggregation のオプションに基づいて 1 つのポイントが返されます。

プログラムの実行後に、Cloud Monitoring の Metrics Explorer に移動して、“global” リソースに対して書き込まれた “OpenCensus/star_count” 指標を確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Metrics_Explorer_in_Cloud_Monitoring.max-1300x1300.jpg

Prometheus 指標を 10 秒の解像度で書き込む方法

Prometheus モニタリング ツールは Kubernetes とともによく使用されます。GKE 用 Cloud Operations に Prometheus サポートを含むよう構成した場合、Prometheus 表示形式を使用してサービスにより生成される指標をクラスタからエクスポートし、Cloud Monitoring の外部指標として表示できます。

Prometheus のインストールと構成には、Cloud Monitoring へのエクスポート構成も含めていくつかの手順が必要なため、これらの手順に従ってください。OpenCensus には、Prometheus インストルメンテーションの構成のガイド付き Codelab もあります。

Cloud Monitoring にエクスポートされる Prometheus 指標で 10 秒の解像度を可能にするには、“prometheus.yml” の “scrape_interval” パラメータを次のように設定します。

scrape_interval:     10s

Prometheus が Cloud Monitoring に指標をエクスポートするよう正しく構成されたら、Cloud Monitoring の Metrics Explorer に移動して、プレフィックスが external.googleapis.com/prometheus/ の指標を検索します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_Metrics_Explorer_in_Cloud_Monitoring.max-1100x1100.jpg

Cloud Monitoring 指標の料金

Cloud Monitoring の請求可能指標は取り込んだ MB 単位で課金され、最初の 150 MB は無料で、大量の指標を送信するお客様には割引料金階層が適用されます。高解像度の指標を送信する場合、指標データの送信を頻繁に行うことから発生する追加料金以外の費用は発生しません。カスタム指標を書き込む頻度(下限は 10 秒です)はお客様が決定できます。GCP プラットフォーム(システム)の指標は無料で、書き込まれる粒度は各 GCP サービスにより決定されます。

より優れたオブザーバビリティを実現する方法

カスタム、Prometheus、エージェントの指標をより高い解像度で書き込める機能がお客様にとって有用で、観測可能なアプリケーションやサービスを構築するために役立つことを期待しております。

10 秒の粒度の、より高解像度のログベースの指標もロードマップにあるため、今後のブログ投稿で最新情報をご確認ください。

 

-Cloud Monitoring プロダクト マネージャー Rory Petty

-Cloud Monitoring ソフトウェア エンジニア Shishi Chen

投稿先