StatsD プラグイン

StatsD は指標を送信するためのプロトコルであり、指標データを集計するためのデーモンです。モニタリング エージェントの StatsD プラグインを構成することで、エージェントを Monitoring に指標を書き込む StatsD デーモンとして機能させることができます。

カスタム指標を Monitoring に送信するには、StatsD プラグインをデフォルト構成のまま使用するのが最も簡単な方法です。StatsD プラグインは Linux Stackdriver Monitoring エージェントでのみ使用できます。

Monitoring エージェントは他の collectd 指標をカスタム指標としてエクスポートすることもできますが、そのための単純なデフォルト構成はありません。詳しくは、エージェントからのカスタム指標をご覧ください。

検出

Monitoring は StatsD を自動的に検出しません。StatsD 指標を使用するには、次のセクションの説明に従って StatsD プラグインを構成します。

StatsD プラグインの構成

要件

StatsD プラグインは、バージョン 5.5.2-356 以降のモニタリング エージェントを必要とします。エージェントを更新するには、エージェントの更新をご覧ください。

プラグインの有効化

Linux を実行しているサポート対象の VM インスタンスで次の操作を行います。

  1. 次のコマンドを使用して、statsd.conf をダウンロードして /opt/stackdriver/collectd/etc/collectd.d/ に配置します。

    (cd /opt/stackdriver/collectd/etc/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/statsd.conf)
    
  2. このデフォルト構成ファイルは、デフォルトの StatsD ポート 8125 で StatsD 指標を受け入れるように設定されています。

    一部の指標を独自の StatsD デーモンに送信し、その他の指標をエージェントの StatsD デーモンに送信する場合は、構成ファイルでポート設定を変更してください。

  3. 次のコマンドを実行して、モニタリング エージェントを再起動して StatsD 構成を読み込みます。

    sudo service stackdriver-agent restart
    

StatsD プラグインの他の構成オプションについて詳しくは、collectd.org の Plugin:StatsD をご覧ください。

カスタム指標へのデフォルト マッピング

速やかに使用を開始できるように、エージェントの StatsD プラグインには、StatsD 指標を Stackdriver のカスタム指標にマップするデフォルトの collectd 構成が付属しています。

  • StatsD プラグインからの指標はすべて、collectd plugin コンポーネントが statsd になっています。

  • 各 StatsD 指標タイプ(collectd type コンポーネントに保持されている)には、対応するカスタム指標タイプの名前が設定されています。

  • StatsD 指標名(collectd type_instance コンポーネントに保持されている)は、metric というラベルの値として保持されます。

    指標タイプ Timer では、metric ラベルの値が他とは異なり、指標名とカウンタ名(average、upper、lower、sum、percentile-50、percentile-95)の両方がラベルの値に含まれます。

たとえば、次の表は、サポートされている StatsD 指標タイプと指標名が Monitoring のカスタム指標にどのようにマップされるかを示します。

StatsD タイプ StatsD の名前 Stackdriver の指標タイプ 指標の種類 値の型 指標ラベル
カウンタ my.counter custom.googleapis.com/statsd/derive Cumulative Int64 metric:my.counter
ゲージ my.gauge custom.googleapis.com/statsd/gauge Gauge Double metric:my.gauge
設定 my.set custom.googleapis.com/statsd/objects Gauge Double metric:my.set
タイマー1 my.timer custom.googleapis.com/statsd/latency Gauge Double metric:my.timer-average
(同じ) (同じ) (同じ) metric:my.timer-upper
(同じ) (同じ) (同じ) metric:my.timer-lower
(同じ) (同じ) (同じ) metric:my.timer-sum
(同じ) (同じ) (同じ) metric:my.timer-percentile-50
(同じ) (同じ) (同じ) metric:my.timer-percentile-95
custom.googleapis.com/statsd/gauge Gauge (同じ) metric:my.timer-count

注:
1 同じ名前の statsd タイマー指標には受信シーケンスがあります。エージェントはこれらの StatsD タイマー指標を集計し、集計データを 7 つの異なる時系列にエクスポートします。

StatsD タイプについて詳しくは、StatsD の仕様をご覧ください。

エクスポートする指標のカスタマイズ

StatsD のデフォルト構成は、速やかに使用を開始できるように設計されています。このセクションは、より複雑なニーズに合わせて構成をカスタマイズする場合にお読みください。

ここでは、Stackdriver のカスタム指標について十分な知識があることを前提とします。Stackdriver 指標の概要については、指標、時系列、リソースをご覧ください。カスタム指標の詳細については、カスタム指標をご覧ください。

次のものをカスタマイズできます。

  • デフォルトの metric ラベルに割り当てられる値を変更できます。使用するラベルの値を増やすと、カスタム指標の時系列の数も増えます。使用するラベルの値を少なくすると、時系列の数も少なくなります。

  • カスタム指標タイプを変更できます。必ずしも、デフォルト構成で提供されている事前定義されたタイプを使用しなくてもかまいません。たとえば、ある特定の名前で指標を識別し、それらに対して異なるカスタム指標タイプを使用できます。

  • カスタム指標タイプを変更する場合、各タイプに関連付けられたラベルも変更できます。デフォルト構成ではラベルは 1 つだけですが、ラベルの数を増やしたり、ラベルのキーを変更したりできます。

指標タイプを変更する場合は、新しいカスタム指標タイプを Monitoring API で定義します。詳しくは、次のセクションのカスタム指標タイプの設計をご覧ください。

StatsD を使用して、my_service_amy_service_b の 2 つのサービスで構成されたアプリケーションをモニタリングするとします。各サービスについて、失敗したリクエストの数を表すカウンタ指標を Monitoring にエクスポートします。デフォルトの StatsD 指標タイプは使用しません。

