

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# OS のモニタリング
<a name="os-monitoring"></a>

Amazon RDS for MySQL または MariaDB の DB インスタンスは、Linux オペレーティングシステムで稼働しており、この OS は、基盤システムリソース、つまり、CPU、メモリ、ネットワーク、ストレージを使用しています。

```
MySQL [(none)]> SHOW variables LIKE 'version%';
+-------------------------+---------------------+
| Variable_name           | Value               |
+-------------------------+---------------------+
| version                 | 8.0.28              |
| version_comment         | Source distribution |
| version_compile_machine | aarch64             |
| version_compile_os      | Linux               |
| version_compile_zlib    | 1.2.11              |
+-------------------------+---------------------+
5 rows in set (0.00 sec)
```

データベースと基盤オペレーティングシステムの全体的なパフォーマンスは、システムリソースの使用率によって大きく異なります。例えば、CPU は、システムパフォーマンスにかかわる重要なコンポーネントと言えます。データベースソフトウェアの指示を実行するとともに、他のシステムリソースも管理しているからです。CPU の使用率が高すぎる場合 (つまり、負荷の処理に DB インスタンスにプロビジョニングした CPU 性能よりも高い性能が必要な場合)、この問題の影響は、データベースのパフォーマンスと安定性、ひいてはアプリケーションにまで及ぶでしょう。

メモリの割り当てと解放は、データベースエンジンによって動的に行われます。RAM に現在の作業を実行するのに十分なメモリがない場合、ディスクに存在するスワップメモリにメモリページが書き込まれます。ディスクの読み書きはメモリよりもはるかに遅いため、SSD NVMe 技術に基づくディスクであっても、メモリの過剰な割り当ては、パフォーマンス低下を招きます。メモリ使用率が高いと、データベースレスポンスのレイテンシーが増大します。記憶域を増やすために、ページファイルのサイズも大きくなるからです。メモリの割り当てが過剰になり、RAM とスワップメモリのスペースがともに枯渇すると、データベースサービスが利用できなくなる可能性があります。これによって、ユーザー側で、`[ERROR] mysqld: Out of memory (Needed xyz bytes)` などのエラーが発生しかねません。

