7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] MySQL Database Service でモニタリング監視をしてみた

Last updated at Posted at 2020-09-26

はじめに

前回の記事で、MySQL Database Service の Getting Started をやってみました。今回の記事では、Oracle Cloud Infrastructure(以下OCI) に標準的に備わっている Monitoring で、基本的なモニタリング監視を行う手順を紹介します。

次の2種類の方法を紹介します

  • CPU 使用率が 80% を超えたことを検知して、メール送信

  • 死活監視してメール送信 (厳密には異なる)

死活監視の部分は、「CPU 使用率のメトリックが無い状態」を検知してアラートを行います。「CPU使用率のメトリックが無い状態」は、MySQL インスタンス側で通常では考えにくい何らかの障害が発生していると考えられます。
厳密に、MySQL Server として稼働していることを確認したい場合は、実際に MySQL Client で 3306 Port に対して接続して Select クエリーを実行するといった、別の方法で死活監視するのがよいでしょう。

MySQL Database Service Metrics

MySQL Database Service で取得可能なメトリクスは、次の Document で一覧化されています。

  • CurrentConnections : Total Connection 数
  • ActiveConnections : Active Connection 数
  • Statements : Statement の実行された回数
  • StatementLatency : 実行された全 Statement のレイテンシー
  • CPUUtilization : CPU使用率
  • MemoryUtilization : メモリ使用率
  • DbVolumeReadOperations : DB Volume に対する、読み込みオペレーションの回数
  • DbVolumeWriteOperations : DB Volume に対する、書き込みオペレーションの回数

色々便利そうなメトリクスがありますね。特に便利そうなのが、StatementLatency です。本番稼働中の標準的な StatementLatency がわかれば、そこから閾値を計算して、レイテンシーがあまりにも遅すぎる状態のアラートが出来そうですね。

Metric を実際に見てみましょう。MySQL Database Service から、対象のインスタンスを選択します。

1601094955757.png

インスタンスの詳細画面で、Metric が見えます

1601095038945.png

メール送付設定

Notifications という名前のサービスで、メールの宛先を設定します。

1601095551027.png

Create Topic

1601095589569.png

適当に名前を入れて、Create を押します。

1601095615712.png

名前を選択します

1601095657330.png

Create Subscription

1601095691677.png

メール通知したいメールアドレスを指定して、Create を押します

1601095732525.png

Pending となります。

1601095762126.png

設定したメールアドレスに確認メールが送付されます。Confirm をクリックすると確認完了です。

1601095870698.png

オレンジ色で Pending だったものが、Active に切り替わります。これで、Notifications の設定はおわりです。

1601095924626.png

CPU 使用率でアラーム設定

それでは、MySQL Database Service の CPU 使用率の設定をしていきます。
CPU Utilication の Metric のところで、Create an Alarm on this Query を選びます。

1601095221950.png

各種パラメータを入れて、Save Alarm を押します。

Alarm Name がメールアドレスのタイトルとなります。
Alarm Body が、メール本文に書かれます。

1601096321403.png

設定完了です

1601096347160.png

動作確認 : CPU 使用率のアラーム

mysqlslap は、MySQL サーバーのクライアント負荷をエミュレートし、各段階のタイミングをレポートする診断プログラムです。複数のクライアントがサーバーにアクセスしているかのように作動します。今回は、mysqlslap を使って、MySQL Database Service に負荷を掛けてみます。

200台のクライアントがクエリーを実行し、それぞれ400 のクエリーを発行する負荷を掛けてみます。
※sqlslap で頑張っても、80% を超すのは難しかったので、実際の検証ではアラームの閾値を下げました

mysqlslap --delimiter=";" \
  --auto-generate-sql \
  --auto-generate-sql-add-autoincrement \
  --auto-generate-sql-load-type=mixed \
  --auto-generate-sql-write-number=250 \
  --number-of-queries=1000 \
  --concurrency=200 \
  --iterations=400 \
  --create-schema=test \
  --host="sugimysql.publicsubnet01.testuser001.oraclevcn.com" \
  --user="admin" \
  --password="your password"

Alarm の詳細画面を見ると、設定した閾値を超えていることがわかります

1601098182335.png

自動的にメールが送られてきます。メール文面は、Notifications で送付しているため、メタデータが多く含まれています。

1601098311267.png

メール文面をキレイにしたい場合は、Notifications ではなく、Oracle Functions と Email Delivery を使うことで出来るはずです。

死活監視

厳密な意味とは異なりますが、MySQL Database Service の死活監視設定を行います。死活監視の部分は、「CPU 使用率のメトリックが無い状態」を検知してアラートを行います。「CPU使用率のメトリックが無い状態」は、MySQL インスタンス側で、通常では考えにくい何らかの障害が発生していると考えられます。

CPU 使用率と同様に、CPU Utilization からアラーム設定をします。

1601099141971.png

各種パラメータの設定をします。大事なポイントは、OPERATOR を absent を指定するところです。これは、データが存在しない状態を判断するための指定です。

1601099317649.png

動作確認 : 死活監視

死活監視の動作確認をします。インスタンスの障害を疑似的に起こすために、停止をします。

1601099469394.png

停止方法が聞かれますが、Fast のまま Stop します (検証環境で、何も負荷が無い状態だったら、Immidiate の方が良いかも)

1601099496255.png

インスタンスを停止することで、Metric 上では、データが無くなります。この状態だと、MySQL がなんらかの問題が発生していると想定できます。

1601099844247.png

インスタンス停止してから数分後、次のメールが届きます。無事に死活監視が出来ていますね。

1601099958185.png

7
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?