受信 collectd 指標

独自のカスタム指標タイプを定義する前に、collectd 指標の構造と、StatsD 指標がデフォルトでカスタム指標にどのようにマップされるかを理解しておくことが重要です。

collectd 指標(StatsD 指標もその 1 つです)には次のコンポーネントが含まれます。

    Host, Plugin, Plugin-instance, Type, Type-instance

この例では、エクスポートする StatsD 指標は次の collectd 識別子を持ちます。

コンポーネント 期待される値
ホスト 任意
プラグイン statsd
プラグイン インスタンス 設定なし1
タイプ derive2
タイプ インスタンス [SERVICE_NAME].GET.[CODE]3
[VALUE] 任意の値4

:
1 StatsD プラグインでは、現在このコンポーネントは設定されていません。
2 StatsD カウンタ指標は collectd derive タイプにマップされています。 3 たとえば、タイプ インスタンスは my_service_a.GET.500 のようになります。 4 [VALUE] は通常、タイムスタンプと倍精度数です。

次の表に、この指標がデフォルトでどのようにマップされるかを示します。

StatsD タイプ StatsD の名前 Stackdriver の指標タイプ 指標の種類 値の型 指標ラベル
カウンタ my_service_a.GET.500 custom.googleapis.com/statsd/derive Cumulative Int64 metric:my_servce_a.GET.500
カウンタ my_service_b.GET.403 custom.googleapis.com/statsd/derive Cumulative Int64 metric:my_servce_b.GET.403

このデフォルト マッピングには次のような問題があります。

  • この特定のカウンタ指標([SERVICE_NAME].GET.[CODE])は、他のすべてのカウンタ指標と同じカスタム指標タイプに属します。Stackdriver は現時点でラベルの正規表現検索をサポートしていないため、この指標のデータだけを簡単に取得することはできません。

  • 得られたデータから個々のサービスまたは個々のレスポンス コードに関するデータを簡単に取得できません。たとえば、my_service_a で発生した(全種類の)エラーの総数を取得するのは困難です。

  • デフォルト構成ではすべての StatsD 指標が Stackdriver にエクスポートされます。関心のある指標が一部だけの場合、すべての StatsD 指標をエクスポートすると余計なコストがかかる可能性があります。

カスタム指標タイプの設計

カスタム指標タイプの作成について詳しくは、カスタム指標の作成をご覧ください。

この例のデータでは次のカスタム指標タイプを使用するのが妥当です。そうすれば、関心のある StatsD 指標のみが保持されるとともに、ラベルによってデータをうまく整理できます。

  • 名前: custom.googleapis.com/http/request_errors
  • ラベル:
    • service_name(STRING): サービスの名前。
    • response_code(INT64): HTTP レスポンス コード。
  • 種類: CUMULATIVE
  • 型: INT64

次の表に、StatsD から Stackdriver への望ましいマッピングを示します。

StatsD タイプ StatsD の名前 Stackdriver の指標タイプ 指標の種類 値の型 指標ラベル
カウンタ my_service_a.GET.500 custom.googleapis.com/http/request_errors Cumulative Int64 service_name:my_service_a、response_code:500
カウンタ my_service_b.GET.403 custom.googleapis.com/http/request_errors Cumulative Int64 service_name:my_service_b、response_code:403

指標タイプの設計が済んだら、metricDescriptors.create を使用して指標タイプを作成します。Monitoring で指標タイプを自動的に作成する方法について詳しくは、カスタム指標の自動作成をご覧ください。

マッピング構成

StatsD 指標を新しいカスタム指標タイプにエクスポートするには、StatsD プラグインのデフォルト構成(/opt/stackdriver/collectd/etc/collectd.d/statsd.conf)の内容を次のコードで置き換えます。

<Plugin statsd>
  Host "127.0.0.1"
  Port "8125"
  DeleteSets true
  TimerPercentile 50.0
  TimerPercentile 95.0
  TimerLower true
  TimerUpper true
  TimerSum true
  TimerCount true
</Plugin>

LoadPlugin match_regex
LoadPlugin target_set
LoadPlugin target_replace

# Insert a new rule in the default "PreCache" chain, to divert your metrics.
PreCacheChain "PreCache"
<Chain "PreCache">
  # The following rule does all the work for your metric:
  <Rule "rewrite_request_errors">
    # Do a careful match for just your metrics; if it fails, drop down
    # to the next rule:
    <Match regex>
      Plugin "^statsd$"
      TypeInstance "^.*\\.GET\\..*$"    # Match on type instance.
    </Match>

    <Target "set">
      # Specify the metric descriptor name:
      MetaData "stackdriver_metric_type" "custom.googleapis.com/http/request_errors"
      # Initialize the labels from the "type_instance" label; clean the values up in the next Target below.
      MetaData "label:service_name" "%{type_instance}"
      MetaData "label:response_code" "%{type_instance}"
    </Target>

    <Target "replace">
      # Remove ".GET.[code]" to get the real service name.
      MetaData "label:service_name" "\\.GET\\.[0-9]*$" ""
      # Remove "[service].GET." to get the real response code.
      MetaData "label:response_code" "^[^\\.]*\\.GET\\." ""
    </Target>
  </Rule>
</Chain>

エージェントの再起動

VM インスタンスで次のコマンドを実行することにより、エージェントを再起動して新しい構成を読み込みます。

sudo service stackdriver-agent restart

これでカスタム指標の情報が Monitoring に直ちに流れ込みます。

次のステップ

StatsD プラグインのカスタマイズは、collectd 指標を Monitoring のためにカスタマイズする特殊なケースです。詳しくは、エージェントからのカスタム指標にあるリファレンスとトラブルシューティングをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。