MySQL および MariaDB データベース管理システムでは、[ディスク上の構造](https://dev.mysql.com/doc/refman/8.0/en/innodb-architecture.html)を保存するディスクからなるストレージサブシステムが使用されます。構造とは、テーブル、インデックス、バイナリログ、REDO ログ、UNDO ログ、二重書き込みバッファファイルなどを指します。そのような理由から、データベースでは、他のタイプのソフトウェアとは対照的に、大量のディスクアクティビティの実行が必要となります。データベースオペレーションを最適化するには、ディスク I/O 使用率とディスク容量の割り当てをモニタリングし調整することが重要です。ディスクで対応可能な最大 IOPS またはスループットの上限に達すると、データベースのパフォーマンスに影響が及びかねません。例えば、インデックススキャンによるランダムアクセスが急増すると、1 秒あたりに多数の I/O オペレーションが発生し、最終的に基盤ストレージの上限に達する可能性があります。フルテーブルスキャンの場合、IOPS の上限には達しない可能性がありますが、高スループット (1 秒あたりのメガバイト数で測定) が発生することがあります。ディスク容量の割り当て状況をモニタリングし、アラートを発行することは、きわめて重要です。`OS error code 28: No space left on device` などのエラーが発生すると、データベースが利用できなくなったり、データが破損したりする恐れがあるからです。

Amazon RDS では、DB インスタンスが稼働するオペレーティングシステムのメトリクスをリアルタイムで確認でき、1 つの OS メトリクスセットが CloudWatch に自動的に発行されます。これらのメトリクスは、Amazon RDS コンソールと CloudWatch ダッシュボードに表示して分析でき、CloudWatch で選択したメトリクスにアラームを設定することも可能です。以下に例を示します。
+ `CPUUtilization` – CPU 使用率。
+ `BinLogDiskUsage` – バイナリログが占めるディスク容量。
+ `FreeableMemory` – 使用可能な RAM 容量。これは、`/proc/meminfo` の `MemAvailable` フィールドの値を示しています。
+ `ReadIOPS` – 1 秒あたりのディスク読み取り I/O オペレーションの平均回数。
+ `WriteThroughput` – ローカルストレージに対し 1 秒間にディスクに書き込まれる平均バイト数。
+ `NetworkTransmitThroughput` – DB ノードの送信ネットワークトラフィック。データベーストラフィックと、モニタリングおよびレプリケーションに使用される Amazon RDS トラフィックの合計を示しています。

Amazon RDS から CloudWatch に発行される全メトリクスの総合リファレンスについては、Amazon RDS ドキュメントの「[Amazon RDS の Amazon CloudWatch メトリクス](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-metrics.html)」を参照してください。

次の画像は、Amazon RDS コンソールに表示される Amazon RDS 向け CloudWatch メトリクスの例を示しています。

![\[Amazon RDS コンソールに表示されている、Amazon RDS 向け CloudWatch メトリクス\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cloudwatch-metrics-rds-console.png)


次の画像は、CloudWatch ダッシュボードに表示される同様のメトリクスを示しています。

![\[CloudWatch コンソールに表示されている、Amazon RDS 向け CloudWatch メトリクス\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cloudwatch-metrics-cw-console.png)


他の一連の OS メトリクスは、Amazon RDS の[拡張モニタリング](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html)によって収集します。このツールによって、リアルタイムのシステムメトリクスと OS プロセス情報を得ることで、Amazon RDS for MariaDB および Amazon RDS for MySQL DB インスタンスのヘルスをより詳細に可視化できます。DB インスタンスで[拡張モニタリングを有効に](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.Enabling.html)し、目的の粒度を設定すると、オペレーティングシステムのメトリクスとプロセス情報が収集されます。こうした情報は、次の画像に示すように、[Amazon RDS コンソール](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.html)で表示し分析できます。

![\[拡張モニタリングによって収集した OS メトリクス\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/enhanced-monitoring.png)


拡張モニタリングに用意されている主要なメトリクスを次に示します。
+ `cpuUtilization.total` – 使用中の CPU の合計使用率。
+ `cpuUtilization.user` – ユーザープログラムが使用中の CPU の使用率。
+ `memory.active` – 割り当てられたメモリの量 (キロバイト単位)。
+ `memory.cached` - ファイルシステムベースの I/O のキャッシュに使用されたメモリの量。
+ `loadAverageMinute.one` – 過去 1 分間に CPU 時間をリクエストしたプロセスの数。

メトリクスが網羅されたリストについては、Amazon RDS ドキュメントの「[拡張モニタリングの OS メトリクス](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring-Available-OS-Metrics.html)」を参照してください。

Amazon RDS コンソールの OS プロセスリストには、DB インスタンスで稼働している各プロセスの詳細が表示されます。リストは 3 つのセクションに分かれています。
+ **OS プロセス** ‒ このセクションは、すべてのカーネルプロセスとシステムプロセスを集約した概要を示しています。一般的に、これらのプロセスによって、データベースパフォーマンスへの影響が最小化されます。
+ **RDS プロセス** – このセクションは、Amazon RDS DB インスタンスのサポートに必要な AWS プロセスの概要を示しています。例えば、Amazon RDS 管理エージェント、モニタリングおよび診断プロセス、その他の同様のプロセスなどがこれに該当します。
+ **RDS 子プロセス** – このセクションは、DB インスタンスをサポートする Amazon RDS プロセスの概要を示しています (この画像では `mysqld` プロセスとそのスレッド)。`mysqld` スレッドは親 `mysqld` プロセスの下にネストされて表示されます。

次の画像は、Amazon RDS コンソールの OS プロセスリストを示しています。

![\[Amazon RDS コンソールの OS プロセスリスト\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/os-process-list.png)


Amazon RDS では、拡張モニタリングで収集したメトリクスが、CloudWatch Logs アカウントに配信されます。Amazon RDS コンソールに表示するモニタリングデータは、CloudWatch Logs から取得します。[DB インスタンスのメトリクスは、ログストリームとして CloudWatch Logs から取得](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.CloudWatchLogs.html)することもでき、これらのメトリクスは JSON 形式で保存されます。選択したモニタリングシステムで CloudWatch Logs からの拡張モニタリング JSON 出力を使用できます。

CloudWatch ダッシュボードにグラフを表示したり、メトリックが定義済みのしきい値を超えた場合にアクションを実行するアラームを作成したりするには、CloudWatch でメトリクスフィルターを作成して、CloudWatch Logs からメトリクスを取り出す必要があります。詳細な手順については、[AWS re:Post の記事](https://repost.aws/knowledge-center/custom-cloudwatch-metrics-rds)で、拡張モニタリングの CloudWatch Logs をフィルタリングして Amazon RDS の自動カスタムメトリクスを生成する方法をご確認ください。

次の画像の例は、`Custom/RDS` 名前空間の `CPU.User` カスタムメトリクスを示しています。このカスタムメトリクスを作成するには、CloudWatch Logs にある `cpuUtilization.user` 拡張モニタリングメトリクスをフィルタリングします。

![\[CPU.User のカスタムメトリクス\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-rds-monitoring-alerting/images/cpu-user-custom-metric.png)


CloudWatch リポジトリでメトリクスが利用可能になったら、CloudWatch ダッシュボードでそれらを表示して分析したり、数学およびクエリオペレーションをさらに適用したりできます。また、アラームを設定してこの特定のメトリクスをモニタリングし、観測値が定義済みのアラーム条件と一致しない場合にアラートを発行することも可能です。