MySQLモニタリング
最終更新日: 11 年 2024 月 XNUMX 日LogicMonitor は、Oracle MySQL モニタリングを提供し、データベース パフォーマンスの可視性と分析を提供します。クエリのスループット、接続、レプリケーションのステータス、リソース使用率などの主要なメトリクスを自動的に検出して監視します。また、プロアクティブな管理とアラートを可能にして、MySQL 環境の最適なパフォーマンスと可用性を維持します。
Oracle MySQL バージョン 8 は、パフォーマンス、セキュリティ、使いやすさが大幅に強化されたメジャー アップデートです。これには、ウィンドウ関数、共通テーブル式 (CTE)、JSON サポート、アトミック DDL、改良された InnoDB ストレージ エンジン、高度なロールベースのアクセス制御などの機能が含まれており、エンタープライズ データベース管理ソリューションの堅牢な選択肢としての地位を固めています。
Oracle MySQL の最新リリースでは、jdbc 接続文字列がリソース プロパティとして公開されています。これにより、「すぐに使える」構成とは異なるデータベースへの接続が可能になります。すべての監視はスクリプト化されたメソッドで処理されるようになりました。
互換性
MySQL モジュールは、Oracle MySQL バージョン 5.7 ~ 8.0.3x および MariaDB バージョン 11 でテストされています。
セットアップ要件
ご注意: LogicMonitor は、接続リクエストに MySQL エラーで応答するポート 3306 上のサーバーを備えたホストが MySQL を実行していると想定します。
LogicMonitor にはユーザーとパスワードが必要で、このユーザーにはデータベースに接続するための適切な権限が必要です。
MySQL を複数のポートで実行している場合は、カンマ区切りのリスト内のポートをプロパティとしてサーバー リソースに追加します。
適切な認証情報が提供されると、該当する場合には MySQL データソースが自動的に適用されます。
ご注意: MySQL サーバーに LogicMonitor データベースを作成していない場合、レプリカ監視は完全には機能しません。
Credentials
MySQL を監視するには、LogicMonitor コレクターがデータベースに接続する必要があります。これには次のことが必要です。
- MySQL はネットワーク接続を受け入れます
ご注意: デフォルトでは、LogicMonitor はポート 3306 での接続を試行しますが、これはリソースのプロパティで変更できます。
- コレクターは、データベースに接続できる有効なユーザー名とパスワードを使用します。これらは次のプロパティによって定義されます。
jdbc.mysql.user
jdbc.mysql.pass
監視に必要なユーザー権限
各データソースには次の権限が必要です。
演算 | 必要な権利 |
グローバル統計 | USAGE |
テーブル レベルの監視 – 大きなテーブルのスペースと断片化。 | 関連するデータベースでSELECT |
レプリケーションクライアントを監視するには | レプリケーションクライアント |
レプリケーション シナリオでソース サーバーを監視するには | logicmonitorデータソースのハートビートテーブルに対するREPLICATIONCLIENT、INSERT、およびDELETE特権。 ReplicationLag-にはSELECTが必要です。 |
モニタリングにリソースを追加する
MySQL Server ホストを監視に追加します。監視へのリソースの追加の詳細については、を参照してください。 デバイスの追加.
MySQL レプリカ監視の実行
Oracle MySQL ReplicaStatus データソースは、特定のデータベースとテーブルが存在することを想定しています。そのデータベースにのみアクセスできる監視ユーザーを作成します。
- Mysql ソース データベースで root ユーザーとして次の操作を実行します。
create database logicmonitor;
use logicmonitor;
CREATE TABLE heartbeat (
id int NOT NULL PRIMARY KEY,
ts datetime NOT NULL
);
INSERT INTO heartbeat(id,ts) VALUES(1,now());
grant select,insert,delete on logicmonitor.* to 'COLLECTORUSER'@'COLLECTORHOST' \
identified by 'COLLECTORPASSWORD';
grant replication client on *.* to 'COLLECTORUSER'@'COLLECTORHOST' \
identified by 'COLLECTORPASSWORD';
flush privileges;
- 認証プロパティを次のように設定します。
jdbc.mysql.user=COLLECTORUSER
jdbc.mysql.pass=COLLECTORPASSWORD
レプリカのステータス
Oracle_MySQL_ReplicaStatus は、レプリカ SQL スレッドとレプリカ I/O スレッドの違い (レプリカがソースから何を読み取ったか、そして何を適用したか) を測定します。これは、ネットワークに問題がない場合のレプリカの遅延を示しています。レプリカがソースから新しいデータを取得できない場合、すべてのトランザクションが適用され、ラグがゼロであると報告されます。
ご注意: これは、実際のソースが最新であることとは異なります。
このデータソースは、レプリカ IO および SQL プロセスが正しく実行されていることもチェックします。
ソース サーバーがレプリカ サーバーを更新しない状況では、フィールド heartBeatTimeDifference
遅延を報告します。ハートビートは収集サイクルでのみ更新されるため、毎分のみ更新されます。
MySQL サーバーリソースへのプロパティの割り当て
LogicMonitor は、MySQL Server 構成に必要なすべてのプロパティを自動的に検出しようとします。ただし、プロパティを手動で入力したり、自動検出されたプロパティをオーバーライドしたりする必要があるユースケースもあります。プロパティの割り当ての詳細については、を参照してください。 リソースとインスタンスのプロパティ.
次のプロパティは、LogicMonitor 内の Oracle MySQL Server リソースに設定できます。
LogicMonitor:
プロパティ | 説明 | 必須? |
jdbc.mysql.ポート | Oracle MySQL を使用したポート複数のポートに MySQL インスタンスがある場合は、カンマ区切りの文字列を入力します (例: 3306,3307,3309、XNUMX、XNUMX)。 デフォルトのポート 3306 は常にチェックされます。 | いいえ |
jdbc.mysql.user jdbc.mysql.pass | MySQL Server のユーザー名とパスワードこれを Windows ユーザー アカウントにすることはできません。このアカウントには最小限の SQL Server 権限が必要です。 詳細については、を参照してください。 資格情報を提供する. | 可 |
mysql.nossl | 以下を追加します true の場合、接続文字列に変換されます。?allowPublicKeyRetrieval=true&useSSL=false 空白または false に設定されている場合は何も行われません。MySQL サーバーで SSL キーが構成されていない場合は、このプロパティを使用します。これは開発環境を対象としています。 | いいえ |
mysql.url_driver_properties | MySQL の JDBC 接続を構成する場合、接続とその動作を最適化するために調整できるさまざまなドライバー プロパティがあります。これらのプロパティには、自動再接続オプションなど、接続の安定性に関する設定が含まれます。 SSL暗号化などのセキュリティ機能も切り替えることができます。ドライバーのプロパティを使用すると、文字エンコードとタイムゾーンの設定を調整して、さまざまな環境間でデータの一貫性と正しい解釈を確保できます。 さらに、クエリのフェッチ サイズや接続タイムアウトなどのパフォーマンスに関連するプロパティを微調整できます。 Note: LogicMonitor は接続のセキュリティ設定を下げません。このアクションはあなたが開始する必要があります。 たとえば、 mysql.driver_properties = ?allowPublicKeyRetrieval=true&useSSL=false このデバイスの接続文字列に次の文字列を追加します。?allowPublicKeyRetrieval=true&useSSL=false | いいえ |
(自動).mysql。ポート。URL | 多くの構成では、これは自動構成のプロパティ ソースを使用して設定されます。 LogicMonitor は、mysql 接続の手動エントリのすべての側面を制御するわけではありません。手動構成は常に自動構成をオーバーライドします。 たとえば、次はポートでの MySQL サーバーの接続文字列です。 mysql.3306.url=jdbc:mysql://10.52.130.164:3306?allowPublicKeyRetrieval=true,useSSL=false | |
mysql.exclude_databases | 特定のデータベースを監視から除外するために使用します。カンマで区切られたデータベース名の文字列。例えば: mysql.exlcudedatabases = mysql,customers,products これらのデータベースを監視から除外します。 | いいえ |
mysql.remove_url | 古いものを削除するには True に設定します mysql.port.url 。デフォルトは false であり、慎重に使用してください。古い MySQL サーバーを削除する場合にのみ使用します。 MySQL 接続文字列を削除すると、古いインスタンスとその履歴が削除されます。 | いいえ |
Mysql.sqltest | 使用される SQL ステートメント Oracle_MySQL_ConnectionStatus 。デフォルトの SQL ステートメントは次のとおりです。 SELECT CURRENT_DATE() as CurrentDate; カスタム SQL ステートメントには次のものが必要です。セミコロンで終わる挿入、更新、または削除という単語を含めることはできません複数のセミコロンを含めることはできません | いいえ |
最新モジュールへの移行
2023 年 XNUMX 月に、LogicMonitor の MySQL Server パッケージは、パフォーマンスを強化し、Collector とサーバーの負荷への影響を軽減するために大幅な更新を受けました。これらの更新の結果、以前のすべての DataSource は廃止され、新しい DataSource に置き換えられました。以前の DataSource は新しいモジュールと共存できるため、インプレース更新が機能します。
次のデータソースは非推奨になりました。
Mysql-
Mysql_Innodb-
Mysql_Slave
MySql_Replica
MysqlReplicationLag
MySqlMaster
パッケージ内のLogicModules
LogicMonitor の Oracle MySQL 用パッケージは、次の LogicModule で構成されます。完全にカバーするには、次のすべての LogicModule が LogicMonitor プラットフォームにインポートされていることを確認してください。
プラットフォームを提供します。
表示名 | 種類 | 説明 |
addCategory_OracleMySQL | プロパティソース | ホストが MySQL サーバーを実行しているかどうかを識別し、「MySQL」のシステム カテゴリを追加します。 |
MySQL接続ステータス | データソース | コレクターが MySQL インスタンスに接続できるかどうかをチェックします。 select ステートメントの往復時間も報告します。失敗の原因を特定し、エラーを報告しようとします。 SQL サーバーがデータを収集して、未構成のサーバーによるアラートの発生を防ぐまで、アラートは作成されません。 |
MySQLデータベースの | データソース | MySQL サーバー上のデータベースの行数とバイト数の合計サイズを監視します。行数は単なる推定値です。次の select ステートメントを実行します。 SELECT table_schema , sum(data_length +index_length) as dbSize, sum(table_rows) as dbRowcount FROM information_schema.tables WHERE table_schema not in (‘sys’,’information_schema’,’performance_schema’) GROUP BY table_schema; |
MySQL InnoDB 統計 | データソース | MySQL InnoDB のパフォーマンスを監視し、データベースの効率と安定性を最適化するための主要なメトリクスを提供します。 |
MySQL レプリカのステータス | データソース | 「レプリカのステータスを表示」を実行します。コマンドを実行するには、監視ユーザーに割り当てられたレプリケーション クライアント権限が必要です。また、logicmonitor.heartbeat テーブルへの選択アクセス権も必要です。 |
MySQLソース | データソース | フェイルオーバー構成のソース上のハートビート テーブルのタイムスタンプを更新します。ポーリング時間は 1 分に設定する必要があります。 LogicMonitor データベースをインストールする必要があります。このデータソースの目的は、ホストがフェイルオーバー構成のソースであることを示すことです。グラフには何も表示されないはずです。 |
MySQLのステータス | データソース | Oracle MySQL サーバーまたは MariaDB サーバーの一般的な統計。 |
MySQL テーブルのサイズ | データソース | テーブル サイズごとに上位 10 のテーブルを監視します。 |
このパッケージの DataSource によって追跡されるさまざまなメトリクスに静的なデータポイントのしきい値を設定する場合、LogicMonitor はテクノロジー所有者のベスト プラクティス KPI 推奨事項に従います。
推奨事項: 必要に応じて、環境固有のニーズを満たすように事前定義されたしきい値を調整します。詳細については、「データポイントの静的しきい値のチューニング」を参照してください。
接続ステータスデータソース
Oracle_MySQL_ConnectionStatus DataSource は、コレクタから MySQL データベースへの接続を確認するために使用されます。デフォルトでは、DataSource は警告を発する前に MySQL データベースへの接続を 3 回試行します。
- 最初の試行が失敗した場合: DataSource は XNUMX 秒間待ってから、再度接続を試みます。
- 12 回目の試行が失敗した場合: DataSource は XNUMX 秒間待ってから、再度接続を試みます。
- XNUMX 回目の試行が失敗した場合: アラートが送信されます。
試行回数と試行間の時間の長さは、デバイスのプロパティで設定できます。 DataSource がタイムアウトに達したり、収集間隔を超えたりしないように注意する必要があります。収集間隔は 60 秒のタイムアウトであり、収集間隔内で再試行を続けることが最善です。データソースのタイムアウトはデフォルトで 180 秒ですが、コレクタのプロパティで変更できます。これらの時間の制約に留意してください。接続が遅く信頼性が低い場合は、収集間隔を 3 分以上に変更することをお勧めします。ほとんどのサーバーではデフォルトで問題ありません。
データベースへの接続が成功すると、DataSource は select ステートメントを実行し、返された行数と実行時間を報告します。この選択ステートメントは、デバイス プロパティでオーバーライドできます。プロパティは、mysql.propertyName または mysql の形式です。ポート.propertyName ここで、port は MySQL を実行しているポート番号です。 mysqlの場合。ポート.propertyName が使用される場合、このプロパティはポート上で実行されている特定の MySQL インスタンスに使用されます。無いときは ポート 指定すると、DataSource はリソース上の各 MySQL インスタンスに同じプロパティを使用します。
プロパティ
次のプロパティはオプションですが、接続が遅い場合に利用できます。
プロパティ名 | 説明 | 例 | デフォルト |
mysql.sqltest or mysql.ポート.特定のポートの sqltest | SQL ステートメントは、接続テストが実行されるたびに実行されます。 jdbc.mysql.user ステートメントが成功するには、このテーブルにアクセスできる必要があります。 | mysql.user からユーザーを選択します。 | 現在の日付として CURRENT_DATE() を選択します。 |
mysql.max_retries or mysql。ポート。max_retries | アラートを生成するまでの再試行回数。この数値を高く設定しすぎると、DataSource タイムアウトが発生し、アラートが送信されなくなる可能性があります。 max_retries と wait_time の組み合わせ 180 秒未満にする必要があります。 | 5 | 3 |
mysql.wait_time or mysql.port.wait_time | 最初の試行の待機時間 (秒単位)。以降の試行は、wait_time * retrycount になります。この数値を高く設定しすぎると、コレクターのタイムアウトが発生したり、アラートが見逃される可能性があります。 | 2 | 3 |