5.10 代理故障排除

对代理进行故障排除的第一步是查明它是否正在运行。要做到这一点,请参阅:

一些额外的提示是:

  • 要在启动时运行,代理程序需要为受监视的 MySQL 服务器提供正确的登录凭据。登录到受监控的 MySQL 服务器并检查代理的凭据。将表中Host、 和 User字段 mysql.user的值与 文件中显示的值进行比较。密码已加密,因此无法在此处手动管理,但可以从 MySQL Enterprise Monitor 用户界面中的MySQL 实例页面更改密码,或通过命令行使用代理连接工具 ( )。 etc/agentManaged/mysqlConnection<id>/bean/jsonagent.sh

  • 使用不正确的凭据登录到服务管理器会在代理日志文件中创建一个条目。

  • 确认代理可以登录到服务管理器的一种简单方法是在 Web 浏览器的地址栏中键入,替换为适当的主机名和端口。当 HTTP 身份验证对话框打开时,输入代理用户名和密码。以下消息表示登录成功: https://Monitor_UI_Host:18443/heartbeat

    <exceptions>
    <error>E0401: NullAgentPayloadException: []</error>
    </exceptions>
    笔记

    尽管前面的清单显示错误,但您已成功登录。出现此错误 是因为您已登录但没有 有效负载

    如果按照上述方式可以成功登录,并且agent正在运行,则可能是agent的配置有问题。将 MySQL Enterprise Monitor 用户界面中使用的主机名、端口、代理名称和密码 agent.sh与您在 Web 浏览器地址栏中输入的值进行比较,并使用 进行检查。

  • 如果 HTTP 身份验证失败,您可能使用了不正确的代理凭据。尝试使用不正确的凭据登录到服务管理器会在代理日志文件中创建一个条目。

    如果未显示 HTTP 验证对话框,并且您无法连接,则可能是主机名或端口号指定不正确。根据 中描述的值确认您输入的Application hostname and port:configuration_report.txt。连接失败也可能表明该端口在托管 MySQL Enterprise Service Manager 的计算机上被阻止。

  • 要检查阻塞的端口是否是问题所在,请检查防火墙的该端口号配置。打开安装时指定的端口并重启代理。如有必要,您可以使用 SSH 隧道在防火墙外部进行监控。有关详细信息,请参阅 第 5.8 节 “使用 SSH 隧道在防火墙外部进行监控”

  • 当从菜单选项启动代理程序时,从命令行运行代理程序有时会显示错误,这些错误不会出现在日志文件中或屏幕上。要从命令行启动代理,请参阅本节开头给出的说明。

  • 如果您在同一台机器上运行多个代理,则UUID必须是唯一的。

  • 如果代理和它监视的 MySQL 服务器在不同的机器上运行,请确保 host为代理帐户指定正确的。还必须为远程登录打开正确的端口(通常为 3306)。有关远程监控的更多信息,请参阅 第 5.7 节,“配置代理以监控远程 MySQL 服务器”

  • 在 MySQL 5.5 或更早版本上,MySQL Enterprise Monitor Agent 和 MySQL Enterprise Service Manager 使用唯一的主机 ID(存储在 mysql.inventory受监视的 MySQL 服务器的表中)来确定被监视的实例是否是克隆。代理程序启动时,会根据存储的值检查当前服务器的主机 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 和 hostid 信息重新创建表。