OCIユーザーにおすすめのMySQL監視サービス

Oracle Cloud Infrastructure(OCI)のDatabase Managementは、これまでOracle DBやOCI上のマネージドサービス(HeatWave MySQLやBaseDB)を対象にリソースやパフォーマンス監視サービスを提供してきましたが、2025年1月にオンプレミスまたはIaaS上のMySQLも対象になりました。
この対応により、Oracle DB、MySQL両方の監視を同一のサービスで行えるようになっています。この記事では、MySQLを監視対象とするための設定や前提条件をご紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/414604a6-0d60-4ac3-b2da-0b25c1e5c19b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/fda57b9a-b709-4612-a57c-e7b4545af330.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/03d3f2b4-be0c-4207-80cd-c521edc107cd.png)

OCIのコンソールやドキュメントでは、オンプレミスやIaaS上のMySQLインスタンスのことを`外部MySQL DBシステム`と表現されています。

:::note info
2025年1月現在の制限事項
- LinuxOS上にインストールされたMySQL8.0以降が対象として追加可能
- NDB Cluster環境はサポート外
:::

# 監視対象にMySQLを追加する流れ
1. OCI IAMユーザー・グループの作成
1. Database ManagementでMySQLを監視可能にするためのポリシー設定
1. MySQL登録の事前準備
    - MySQLパラメタの確認
    - 管理エージェントのインストール
    - 監視用のMySQLユーザーを作成・権限付与
    - Vaultの作成
1. 監視対象としてMySQLを登録

上記の1〜2については既に利用可能になっている場合は省略可能です。

## MySQLを監視可能にするためのポリシー設定
OCIのDatabase Managementサービスを利用するための権限とMySQLを監視対象にするための権限設定を行なっておく必要があります。
OCIコンソールから必要なポリシーを自動的に生成・設定することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/aa9e67aa-b95d-4f0f-9217-68b5fb8b4ba5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/1ddc79ed-7c46-476b-beb9-068173b8ce7e.png)

