
コスト最適化の余地があるクエリを可視化し、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_CC": [\
"\
```\
\
[[email protected]](mailto:[email protected])\
\
```\
"\
],
"FIELDS_TO_RETRIEVE": [\
"job_id",\
"user_email",\
"total_bytes_billed",\
"total_bytes_processed"\
]
}
bq-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をフォローしてみてください。