7 Ficheros XML de consultas: parte común
Este capítulo describe la parte del formato de los ficheros de consultas que es igual para todos los motores. Lo que depende de cada motor (cómo se escribe la operación sobre la fuente y de dónde sale cada valor) se describe en los capítulos 9, 10 y 11.
7.1 Qué es común y qué depende del motor#
Un fichero XML de consultas tiene siempre la misma estructura: un elemento raíz <Queries> con declaraciones globales y una lista de consultas. Cada consulta combina elementos comunes con elementos propios del motor:
<Queries engine="..."> <!-- común -->
<environment name="..." default="..."/> <!-- común -->
<script language="...">...</script> <!-- común -->
<context .../> <!-- solo Database -->
<authentication ...>...</authentication> <!-- solo Webservice -->
<query name="..." module="..." ...> <!-- común + atributos del motor -->
<sql>...</sql> <!-- solo Database -->
<url>...</url> <!-- solo Webservice -->
<parameter order="..." .../> <!-- común + atributos del motor -->
<item name="..." .../> <!-- común + atributos del motor -->
<field name="..." .../> <!-- común + atributos del motor -->
<script>...</script> <!-- común -->
</query>
</Queries>La tabla 7.1 resume qué elementos y atributos existen en cada motor.
Tabla 7.1. Elementos y atributos por motor
| Elemento / atributo | Database | Webserv. | MQTT | Sección |
|---|---|---|---|---|
Nivel <Queries> |
||||
<Queries engine query databbix> |
sí | sí | sí | 7.3 |
<environment> |
sí | sí | sí | 7.4 |
<script> |
sí | sí | sí | 7.5 |
<context> |
sí | — | — | 9.5 |
<authentication> |
— | sí | — | 10.6 |
Consulta <query> |
||||
name, module, maxCache, maxExecTime |
sí | sí | sí | 7.6 |
discovery="yes" |
sí | sí | sí | 7.9 |
type="Constant" |
sí | sí | sí | 7.10 |
select="FILTER|BIND" |
sí | — | — | 9.4 |
type="REST|SOAP", transport, encode |
— | sí | — | 10.3 |
<sql>, <default> |
sí | — | — | 9.3 |
<url>, <base>, <transform> |
— | sí | — | 10.3 |
<method>, <argument> |
— | sí (SOAP) | — | 10.4 |
<parameter> |
||||
order, value, type |
sí | sí | sí | 7.8 |
context |
sí | — | — | 9.5 |
column, bind |
sí | — | — | 9.4 |
path, urlparameter |
— | sí | — | 10.3 |
<item> |
||||
name, transform, default, built_in |
sí | sí | sí* | 7.7 |
value |
solo en consultas constantes | 7.10 | ||
column |
sí | — | — | 9.4 |
path, type |
— | sí | — | 10.3 |
<field> (descubrimientos) |
||||
name |
sí | sí | sí | 7.9 |
column, context |
sí | — | — | 9.4.4 |
path |
— | sí | — | 10.3.4 |
| * En MQTT los nombres de ítem son fijos (capítulo 11). | ||||
7.2 Reglas generales#
Los nombres de elementos y atributos no distinguen mayúsculas de minúsculas (
<Queries>y<queries>son equivalentes).Un atributo o elemento desconocido, o que no corresponde al motor, es un error: el monitor no arranca y el error aparece en su log.
Conviene escribir el texto de las consultas y los scripts dentro de una sección
<![CDATA[ ... ]]>para no tener que escapar<,>ni&.Si un monitor carga varios ficheros (varias líneas
QueryFile), todos deben ser del mismo motor. Los nombres de consulta y de ítem deben ser únicos en el conjunto de ficheros.
7.3 El elemento <Queries>#
Es el elemento raíz y admite estos atributos:
| Atributo | Descripción |
|---|---|
engine |
Motor: Database (defecto), Webservice o MQTT. Debe coincidir con General.Engine del monitor. |
query |
Versión mínima del formato de consultas que exige el fichero. La versión actual es 2.5.0. |
databbix |
Versión mínima de Databbix que exige el fichero. |
Si la versión instalada es menor que la exigida, el monitor no arranca y lo indica en el log.
7.4 Variables de entorno: <environment>#
Las variables de entorno permiten parametrizar un XML para reutilizarlo en varias instalaciones: nombres de esquema, bases de datos, contextos…
<environment name="SvmSchema" default="svm920"/>Se usan con la sintaxis ${Nombre}. Dónde se sustituyen depende del motor: en Database, en el texto SQL, en los atributos de contextos, <default> y <parameter>, y en las condiciones de <when> con environment(’Nombre’); en Webservice, en el texto de los elementos <header> de las autenticaciones HTTPAuth.
<sql><![CDATA[
select count(*) as n from ${SvmSchema}.f986110
]]>
</sql>El valor de una variable se toma de la primera de estas fuentes que la defina:
Environmenten el fichero.confdel monitor.Environmentendatabbix.conf.El atributo
defaultdel<environment>en el XML.
Por ejemplo, para que un monitor use el esquema svm910:
[General]
Environment = SvmSchema=svm910Una variable sin definir se sustituye por una cadena vacía.
7.5 Scripts: <script>#
Un <script> contiene funciones en JavaScript o Python que se usan para transformar valores o respuestas. Se puede poner en el nivel de <Queries>, y entonces está disponible en todas las consultas, o dentro de un <query>, y entonces solo está disponible en esa consulta.
<script language="Javascript"><![CDATA[
function toUnix(fecha) {
return Math.round(Date.parse(fecha) / 1000);
}
]]>
</script>Todos los scripts de una colección de consultas deben usar el mismo lenguaje. El capítulo 12 explica cómo programarlos.
7.6 La consulta: <query>#
7.6.1 Atributos comunes#
| Atributo | Descripción |
|---|---|
name |
Obligatorio. Nombre único de la consulta. Aparece en el log y en queryexplorer. |
module |
Obligatorio. Módulo al que pertenece la consulta. |
discovery |
yes para una consulta de descubrimiento (LLD). |
type |
Constant para una consulta de valores constantes. En el motor Webservice, además, REST o SOAP. |
maxCache |
Vida máxima en caché de los resultados de esta consulta, en segundos. La vida efectiva es el menor valor entre este y MaxCache del monitor. |
maxExecTime |
Umbral en segundos a partir del cual se registra un aviso de ejecución lenta. Si no se indica, se usa MaxQueryExecTimeLog. |
7.6.2 Tipos de consulta por motor#
| Motor | Tipo | Qué hace |
|---|---|---|
| Todos | Constante | Devuelve valores fijos del XML. |
| Descubrimiento | Genera el JSON de una regla LLD de Zabbix. | |
| Database | Básica | Una sentencia SQL que devuelve una fila. |
| Filtro | Una sentencia que devuelve muchas filas; la clave elige la fila. | |
| Bind | La clave se pasa a la sentencia como variable. | |
| Webservice | REST | Llamada HTTP con respuesta JSON; la clave se puede pasar en la URL o usar como filtro. |
| SOAP | Llamada SOAP con argumentos fijos. | |
| MQTT | Valor | Último valor publicado en un topic. |
7.7 El elemento <item>#
Cada <item> declara un ítem de Zabbix que produce la consulta. Estos son sus atributos comunes; cada motor añade los atributos que indican de dónde sale el valor (column en Database, path y type en Webservice).
| Atributo | Descripción |
|---|---|
name |
Obligatorio. Clave del ítem en Zabbix, sin parámetros. Debe ser única entre todas las consultas cargadas. |
transform |
Función que transforma el valor antes de enviarlo, con la forma Lenguaje:función (por ejemplo, Javascript:toUnix). Véase el capítulo 12. |
default |
Valor que se envía si el dato buscado no existe (la fila de una consulta de filtro o la ruta de una respuesta JSON). |
built_in |
Ítem interno de la consulta: exec_time (tiempo de ejecución en segundos) o exec_success (1 si la última ejecución terminó bien, 0 si no). |
Un mismo dato puede alimentar varios ítems con nombres distintos, por ejemplo para mantener una clave antigua y una nueva a la vez:
<item name="tez.ora.queryversion" column="version"/>
<item name="ts.db.queryversion" column="version"/>7.8 El elemento <parameter>#
Relaciona cada parámetro de la clave de Zabbix con la consulta. Estos son los atributos comunes; el atributo que dice para qué se usa el parámetro depende del motor (column, bind o context en Database; path o urlparameter en Webservice).
| Atributo | Descripción |
|---|---|
order |
Posición del parámetro en la clave del ítem, empezando en 1. |
value |
Valor fijo, en lugar de tomarlo de la clave. Es incompatible con order. |
type |
STRING (defecto) o INT. Con INT, el valor se compara o se envía como número. |
Los parámetros de la clave se separan solo por comas y se eliminan los espacios de los extremos. No se interpretan comillas, así que un parámetro no puede contener comas.
7.9 Consultas de descubrimiento#
En todos los motores, una consulta con discovery="yes" produce el JSON de una regla de descubrimiento de bajo nivel de Zabbix:
{"data":[ {"{#MACRO1}":"valor", "{#MACRO2}":"valor"}, ... ]}
Cada entidad descubierta (una fila, un elemento de un array JSON, un topic) es un elemento de
data.Cada
<field>define una macro: el atributonamees el nombre de la macro sin{#ni}, y el atributo propio del motor indica de dónde sale su valor.Los
<item>de un descubrimiento solo llevannamey, opcionalmente,transform; en ese caso la función recibe el JSON completo (sección 12.5).
7.10 Consultas constantes#
Con type="Constant", la consulta no accede a la fuente de datos: cada <item> devuelve el valor de su atributo value. Funcionan con cualquier motor y se suelen usar para publicar la versión del fichero de consultas:
<query name="JDEVersion" module="JDE" type="Constant">
<item name="ts.jde.queryversion" value="$Id: manual-databbix.tex 2699 2026-10-28 12:19:58Z bruno $"/>
</query>