ドキュメント：
[ユーザー・グループへの権限の自動付与](https://docs.oracle.com/ja-jp/iaas/database-management/doc/automatically-grant-permissions-user-groups_mysql.html)
[データベース管理の権限](https://docs.oracle.com/ja-jp/iaas/database-management/doc/database-management-permissions1.html)
[外部MySQLにデータベース管理を使用するために必要な追加権限](https://docs.oracle.com/ja-jp/iaas/database-management/doc/additional-permissions-required-use-database-management-mysql.html#GUID-32A5BC8C-E5E7-46BC-8B6F-DCF455A15414)
[Oracle Cloud Infrastructureの一般的な前提条件タスクの実行](https://docs.oracle.com/ja-jp/iaas/database-management/doc/perform-general-oracle-cloud-infrastructure-prerequisite-tasks_mysql.html)

## MySQL登録の事前準備
### MySQLパラメタの確認
監視対象にMySQLを追加する際には、下記３つのMySQLサーバーのパラメタ設定が必須となっています。
`performance_schema`
この変数はデフォルトでONに設定されており、パフォーマンス・スキーマを有効にするために必要です。
`max_digest_length`
この変数はより大きなSQL文のコレクションに必要です。
デフォルト値は1024で、長い文のコレクションを許可するには、値を4096に設定することをお薦めします。
`performance_schema_max_digest_length`
値はmax_digest_length変数の値セットと一致する必要があります。

### 管理エージェントのインストール
Database Managementサービスは、管理エージェントを使用してデータおよびメトリックを収集するため、MySQLに接続できるホスト上に管理エージェントをインストールします。
1. OCIコンソールの[監視および管理]-[ダウンロードとキー]を選択し[LINUXのエージェント]をダウンロードし、パッケージをインストール先のホスト上に配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/ce42e7d6-8bc3-4593-a98b-149a3c620c0d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/d7214162-3621-490c-9f50-d0d7120d575e.png)

1. あわせて[キーの作成]をクリックしてインストール・キーを作成し、キーをファイルにダウンロードしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/115a9a92-3088-47b3-94a1-0f25cdc65e92.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/29c1e88e-b27f-444a-8ea9-939d5b9c2332.png)

1. ダウンロードしたキーファイル(.rsp)をエディタで編集します。
必要となるパラメータは以下の２つです。ManagementAgentInstallKeyは記述されているはずなので、CredentialWalletPasswordにパスワード文字列を設定します。
```
ManagementAgentInstallKey = MS4wLHVzLWFzaGJ1cm4tMSxvY2lkMS50ZW5hbmN5
CredentialWalletPassword = Abcdefgh1#
```
4\. インストールを実行します。
```
#Java SDKをインストール
sudo rpm -ivh jdk-8u431-linux-x64.rpm

#管理エージェントをインストール
sudo rpm -ivh oracle.mgmt_agent.250128.1929.Linux-x86_64.rpm

#input.rspファイルを作成し、ダウンロードしたキーファイルの内容を貼り付け
sudo vi /opt/oracle/mgmt_agent/agent_inst/bin/input.rsp

#ファイル所有者を変更
sudo chown  mgmt_agent:mgmt_agent /opt/oracle/mgmt_agent/agent_inst/bin/input.rsp

#管理エージェントのインストールを実行
sudo /opt/oracle/mgmt_agent/agent_inst/bin/setup.sh opts=/opt/oracle/mgmt_agent/agent_inst/bin/input.rsp

#ステータス確認
sudo systemctl status mgmt_agent
```

:::note info
- MySQLインスタンスに接続するには、管理エージェント241023.2127以上が必要です。
- 管理エージェントのインストールには最新バージョンのJDK8またはJRE8 (バージョン1.8u281以上)を[ダウンロード](https://www.oracle.com/jp/java/technologies/javase/javase8u211-later-archive-downloads.html
)およびインストールしてから、管理エージェント・ソフトウェアのインストール・プロセスを開始してください。
:::

### 監視用のMySQLユーザーを作成・権限付与
MySQLからメトリックを参照するために権限を持つユーザーを作成します。
```サンプル.
CREATE USER 'mgm'@'%' IDENTIFIED by 'MySQL9.2';
GRANT
    SERVICE_CONNECTION_ADMIN,
    SYSTEM_USER,
    SELECT,
    PROCESS,
    SHOW VIEW,
    SHOW DATABASES,
    REPLICATION CLIENT,
    REPLICATION SLAVE
ON *.* TO 'mgm'@'%';

GRANT EXECUTE ON sys.* TO mgm'@'%';
```

### Vaultの作成
1. OCIコンソールの[アイデンティティとセキュリティ]-[ボールト]を選択します。表示された画面で[ボールトの作成]をクリックして[名前]を入力して[ボールトの作成]をクリックします。(アクティブになるまで数分かかる場合があります)
1. 作成したボールト名をクリックして表示された画面で[マスター暗号キー]タブを選択して[キーの作成]画面で名前を入力して[キーの作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/310b04a0-d086-45dd-a6a6-e80ca005b303.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/1f4f6a50-1b7a-4a7c-94cf-083a370c7268.png)

## 監視対象としてMySQLを登録
1. OCIコンソールのメニューから[データベース管理]-[概要]を選択し、[MySQLデータベース]-[外部データベース]をクリックして表示されるページで[外部MySQL DBシステムの登録]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/a4f6212d-2a4b-4732-8451-b914396377dd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/7ffbed5e-5c37-4c76-b7d5-6367f69eb650.png)
1. 表示された登録画面でDBシステム名を入力し、[コネクタの作成]の各項目を入力します。TCPの場合はシークレットを新規に作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/516a2d37-4596-45d3-85a3-ef221551db0b.png)
1. 事前準備で作成したボールトと暗号化キーを指定します。ユーザー名、パスワードは監視用に追加したMySQLユーザーの情報を入力し、[シークレットの作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/b5e40971-97b7-4adc-9d0b-07f53271b4f9.png)
1. [接続のテスト]で成功したら[送信]をクリックします。完了すると監視対象に追加され表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981366/32cd0a98-d42a-444f-a67b-dd5425319404.png)