30.2.2.2 主要查询

主要查询使您能够从受监视的服务器中检索数据。

定义查询时,以下限制适用:

  • 查询必须在 <![CDATA[]]>容器内定义。例如:<![CDATA[SELECT X FROM Y AS FOO]]>。不要在 CDATA 和后面的 [ 之间输入任何字符,也不要在 [ 和查询开头之间输入任何字符。同样的规则适用于结束]]。

  • 只有 SELECT 语句是可能的。无法使用 INSERT、UPDATE、DELETE 等。

  • 不可能为每个类定义多个查询。

  • 代理必须具有足够的权限才能运行查询。

  • 不要定义比顾问程序上定义的计划运行时间更长的查询。例如,如果查询需要 2 分钟才能运行,但顾问定义的计划要求查询每 1 分钟运行一次,则不会返回任何结果。为避免这种情况,请在受监控的服务器上彻底测试您的查询。如果自定义数据收集部署在多个代理上,则必须在每个受监视的服务器上对其进行测试,并相应地修改计划。

  • 查询只能返回一行,除非使用结果类型CLASS_TYPE_1STCOL_ATTRIBUTES。有关详细信息,请参阅第 30.2.3.2 节,“返回多行”

对于从服务器检索到的每个值,您必须指定一个名称。也就是说,您必须使用以下格式,其中 NAME 是应用于数据集合的名称:

  SELECT X AS NAME FROM Y

这些项目显示在新 Advisor 页面的Variable Assignment 框架上的Data Item 下拉菜单中。它们采用以下格式: . 例如, mysql:status:open_files_limitnamespace:classname:name

笔记

本节中使用的示例取自随 MySQL Enterprise Monitor 安装提供的默认顾问程序。

Server Has Anonymous Accounts顾问 使用以下示例:

<class>
	<namespace>mysql</namespace>
	<classname>anonymous_user</classname>
	<query><![CDATA[SELECT COUNT(*) AS user_count FROM mysql.user WHERE user='']]></query>
</class>

在此顾问程序中,变量%user_count% 映射到查询中定义 的数据项。 mysql:anonymous_user:user_count