MySQL Database Service のモニタリングを考える

MySQL Database Service のモニタリング

MySQL Database Service (以下 MDS) はマネジメントサービスではありますが、死活監視やパフォーマンスに関するメトリクスは収集したいと思う事があるのでは無いでしょうか

そこで、本記事では MDS のモニタリングについて、3パターンほど検討してみたいと思います

OCI Monitoring サービス

OCI には標準で Monitoring サービスが備わっています、 MDS ももちろん Monitoring サービスで各種リソース情報のモニタリングに対応しており、以下のメトリクスが 対象 となっています

目次

MySQL Databaseサービス・メトリック

メトリック メトリック表示名 単位 説明
CurrentConnections 現在の接続 count MySQL Databaseへの接続の合計数
ActiveConnections アクティブな接続 count MySQL Databaseへのアクティブな接続の数
Statements 文の数 count MySQL Databaseに対して実行された文の数
StatementLatency 文レイテンシ ms 実行されたすべての文の文待機時間
CPUUtilization CPU使用率 パーセント MySQL DatabaseホストのCPU使用率
MemoryUtilization メモリー使用率 パーセント MySQL Databaseホストのメモリー使用率
DbVolumeReadOperations ディスク読取り操作 count DBボリュームに対する読取り操作の合計数
DbVolumeWriteOperations ディスク書込み操作 count DBボリュームに対する書込み操作の合計数
DbVolumeReadBytes ディスク読み取りバイト数 bytes DBボリュームに対する読取りバイト数
DbVolumeWriteBytes ディスク書込みバイト数 bytes DBボリュームに対する書込みバイト数

引用元: 使用可能なメトリック: oci_mysql_database
備考: ディスク読み取りバイト数ディスク書込みバイト数 はドキュメントには記載がありませんが、 2021/01/13 時点で MDS の メトリクスでは表示されるため追加しています
また、 Monitoring サービスのサービス・メトリックでは表示されませんが、メトリック・エクスプローラーでは表示されますので、アラームの設定などは可能なようです

メリット・デメリット

  • OCI 標準で利用可能な Monitoring サービスであるため、特別な設定などは必要なく利用可能
  • oci_compute_infrastructure_health のようなヘルスチェック用のメトリックは存在しないため、単純な死活監視は行えない
  • MySQL のサーバーステータス情報 (SHOW GLOBAL STATUS で取得できる情報) のような詳細情報は取得できない

MySQL Enterprise Monitor

MySQL には MySQL データベースのパフォーマンスなどをリアルタイムで可視化できる MySQL Enterprise Monitor (以下 MEM) というツールがあります
※商用版の MySQL Enterprise Edition よりご利用になれます

MEM を使用することができれば、オンプレミスの MySQL とほとんど同様の監視を行うことが可能になりますが、注意点もありますので、メリット・デメリットと併せて記載させていただきます

メリット・デメリット

  • MDS には SSH などでログインする事ができず、エージェントもインストールできないため、 OS に関連する情報は基本的に取得する事ができません
    • CPU やメモリー使用率の監視の為に、 Monitoring サービスとの併用が望ましいと考えます
  • MEM 用に Compute が必要
  • Hostname は OCI がユニークに設定したホスト名になっている為、表示名を変更しなければ監視対象が判らなくなる
  • MySQL に特化されているため、内部情報など詳細に取得可能

OCI Logging サービス

昨年 8 月に Oracle Cloud Infrastructure Logging サービス (以下 Logging サービス) が正式にリリースされました
Logging サービスは、 OCI のサブネットやロード・バランサーのトラフィックなどをロギングする事ができるサービスとなっています
この Logging サービスでは、 Custom Log という fluentd ベースのエージェントがあり、任意のログファイルを収集する事が可能となっています

今回は、下記のようなスクリプトを Compute に用意し、 MDS の情報が収集できないかを検証してみました

SHOW GLOBAL STATUS の結果を1ファイルごとに保存しています

上記スクリプトの結果を Logging サービスのカスタム・ログで取り込んでみましたが、結果的には監視としては使えませんでした

下記画像のように、特定の値(例として Com_select ) の取得には成功しているのですが、この値をグラフ化したりアラート通知の元にする事はできず、単純に時間あたりの行数しかモニタリングする機能しか OCI には無かったため、カスタム・ログで取り込んだ値をグラフ化したり、アラート通知に用いる事はできませんでした

メリット・デメリット

  • ログデータを JSON でエクスポートする事はできるので、収集だけ Logging サービスで行い、比較・検討は別システムという使い方なら可能
  • Logging サービス用に Compute が必要

まとめ

単純な接続数などの確認をするだけなら、 Monitoring サービスで十分と思われるが、詳細な情報が欲しい場合は、 MEM と Monitoring サービスの併用が望ましいと思います

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃OCIのサポート業務に従事している有資格者で構成された技術サポートチームがOCIに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次