MySQLモニタリング

最終更新日: 17 年 2020 月 XNUMX 日

Mysql情報を監視し、システムがスレーブであるか、InnoDBやMyISAMを実行しているかなどを検出するには、LogicMonitorコレクターがデータベースに接続できる必要があります。 したがって、最初のステップはMySQL資格情報を設定することです。

LogicMonitorは最初、ポート3306にサーバーがあるすべてのホストがMySqlを実行していると想定します。 LogicMonitorに、検出したデータベースへの接続を許可するまで、Mysqlパフォーマンスデータを収集できないため、そのホストでエラーが発生します。

LogicMonitorに追加のポートでmysqlを検出させたい場合は、スペースで区切られたリストで、MysqlデータソースのActiveDiscoveryセクションのParametersフィールドにそれらを追加するだけです。

適切な資格情報が与えられると、他のすべてのMySQLデータソースが必要に応じて自動的に適用されます。 Mysql Credentialsセクションで詳しく説明されているように、MysqlサーバーでLogicmonitorデータベースを作成していない場合、スレーブ監視は正しく機能しないことに注意してください。

MySQLのバージョンはJDBCドライバー1.4.6と互換性がある必要があることに注意してください。 さらに、MySQL 4.1より前のパスワードハッシュの方法は、LogicMonitorCollectorではサポートされなくなりました。

MySQL資格情報

Mysqlを監視するには、LogicMonitorコレクターがデータベースに正常に接続できる必要があります。 これには以下が必要です。

  • Mysqlがネットワーク接続を受け入れていること。 (注:デフォルトでは、LogicMonitorはポート3306でのみ接続を試行しますが、これはデータソースで変更できます。)
  • コレクターは、データベースに接続できる有効なユーザー名とパスワードを使用します。 これらはプロパティによって定義されます jdbc.mysql.user jdbc.mysql.pass.
  • データベース名プロパティは、標準のMySQLモニタリングには必要ありませんが、カスタムデータベースクエリを指定する場合に必要になる可能性があります。 これは、ホストプロパティによって定義されます データベース名.

LogicMonitorコレクターがMySQLに接続できるようにする

LogicMonitorコレクターがデータベースに接続できるようにする最も簡単な方法は、mysql rootユーザーに資格情報を提供することです。その場合、通常、データベースに対してアクションを実行する必要はありません(ネットワーク接続を受け入れている限り)。 ただし、これはセキュリティのベストプラクティスではありません。

mysqlサーバーを監視するための推奨される方法は、その目的のために特定の監視ユーザーを作成し、そのユーザーの権限を制限することです。 特定のデータベースを作成し、そのデータベースにのみ監視ユーザー権限を付与する必要があります。

レプリケーションを実行していない場合

たとえば、コレクターがホスト10.1.1.10で実行されている状態で、コレクターがユーザー「collector」としてMysqlデータベースに接続する場合:

mysql> logicmonitor。*での使用を 'collector' @ '10.1.1.10 .XNUMX 'に付与します。

定義するプロパティ:
jdbc.mysql.user =コレクター
jdbc.mysql.pass =(空)

レプリケーションを実行している、または実行する可能性がある場合:

MysqlReplicationLag-データソースが特定のデータベースとテーブルが存在することを想定している場合、そのデータベースにのみアクセスできる監視ユーザーを作成することは理にかなっています。

Mysqlマスターデータベースでrootユーザーとして次の操作を実行します。

データベースlogicmonitorを作成します。 logicmonitorを使用します。 CREATE TABLEハートビート(id int NOT NULL PRIMARY KEY、ts datetime NOT NULL); INSERT INTO heartbeat(id、ts)VALUES(1、now()); logicmonitor。*でselect、insert、deleteを 'COLLECTORUSER' @ 'COLLECTORHOST' \に 'COLLECTORPASSWORD'で識別されるように付与します。 *。*上のレプリケーションクライアントを 'COLLECTORUSER' @ 'COLLECTORHOST' \に 'COLLECTORPASSWORD'で識別されるように付与します。 フラッシュ特権;

