こんにちは。
株式会社HRBrainでエンジニアをしているみつです!
新規プロダクトに配属されてから初のQiita投稿!(頑張るぞ)
そこまで長い記事ではないですが、Query Insightsという機能、良き!と思いメモ
目次
- Query Insightsとは?
- Query Insightsで取得できるデータ
- Terraformで設定する各項目
- データを見るのに必要なこと
- Query Insights導入後の懸念
- Query Insightsによるインシデント対応
- 参考文献
- PR
Query Insightsとは?
Query Insights では、Cloud SQL データベースに対するクエリ パフォーマンスの問題を検出、診断、防止できます。直感的なモニタリングをサポートし、検出するだけでなくパフォーマンスの問題の根本原因の特定に役立つ診断情報を提供します。
- クエリのパフォーマンスとかを見ることができるもの。(取れる詳細なデータは後述。)
Query Insights に追加料金は発生しません。Query Insights ダッシュボードから 1週間分のデータにアクセスできます。
- 追加料金の発生なし
- 1週間分のデータが取得できるらしい。(ちょっと短い...?)
Query Insightsで取得できるデータ
- クエリ: 正規化されたクエリ文字列。Query Insights では、デフォルトでクエリ文字列の 1,024 文字のみが表示されます
- データベース: クエリが実行されたデータベース
- 負荷(合計時間別)/ 負荷(CPU 別)/ 負荷(IO 待機別)/ 負荷(ロック待機別): 特定のクエリをフィルタして最大の負荷を見つけるオプションです
- 平均実行時間(ミリ秒): クエリの平均実行時間
- 呼び出された回数: アプリケーションがクエリを呼び出した回数
- 返された平均行数: クエリに対して返された行数の平均
- 平均スキャン行数: クエリでスキャンされた行数の平均
Terraformで設定する各項目
-
[query_insights_enabled]
: バイト単位で保存される最大のクエリーlength。256から4500の間で指定する。デフォルトは1024。クエリーlengthが長いほど分析クエリに便利だが、より多くのメモリを必要とする。クエリ長を変更するには、インスタンスを再起動する必要がある。 -
[record_application_tags]
: アプリケーションタグを記録するにはTrueに設定 -
[record_client_address]
: クライアントアドレスを記録するにはTrueに設定 -
[query_plans_per_minute]
: 1分間にInsightsがキャプチャしたクエリ実行プランの数。0から20の間で指定する必要があり、デフォルトは5。
データを見るのに必要なこと
- Query Insightsをenable trueで設定
- Query Insights機能を、まずenableにする。
-
cloudtrace.traces.get
IAM権限を追加- データを見るための権限設定としてIAM権限を付与する。
Query Insights導入後の懸念
1週間以上前のデータはどうするか
1週間以上前のデータを確認できないのは少し不便かもなと思う。
あくまで簡単にできるし、やらない理由ってあまりないよね、なツール。
「集計をして分析したい」「インシデント対応で必要に迫られてデータを長期間にわたり確認する必要がある」などの場合は、オブザーバビリティツールなどで設定しておく必要がありそう。
誰が実行したかを詳細に追いたい場合
ユーザー管理があるアプリケーションでAPIが叩かれ、SQLが発火する場合、「どのページで誰が何のSQLを実行したか」みたいなデータまでは取得することができない。
こういった場合も、必要に応じてオブザーバビリティツールのLog収集の設定が必要になりそう。
Query Insightsによるインシデント対応
Query Insightsを設定するのは簡単で、実際にインシデントなどの対応で使えたという記事も見かけたので。
設定しておくだけで少しは安心できそう。
参考文献
PR
HRBrain では一緒に働く仲間を募集しています!
一緒に高みを目指しましょ〜!