エージェントのトラブルシューティングは、エージェントが実行しているかどうかを確認することから始めます。これには、こちらを参照してください:
Windows: 「エージェントの起動/停止: Windows」
Unix: 「エージェントの起動/停止: Unix」
Mac OS X: 「Agent の起動/停止: Mac OS X」
追加のヒントを次に示します。
監視する MySQL サーバーのログインするための証明書がエージェントで正しく指定されていない場合、エージェントは起動時に実行しません。監視対象の MySQL サーバーにログインして、エージェントの証明書を確認します。mysql.user テーブルの Host フィールド、User フィールド、Password フィールドの値と etc/instances/mysql/agent-instance.ini の [mysqld] セクションに示されている値を比較します。ini ファイルで指定されている証明書が正しくない場合、これを修正して、エージェントを再起動します。ini ファイルの変更は、エージェントを再起動するまで有効にならないので注意してください。
Service Manager ログインに正しい証明書が指定されていない場合、エージェントは起動しません。Service Manager へのログインに使用する証明書が正しくない場合、エージェントログファイルにエントリが作成されます。このログファイルの位置については、「エージェントログおよび pid ファイル」を参照してください。
エージェントは起動したが、ダッシュボードにサーバーが表示されていない場合、mysql-monitor-agent.ini ファイルの [mysql-proxy] セクションで指定されている hostname を確認します。証明書、IP アドレスまたはポートが正しくない場合、これらはすべて MySQL サーバーがダッシュボードに表示されない原因となります。また、このファイルに指定されているポートが、MySQL Enterprise Service Manager をホストするマシンでブロックされていないことを確認してください。
エージェントが Service Manager にログインできるかを確認する簡単な方法は、http:// を Web ブラウザのアドレスバーに入力することです。この場合、ホスト名およびポート名は適切な値を使用してください。HTTP 認証ダイアログボックスが表示されたら、エージェントのユーザ名およびパスワードを入力します。正常にログインしたら、次のメッセージが表示されます。
Dashboard_Host:18080/heartbeat
<exceptions> <error>E1031: Agent payload parameter NULL.</error> </exceptions>
上記のメッセージにはエラーが示されていますが、ログインには成功しています。このエラーは、ログインには成功したが 「payload」 がないために表示されています。
上記のように正常にログインでき、エージェントが実行している場合、mysql-monitor-agent.ini ファイルにエラーがあります。ini ファイルのホスト名、ポート、エージェント名、パスワードと、Web ブラウザのアドレスバーに入力した値を比較してください。
HTTP 認証が失敗した場合、使用しているエージェントの証明書が間違っています。正しくない証明書を使用して Service Manager にログインしようとすると、エージェントログファイルにエントリが作成されます。このログファイルの位置については、「エージェントログおよび pid ファイル」を参照してください。
HTTP 認証ダイアログボックスが表示されず、接続ができない場合、指定したホスト名またはポートが間違っている可能性があります。入力した値と、configuration_report.txt ファイルの Application hostname and port: で示されている値を確認します。接続が失敗した場合、MySQL Enterprise Service Manager をホストするマシンでポートがブロックされている可能性もあります。
ブロックされているポートが問題かどうか確認するには、一時的にファイアウォールから外します。これで、エージェントが接続できた場合、インストール中に指定したポートを開いて、エージェントを再起動します。必要な場合、SSH トンネルを使用してファイアウォール外を監視します。詳細については、「SSH トンネルでのファイルウォール外の監視」を参照してください。
エージェントエラーログファイルは、問題の解決に役立ちます。次のようなエラーで、ブロックされているポートを示していることがあります。
(critical) connection to merlin-server
'http://agent:test@172.11.1.1:18080/heartbeat' failed:
"connect() timed out!" error.
エージェントエラーログファイルの位置については、「エージェントログおよび pid ファイル」を参照してください。
log-level エントリを ini ファイルに設定することも、デバッグに役立ちます。詳細については、「MySQL Enterprise Agent の設定可能オプション」を参照してください。
コマンドラインからエージェントを実行すると、エージェントをメニューオプションから起動したときにはログファイルや画面には表示されないエラーが表示されることがあります。エージェントをコマンドラインから起動するには、このセクション冒頭の説明を参照してください。
同じマシンで複数のエージェントを実行する場合、UUID が一意でなければならず、log-file および pid-file も異なる値でなければなりません。詳細については、「MySQL Server(agent-instance.ini)の設定」を参照してください。
監視する MySQL サーバーをホストするマシンとは異なるマシンでエージェントが実行している場合、エージェントアカウントに正しい host が指定されていることを確認してください。正しいポートは、通常 3306 で、リモートログインに開かれている必要があります。リモート監視の詳細については、「リモート MySQL Server を監視するようにエージェントを設定する」を参照してください。
MySQL Enterprise Agent および MySQL Enterprise Service Manager は、監視対象の MySQL Server 上の mysql.inventory テーブル内に保存されているホスト ID を使用して、監視対象のインスタンスがクローンかどうかを判定します。現在のサーバーのホスト ID は、エージェントの起動時に、保存されている値と比べてチェックされます。生成されるホスト ID と保存されているホスト ID が一致しない場合は、エージェントのログファイルに次のようなエラーが記録されます。
%s: [%s] the hostid from mysql.inventory doesn't match our agent's host-id (%s != %s) We assume that this is a cloned host and shutdown now. Please TRUNCATE TABLE mysql.inventory on this mysql-instance and restart the agent. If this is a master for replication, please also run SET SQL_LOG_BIN = 0; first.
問題を修正するには、エージェントをインストールしたときに設定した証明書を使って MySQL サーバーに接続してから、mysql.inventory テーブルを切り詰めます。
mysql> TRUNCATE mysql.inventory;
ただちに、エージェントを再起動します。これにより、mysql.inventory テーブルが再作成され、インスタンスの UUID とホスト ID 情報が更新されます。
MySQL Enterprise Agentが正しく停止されず再開始したとき(たとえばkillを使用したとき)、エージェントの以前のインスタンスの元の登録の期限が切れるまで、DuplicateAgentUuidException エラーが発生する可能性があります。