認証プロパティを次のように設定します。
jdbc.mysql.user = COLLECTORUSER
jdbc.mysql.pass = COLLECTORPASSWORD
DBNAME = logicmonitor

最小権利テーブル

さまざまなデータソースに必要な権利は次のとおりです。

情報元
演算
必要な権利
Mysql-、Mysql_Innodb-、Mysql_MyISAM-など
グローバル統計
USAGE
MysqlSlave-
スレーブSQLスレッドとスレーブI / Oスレッド間のスレーブの時間差を秒単位で追跡します。
レプリケーションクライアント
MysqlMaster-
スレーブで測定するReplicationLag-のタイムスタンプをマスターに作成します。
logicmonitorデータソースのハートビートテーブルに対するREPLICATIONCLIENT、INSERT、およびDELETE特権。 ReplicationLag-にはSELECTが必要です。
カスタムデータクエリ
テーブルからのカスタムデータの読み取り
関連するデータベースでSELECT

MySQLスレーブモニタリング

LogicMonitorでサポートされているスレーブ監視にはXNUMX種類あり、XNUMXつの異なる機能を提供します。

1.スレーブステータス

スレーブステータスは、スレーブSQLスレッドとスレーブI / Oスレッドの違いを測定します。 (つまり、スレーブがマスターから読み取ったものと、それが適用したもの。)これは、ネットワークの問題がない場合のスレーブラグの良い指標になります(スレーブがマスターから新しいデータをプルできない場合は、保持しているすべてのトランザクションを適用し、ラグがゼロであること。これは、実際のマスターで最新の状態になっていることと同じではありません。)このデータソースは、スレーブIOおよびSQLプロセスが正しく実行されていることも確認します。

2. MysqlMaster - と レプリケーションラグ

MysqlMaster-タイムスタンプを5秒ごとにテーブルに挿入し、マスターデータベースに自動的に適用されます。 ReplicationLag-はスレーブで選択を行い、適用されたマスターからの最後のタイムスタンプとnow()の差を測定します。 これは、マスターの更新とスレーブのデータの適用の間の実時間のタイムラグを反映しています(ホストのクロックがntpまたはその他の手段で同期されていると仮定します)。上記のMysql資格情報セクションで説明したようにLogicMonitorデータベースを作成していない場合は注意してください。 、すべてのスレーブからこのデータソースのデータなしの警告が表示されます。

なぜXNUMX種類の監視があるのですか?

どちらの種類のスレーブ監視も、すべての状況で完璧というわけではありません。 MysqlSlave-ネットワークやその他の問題は考慮されていません。 MysqlReplicationLag-は行います。 ただし、MysqlReplicationLag-は、マスターがダウンするとスレーブの状態について何も通知しません。更新がないため、マスターからの最後の更新からのラグとリアルタイムが増加します。

スレーブをマスターに昇格させる前に実行するアクション

スレーブにフェイルオーバーしてマスターにする前に、スレーブが次のことを知っている必要があります。

  • 古いマスターからすべてのトランザクションを取得することができました。
  • それらの適用を終了しました。

これを判断するには、スレーブのLogicMonitorビューで、マスターが最後に動作していたときのMysqlReplicationLag-のグラフを確認します。 ラグが小さい場合(4秒未満である必要があります)、スレーブがマスターからのすべてのトランザクションを持っていることがわかります。 マスターが動作を停止した後のこのグラフの増加は無視できます。 次に、MysqlSlave-グラフでスレーブラグを確認します。これがゼロに達すると、スレーブはマスターから受信したすべてのトランザクションを適用し、このスレーブをマスターに昇格させることができます。 マスターがダウンする直前にMysqlReplicationLag-があった場合、スレーブに到達したことのないトランザクションがマスター上にあるため、決定する必要があります。 以前にコミットしたトランザクションを稼働時間にわたって評価しますか? もしそうなら、あなたはマスターを復活させる必要があります。 以前にコミットされたトランザクションを尊重するよりも稼働時間を重視しますか? その場合、スレーブをマスターに昇格させますが、一部のトランザクションが失われることに注意してください。

記事上で