Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

高コストなGoogle BigQueryクエリを見逃さない

By Vadim SoloveySep 24, 20192 min read

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

1 gqtfxmqd1oa8uesnnnkbrw

コスト最適化の余地があるクエリを可視化し、Google BigQueryでのクエリ実行のコツ(とNG例)をチームに浸透させましょう。

高コストなクエリを検知するBigQuery snitchの活用例

最適化されていないGoogle BigQueryクエリを誤って実行してしまうことは、誰にでも起こり得ます。大切なのは、そうしたクエリをいち早く見つけ、原因から学び、得た知見を次に活かしていくことです。

DoiT InternationalではGoogle Managed Service Providerとして、「実行された瞬間にこうしたクエリをチームで把握する方法はないか」というご相談を日常的にいただいています。同僚のMoshe Ohayonがこの課題にスマートな解決策を考案し、誰もが利用(そして改善!)できるオープンソースとして公開しました。

READMEの手順に沿って、単一のGoogle Cloud Functionをデプロイするだけで、すべてのGoogle BigQueryクエリを監視し、`ALERT_THRESHOLD`を超えたものをSlackに通知できます。

以下の`config.json`は、$10を超えるすべてのクエリに対してアラートを発生させ、Slackとメールに通知を送る設定例です。

{
"

ALERT_THRESHOLD": 10

,
"TB_COST": 5,
"SLACK_ALERT": true,
"SLACK_WEBHOOK_URL": "

https://hooks.slack.com/services/.

..",
"SLACK_WEB_API_TOKEN": "",
"SLACK_WEB_API_DESTINATION_CHANNEL": "",
"EMAIL_ALERT": true,
"SENDGRID_API_KEY": "SG...",
"EMAIL_SENDER": "

[email protected]

",
  "EMAIL_CC": [\
    "\
```\
\
[[email protected]](mailto:[email protected])\
\
```\
"\
  ],
  "FIELDS_TO_RETRIEVE": [\
    "job_id",\
    "user_email",\
    "total_bytes_billed",\
    "total_bytes_processed"\
  ]
}

1 xmiy6uklefgx793 uuw3ewbq-snitchの通知がSlackに投稿される様子。サンプルクエリにひねりがなかった点はご容赦ください ;-)

bq-snitchはメール通知にも対応しています。Google Cloud PlatformプロジェクトでSendgridを有効化し、Sendgrid APIキーをconfig.jsonに設定してください。

Taboola.comはbq-snitchの初期ベータテスターの1社です。

「このツールがもたらす可視性の向上は、はっきりと体感できます。フィードバックがスピーディかつ的確で、クラウドコスト管理全体の改善に大いに役立っています。」

Google BigQuery(とSlack/メール)をお使いなら、ぜひbq-snitchをお試しください。改善のアイデアがあれば、GitHubでのIssueやPull Requestをお待ちしています。

どれも当てはまらない場合は、せめてスターをつけていただけると嬉しいです 😇

もっと記事を読みたい方は、ブログをご覧いただくか、TwitterでVadimをフォローしてみてください。