Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RDS のトラブル発生に備えて!やっておくべき設定・監視 #jawsdays2021 #jawsdays2021_B

RDS のトラブル発生に備えて!やっておくべき設定・監視 #jawsdays2021 #jawsdays2021_B

25b30e875da37bab1edc8fbc2fe23df7?s=128

もっさん

March 20, 2021
Tweet

Transcript

  1. RDSのトラブル発生に備えて! やっておくべき設定・監視

  2. 橋本(伊豫谷) 優希 / もっさん Yuki Hashimoto(Iyotani) / mossan Twitter :

    @_mossann_t クラスメソッド株式会社 オペレーション部 テクニカルサポートエンジニア 好きなAWS サービス : WorkSpaces , IoT Core ブログhttps://dev.classmethod.jp/author/iyotani-yuki/
  3. 本セッションの対象者 • RDS を使い始めたばかりの方 • RDS のモニタリング・ログの設定を行ったことがない方 • モニタリング・ログ設定の重要性を説明する立場の方

  4. 今日お話しすること • RDS のモニタリング・ロギング機能の概要 • 各機能の設定手順 お話ししないこと • ログやメトリクスからの切り分け手法 •

    サードパーティ社製品の概要や設定方法 • データベースのチューニング
  5. 突然ですが

  6. RDSがなんだかおかしい!!! ……といった場面に遭遇したことはありますか?

  7. 「なんだかおかしい」の具体例 • 応答遅延 • 応答してない • アプリケーションやWEBサーバとの接続断 • 再起動

  8. 調査しようとしたけれど…… • RDS のCloudWatch 標準メトリクスには EC2でいう「StatusCheckFailed」がない →システム側(AWS基盤側)の問題なのか、インスタンス内部の問題なのかは  CloudWatch 標準メトリクスの値からは読み取りにくい •

    CPU使用率が高い理由は CloudWatch だけではわからない (処理が重いクエリのせい ? メンテナンス? 他の原因?) • メモリ使用率はCloudWatch 標準メトリクスでは取得できない
  9. 原因が不明 = 改善できない

  10. RDS のモニタリング・ログ機能は CloudWatch 標準メトリクスだけではない! • Performance Insights • 拡張モニタリング •

    スロークエリログ • RDS イベントに対する通知
  11. RDS のモニタリング・ログ機能は CloudWatch 標準メトリクスだけではない! • Performance Insights • 拡張モニタリング •

    スロークエリログ • RDS イベントに対する通知
  12. Performance Insights • DB への負荷がグラフで可視化できる • 以下のことがわかる • アクティブなセッション数 (DBのレスポンス待ちの接続数

    ) • 待機イベント(ボトルネックになっているイベント ) • DB への負荷が高いクエリ • 最大 vCPU 値 参考:Performance Insights の概要 - Amazon Relational Database Service https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PerfInsights.Overview.html
  13. Performance Insights • RDS コンソールから RDS インスタンスを作成する場合、デフォルトで有効になっている • 作成時にPerformance Insights

    を有効化していなかった場合も、後から有効化できる • データの保持期間を選択できる • 7日間(無料枠あり) • 2年間(長期保存) 参考: Performance Insights の有効化と無効化 - Amazon Relational Database Service https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PerfInsights.Enabling.html 料金 - Performance Insights | AWS https://aws.amazon.com/jp/rds/performance-insights/pricing/
  14. Performance Insights • RDS コンソールの場合:[データベース] - 対象DBインスタンスを選択 - [変更]

  15. Performance Insights • AWS CLI の場合:rds modify-db-instance コマンド 参考:Performance Insights

    の有効化と無効化 - Amazon Relational Database Service https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_PerfInsights.Enabling.html aws rds modify-db-instance \ --db-instance-identifier sample-db-instance \ —enable-performance-insights
  16. RDS のモニタリング・ログ機能は CloudWatch 標準メトリクスだけではない! • Performance Insights • 拡張モニタリング •

    スロークエリログ • RDS イベントに対する通知
  17. 拡張モニタリング • メモリ使用率など、OSからのメトリクスを取得できる • どのプロセスやスレッドで CPUが使われているのかわかる • CloudWatch Logs にデータが保存できる

    参考:拡張モニタリングの使用 - Amazon Relational Database Service https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html
  18. 拡張モニタリング • [データベース] - 対象データベースを選択 - [変更] -モニタリング

  19. RDS のモニタリング・ログ機能は CloudWatch 標準メトリクスだけではない! • Performance Insights • 拡張モニタリング •

    スロークエリログ • RDS イベントに対する通知
  20. スロークエリログ • 実行に時間がかかっているクエリを記録することができる • 閾値は自分で設定することができる (デフォルトは10秒) • パラメータグループの値を変更することで設定可能 参考:拡張モニタリングの使用 -

    Amazon Relational Database Service https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html
  21. スロークエリログ • [パラメータグループ] - [編集] - slow_query_log の値を 1にする 参考:MySQL

    を実行している Amazon RDS DB インスタンスのログを有効にしてモニタリングする https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-mysql-logs/
  22. スロークエリログ 設定するパラメータ 参考:MySQL を実行している Amazon RDS DB インスタンスのログを有効にしてモニタリングする https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-mysql-logs/ slow_query_log

    有効 (1) / 無効(0) Long_query_time 実行時間の閾値(秒) slow_query_log_file ログファイルパス
  23. スロークエリログ 設定の注意点 設定の反映に再起動が必要になる場合がある • パラメータグループの入れ替えを行う場合 (デフォルトのパラメータグループの値は変更できない ) • 変更した値の「適用タイプ」が static

    の場合 参考:MySQL を実行している Amazon RDS DB インスタンスのログを有効にしてモニタリングする https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-mysql-logs/
  24. RDS のモニタリング・ログ機能は CloudWatch 標準メトリクスだけではない! • Performance Insights • 拡張モニタリング •

    スロークエリログ • RDS イベントに対する通知
  25. RDS イベントに対する通知 • RDS のイベントサブスクリプション機能を使って、 RDS へなんらかのイベントが発生した時、 Eメール通知やSNS トピックへ配信できる •

    特定インスタンスや特定クラスターのみ、特定のイベントのみ通知することも可能 参考:Amazon RDS イベント通知の使用 - Amazon Aurora https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_Events.html
  26. RDS イベントに対する通知 • [イベントサブスクリプション ] - [イベントサブスクリプションの作成 ]

  27. RDS イベントに対する通知 • Eメール通知の場合 : [新しいEメールトピック] • 「これらの受取人を含みます」にメールアドレスを記載

  28. RDS イベントに対する通知 • 2021 / 02 /19 の神アップデート (AWS さん本当にありがとうございます

    ) Amazon RDS がマルチ AZ 配置用の新しいイベントを発行 https://aws.amazon.com/jp/about-aws/whats-new/2021/02/amazon-rds-publishes-new-ev ents-multi-az-deployments/ • RDS がマルチAZ 配置の場合、フェイルオーバー 理由が イベントでわかるように • 従来は、フェイルオーバーの要因をユーザーが知ることができる項目はなかった 参考:[アップデート] RDS マルチAZ配置で「フェールオーバー時の ”理由”」がイベントログで確認できるようになりました! | DevelopersIO https://dev.classmethod.jp/articles/rds-publishes-new-events-multi-az-deployments/
  29. RDS のモニタリング・ログ機能は CloudWatch 標準メトリクスだけではない! • Performance Insights • 拡張モニタリング •

    スロークエリログ • RDS イベントに対する通知
  30. 注意事項 • RDSのパフォーマンスにわずかに影響する可能性がある →どうしてもパフォーマンス低下が見受けられる場合は、  データの取得頻度を減らす、メトリクスの粒度を大きくするなどの調整を検討ください • 今回紹介したモニタリングデータやログは、設定以後から取得可能 →設定をオンにする以前のデータは遡って取得できない  問題が発生した時に備えて、ぜひモニタリング・ログデータの取得設定を!

  31. 最後に • RDS に限らず、サーバは落ちるもの • 大事なデータベースは、マルチ AZなどの冗長化や リードレプリカなどの負荷分散の検討が必要 • 落ちた時に、落ち着いて状況を把握したり、次につながる改善策を考えるためにも、

    モニタリングとロギングは超大事
  32. 原因がわかれば怖くない!

  33. None