LoginSignup
0

More than 5 years have passed since last update.

DatadogでGoogle LoadBalancerのリクエスト数を見る

はじめに

この記事は、Datadog Advent Calendar 2016 9日目の内容です。
ネタに困っていたのですが、Datadog-Google Cloud Platform Integrationを利用したGoogle Cloud Load Balancing(GCLB)のリクエスト数をDatadog上で見る方法を紹介します。

Datadog設定

では早速設定してみます。Google Cloud Consoleでもリクエスト数を確認できますが、Datadog側でもリクエスト数を見られるようにします。

Load Balancing関連で取得できるMetrics

Datadog-Google Cloud Platform Integrationを有効にしてください。
有効にするとloadbalancing関係では以下のようなMetricsが取得できるようになります。各Metricsの意味はここやIntegrationの設定画面などで確認してください。

Metrics
gcp.loadbalancing.http.backend_latencies.avg
gcp.loadbalancing.http.backend_latencies.max
gcp.loadbalancing.http.backend_latencies.min
gcp.loadbalancing.http.backend_latencies.samplecount
gcp.loadbalancing.http.backend_latencies.sumsqdev
gcp.loadbalancing.http.frontend_tcp_rtt.avg
gcp.loadbalancing.http.frontend_tcp_rtt.max
gcp.loadbalancing.http.frontend_tcp_rtt.min
gcp.loadbalancing.http.frontend_tcp_rtt.samplecount
gcp.loadbalancing.http.frontend_tcp_rtt.sumsqdev
gcp.loadbalancing.http.request_bytes_count
gcp.loadbalancing.http.request_count
gcp.loadbalancing.http.response_bytes_count
gcp.loadbalancing.http.response_code_class_percentage
gcp.loadbalancing.http.total_latencies.avg
gcp.loadbalancing.http.total_latencies.max
gcp.loadbalancing.http.total_latencies.min
gcp.loadbalancing.http.total_latencies.samplecount
gcp.loadbalancing.http.total_latencies.sumsqdev

結構いっぱいありますね。リクエスト数の他、RTTやlatencyの値が取れるようです。リクエスト数をグラフにするには、gcp.loadbalancing.http.request_countを使えば良さそうです。

グラフ定義

後日余力があればスクリーンショットも貼り付けます。一旦jsonでお茶を濁させてください。
GCLBごとにurlmapを作成していると思いますので、urlmap毎に分割したほうがいいような気がします。
sumで足し上げることを忘れずに。また、countよりもrateの方がわかりやすいと思います。

urlmap毎のリクエスト数
{
  "viz": "timeseries",
  "requests": [
    {
      "q": "sum:gcp.loadbalancing.http.request_count{*} by {url_map_name}.as_rate()",
      "aggregator": "avg",
      "conditional_formats": [],
      "type": "area"
    }
  ]
}
特定urlmapのリクエスト数
{
  "viz": "timeseries",
  "requests": [
    {
      "q": "sum:gcp.loadbalancing.http.request_count{url_map_name:<GCLBのurlmap名>}.as_rate()",
      "aggregator": "avg",
      "conditional_formats": [],
      "type": "area"
    }
  ]
}

また、以下のようにすると、http/httpsのプロトコル別リクエスト数やレスポンスコード別リクエスト数もグラフにできます

特定urlmapのプロトコル別リクエスト数
{
  "viz": "timeseries",
  "requests": [
    {
      "q": "sum:gcp.loadbalancing.http.request_count{url_map_name:<GCLBのurlmap名>} by {target_proxy_type}.as_rate()",
      "aggregator": "avg",
      "conditional_formats": [],
      "type": "area"
    }
  ]
}
特定urlmapのレスポンスコード別リクエスト数
{
  "viz": "timeseries",
  "requests": [
    {
      "q": "sum:gcp.loadbalancing.http.request_count{url_map_name:<GCLBのurlmap名>} by {response_code}.as_rate()",
      "aggregator": "avg",
      "conditional_formats": [],
      "type": "area"
    }
  ]
}

他にもforwarding_rule_nameinstance_group_nameなどの切り口で分割できます。
手元のDatadog環境では過去1時間分の期間でグラフ表示をするとなぜかGoogle Cloud Consoleでみられる数字と大きく乖離します。同じような症状になった場合は過去4時間分などのグラフをみたほうが良さそうです。

Stackdriver Loggingでの絞り込み

Stackdriver LoggingのLogs-based MetricsでrequestUrlなどを仕分けをしておくと、Datadogでもその値を見ることができます。ちなみに、この設定はStackdriver Monitoringで値を見る際も必要になる設定になります。

これまたスクリーンショットなしです。余力があれば後日貼り付けたいと思います。Stackdriver側でLogging API が先日変わったこともあり、みなさんの環境と微妙に違うかもしれません。

Stackdriver Logging側設定

Logs-based Metricsは以下の流れで作成できます。以下の説明の名前などは英語版Google Cloud Consoleのものです。日本語版は適宜読み替えてください。

  • Stackdriver Logging -> Logs-based Metrics より「CREATE METRIC」をクリック
  • Filter入力枠へフィルタ内容を入力し、「Submit Filter」をクリック
  • Metric Name(必須)とMetric Description(オプション)を入力して「Create Metric」をクリック

上記のMetric Nameで名前をつけると、StackdriverやDatadogでつけた名前で参照することができます

フィルタ例として、特定urlmapでのレスポンス502でログをフィルタするには以下のように書きます。

v2でのフィルタ例(レスポンスコード502でフィルタ)
resource.type = http_load_balancer AND resource.labels.url_map_name = "<GCLBのurlmap名>" AND httpRequest.status = 502

特定uriへのアクセス件数を数えたいときなどは以下のようにフィルタを書くことができます。

v2でのフィルタ例(uriでフィルタ)
resource.type = http_load_balancer AND resource.labels.url_map_name = "<GCLBのurlmap名>" AND httpRequest.requestUrl: "://<hostとpath>"

Datadog側設定

Datadog側ではgcp.logging.user.<定義した名前>で拾うことができます。

ログ指標の件数
{
  "viz": "timeseries",
  "requests": [
    {
      "q": "sum:gcp.logging.user.<定義した名前>{*} / 60",
      "aggregator": "avg",
      "conditional_formats": [],
      "type": "line"
    }
  ]
}

60で割っているのはrateと同じように単位時間当たりの件数で見たいためです。

最後に

DatadogでGCLBのリクエスト数を見る方法を紹介しました。Integrationを有効にすることでリクエスト数を見るためだけにGoogle Cloud Consoleを開く必要がなくなり、Datadog上で他のMetricsと一緒に見られるようになるのは便利ではないかと思います。

手元のDatadog環境はGCPのIntegrationはあまり調子が良くないみたいで、アラート設定はDatadog側だけで設定するのではなく、Stackdriver側でも設定しています。この辺は改善に期待です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0