![]() |
This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introducción
Checkmk proporciona opciones completas para la monitorización de bases de datos Oracle. Con el plugin de agente no sólo puedes recuperar los tablespaces de una base de datos o sus sesiones activas, sino también muchos otros tipos de métricas. Puedes encontrar una lista completa de las opciones de monitorización con nuestros plugins de check en el Catálogo de plugins de check. Regularmente añadimos nuevos plugins y actualizamos los existentes, por lo que siempre merece la pena consultar el catálogo. Entre otros, Checkmk puede monitorizar los siguientes valores:
Para poder monitorizar las bases de datos sólo se necesita el plugin de agente, además del agente en el servidor de base de datos. Actualmente se admiten los sistemas operativos Linux, Solaris, AIX y Windows. El plugin de agente para Linux, Solaris y AIX se llama mk_oracle
y para Windows mk_oracle.ps1
. No se necesitará ningún otro software adicional para la monitorización, ni en el servidor Checkmk ni en el servidor de base de datos.
Muchos de los pasos para configurar la monitorización son los mismos tanto para Linux como para Windows. Por ello, describiremos primero los pasos generales, luego los específicos para el grupo de sistemas operativos respectivo y, por último, el Agent bakery en las ediciones comerciales.
2. Configuración inicial
Los archivos de configuración con contenido de ejemplo que se presentan en este capítulo y en los siguientes se encuentran en el servidor Checkmk, ya sea mediante la línea de comandos o a través de la interfaz web de Checkmk. En Checkmk edición Raw selecciona Setup > Agents y en las ediciones comerciales Setup > Agents > Windows, Linux, Solaris, AIX > Related. En todas las ediciones encontrarás entradas de menú para los distintos sistemas operativos. Los archivos de configuración se encuentran en la caja Example Configurations.
2.1. Crear un usuario de base de datos
En principio, la primera configuración es rápida y sólo requiere tres pasos. El primer paso, por supuesto, es tener un usuario que también pueda consultar las bases de datos. Siempre que no utilices Real Application Cluster (RAC), crea un usuario en cada base de datos que se vaya a monitorizar. La forma de acceder a una instancia difiere según el sistema operativo instalado. En Linux, puedes hacerlo, por ejemplo, configurando siempre primero la instancia correspondiente como una variable del entorno en la que se va a crear un usuario. Normalmente, primero se cambia al usuario oracle
, pero esto puede variar según la configuración:
root@linux# su - oracle
oracle@linux$ export ORACLE_SID=MYINST1
A continuación, accede a la instancia y crea un usuario para la monitorización. En el siguiente ejemplo, el usuario recién creado se llama checkmk
. También puedes especificar cualquier otro nombre que desees:
sqlplus> create user checkmk identified by myPassword;
sqlplus> grant select_catalog_role to checkmk;
sqlplus> grant create session to checkmk;
sqlplus> connect checkmk/myPassword
sqlplus> exit
Puedes averiguar cómo funciona exactamente el inicio de sesión en una instancia concreta en la documentación de Oracle.
Bases de datos multi-tenant
También puedes configurar el inicio de sesión para bases de datos multi-tenant. Esto se realiza normalmente en la configuración utilizando un usuario especial y con el prefijo C##
. La asignación de permisos es un poco diferente que para los usuarios normales, ya que tienes que especificarlos para todos los contenedores actuales y para todos los contenedores futuros:
sqlplus> create user c##checkmk identified by myPassword;
sqlplus> alter user c##checkmk set container_data=all container=current;
sqlplus> grant select_catalog_role to c##checkmk container=all;
sqlplus> grant create session to c##checkmk container=all;
sqlplus> exit
2.2. Crear la configuración
Después de haber creado un usuario, el siguiente paso es habilitar el plugin de agente para que reciba posteriormente esta información. La forma más sencilla es que definas los mismos datos de inicio de sesión para todas las instancias, y establezcas un valor por defecto en la configuración. Ahora, en el host de Oracle, crea un nuevo archivo de configuración mk_oracle.cfg
para Linux, AIX, Solaris o mk_oracle_cfg.ps1
para Windows. En el siguiente ejemplo se puede ver el archivo para sistemas tipo Unix:
# Syntax:
# DBUSER='USERNAME:PASSWORD'
DBUSER='checkmk:myPassword'
Para Windows, este procedimiento es muy similar. En él, estableces la variable en un script de PowerShell:
# Syntax:
# $DBUSER = @("USERNAME","PASSWORD")
$DBUSER = @("checkmk","myPassword")
El usuario estándar es todo lo que realmente requiere el plugin de agente. El resto de opciones que puedes configurar en sistemas tipo Unix o en Windows son opcionales.
2.3. Utilizar la Cartera Oracle
Como alternativa a especificar el usuario directamente y con una contraseña en un archivo de configuración, también puedes utilizar el Monedero Oracle. Esto tiene la ventaja de que ya no necesitas almacenar los datos de acceso de forma no cifrada en el servidor Checkmk y en el host Oracle. Por tanto, aunque hayas definido los derechos de acceso del archivo de configuración en el host Oracle a tu medida, los datos de acceso han salido del servidor y se encuentran en el servidor Checkmk siempre que utilices el Agent bakery.
A su vez, la Cartera Oracle almacena los datos de acceso encriptados en el host que se va a monitorizar para que sólo se puedan utilizar, pero no es necesario dar a conocer explícitamente los datos de inicio de sesión. De este modo, Checkmk puede utilizar esta cartera para que los datos de acceso sólo tenga que conocerlos el administrador de la base de datos (DBA). Crea -o el DBA puede crear- una cartera en el servidor adecuado:
root@linux# mkstore -wrl /etc/check_mk/oracle_wallet -create
El plugin de agente accederá posteriormente a este archivo cada vez que deba establecerse una conexión con una instancia. Para que también puedan encontrarse los datos de usuario necesarios, deberás introducirlos una vez en el monedero. En el siguiente ejemplo añades así el usuario checkmk
para la instancia MYINST1
:
root@linux# mkstore -wrl /etc/check_mk/oracle_wallet -createCredential MYINST1 checkmk myPassword
Para que el plugin de agente sepa dónde buscar el monedero, debe encontrar dos archivos. El primer archivo es sqlnet.ora
en el que se puede encontrar la información para la ubicación del monedero. El segundo archivo -tnsnames.ora
- define la dirección de la instancia para que también se pueda dirigir a ella a través de su alias. Para que el plugin de agente pueda acceder a estos archivos, puedes especificar la ruta en Linux, Solaris y AIX utilizando la variable del entorno TNS_ADMIN
Esto es especialmente útil si los archivos ya existen. Como alternativa, puedes crearlos explícitamente. Windows incluso requiere que los especifiques manualmente.
Crea primero el archivo sqlnet.ora
. El plugin de agente busca alternativamente en este archivo los datos de inicio de sesión, por lo que debes introducir aquí la ruta correcta al archivo de la cartera que acabas de crear. Asegúrate de que estableces el parámetro SQLNET.WALLET_OVERRIDE
en TRUE
:
LOG_DIRECTORY_CLIENT = /var/log/check_mk/oracle_client
DIAG_ADR_ENABLED = OFF
SQLNET.WALLET_OVERRIDE = TRUE
WALLET_LOCATION =
(SOURCE=
(METHOD = FILE)
(METHOD_DATA = (DIRECTORY=/etc/check_mk/oracle_wallet))
)
Ahora el Plugin sabe qué credenciales debe utilizar. Para que también acceda a la dirección correcta, crea tnsnames.ora
como segundo archivo. La sintaxis exacta se puede encontrar en la documentación de Oracle, pero como ejemplo el archivo podría tener este aspecto:
MYINST1
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYINST1_ALIAS)
)
)
Con este paso habrás creado los requisitos previos para eliminar los datos de acceso del archivo de configuración del plugin de agente. En lugar de los datos de acceso, simplemente introduce una /
(barra oblicua):
DBUSER='/:'
Por supuesto, más adelante podrás añadir más datos de acceso al monedero. En ese caso, basta con modificar el archivo tnsnames.ora
según sea necesario.
Por último, cambia los permisos de los archivos y directorios creados manualmente en esta sección para que los derechos de acceso en la ejecución se establezcan correctamente. El plugin de agente ejecutado como root
cambiará al propietario de los binarios de Oracle (como $ORACLE_HOME/bin/sqlplus
) antes de ejecutarlos. Por tanto, como mínimo, el grupo del propietario de los binarios de Oracle necesita acceso de lectura a los archivos creados manualmente en /etc/check_mk/
. En el siguiente ejemplo, suponemos que el grupo es oinstall
.
Los siguientes comandos cambian el grupo a oinstall
:
root@linux# chgrp oinstall /etc/check_mk/sqlnet.ora /etc/check_mk/tnsnames.ora
root@linux# chgrp -R oinstall /etc/check_mk/oracle_wallet
Estos comandos garantizan que el grupo pueda leer el directorio oracle_wallet
y su contenido:
root@linux# chmod g+x /etc/check_mk/oracle_wallet
root@linux# chmod -R g+r /etc/check_mk/oracle_wallet
Los permisos deberían ser algo parecido a esto:
root@linux# tree -ugpR /etc/check_mk
[drwxr-xr-x root root ] /etc/check_mk
├── [drwxr-x--- root oinstall ] oracle_wallet
│ └── [-rw-r----- root oinstall ] cwallet.sso
│ └── [-rw-r----- root oinstall ] cwallet.sso.lck
│ └── [-rw-r----- root oinstall ] ewallet.p12
│ └── [-rw-r----- root oinstall ] ewallet.p12.lck
├── [-rw-r--r-- root oinstall ] sqlnet.ora
├── [-rw-r--r-- root oinstall ] tnsnames.ora
La salida del comando sólo muestra los archivos y directorios en cuestión.
3. Configuración para Linux, Solaris, AIX
3.1. Plugin y rutas de configuración
En los sistemas tipo Unix, Checkmk utiliza un Plugin de agente uniforme. Por un lado, esto reduce el esfuerzo de mantenimiento, ya que no se duplican las consultas SQL, y por otro, sólo tienes que prestar atención a un único Plugin de agente. En todos los sistemas compatibles, las rutas de los archivos para los agentes son las mismas o muy similares. En concreto, necesitas los siguientes directorios:
Sistema operativo | Ruta del Plugin | Ruta de configuración |
---|---|---|
Linux, Solaris, AIX |
|
|
Linux con |
|
|
AIX |
|
|
3.2. Instalación del Plugin de agente
Una vez que hayas creado un usuario en la configuración inicial y lo hayas guardado en el archivo de configuración, instala el plugin de agente. Copia el archivo mk_oracle
del directorio ~/share/check_mk/agents/plugins/
del servidor Checkmk al directorio de plugins del host Oracle descrito anteriormente.
![]() |
El plugin de agente para sistemas tipo Unix |
Asegúrate de que el plugin de agente es ejecutable, y corrígelo si es necesario:
root@linux# cd /usr/lib/check_mk_agent/plugins/
root@linux# ls -lA
-rw-r--r-- 1 root root 120808 Jan 25 11:29 mk_oracle
root@linux# chmod +x mk_oracle
root@linux# ls -lA
-rwxr-xr-x 1 root root 120808 Jan 25 11:29 mk_oracle
3.3. Opciones avanzadas
En la configuración inicial ya has conocido las primeras variables para obtener datos de monitorización de sus instancias de Oracle. Sin embargo, dependiendo del escenario de la aplicación, necesitarás rápidamente otras posibilidades para un mejor control individual de la monitorización de cada instancia. Encontrarás estas opciones en las siguientes secciones.
Configuración avanzada de usuarios
Con el inicio de sesión estándar puedes utilizar instancias normales o incluso todas las instancias de una base de datos. Sin embargo, hay casos especiales en los que necesitas datos de acceso individuales para instancias concretas. Por ello, en el archivo de configuración tienes las tres opciones siguientes para especificar usuarios:
Parámetro | Descripción |
---|---|
|
Por defecto, si no se han definido datos de acceso individuales para la instancia de la base de datos. |
|
Datos de acceso para una instancia concreta de la base de datos, en este caso para la instancia |
|
Datos de acceso especiales para la Gestión Automática de Almacenamiento (ASM). |
Estas variables permiten aún más opciones aparte del nombre de usuario y la contraseña. También puedes determinar si el usuario es un SYSDBA
o un SYSASM
, en qué combinación de dirección y puerto escucha la instancia, e incluso qué alias TNS (TNSALIAS
) debe utilizarse. Sin embargo, estas especificaciones son siempre -a diferencia del usuario y la contraseña- opcionales. Además del ejemplo anterior, una configuración puede tener este aspecto
# Syntax
# DBUSER='USERNAME:PASSWORD:ROLE:HOST:PORT:TNSALIAS'
DBUSER='checkmk:myPassword'
DBUSER_MYINST1='cmk_specific1:myPassword1:SYSDBA:localhost:1521'
DBUSER_MYINST2='cmk_specific2:myPassword2::localhost::INST2'
ASMUSER='cmk_asm:myASMPassword:SYSASM'
Algunas explicaciones sobre el ejemplo anterior:
Puedes definir cualquier número de datos de acceso individuales, que siempre son preferibles a los estándar.
Cada opción está separada de las demás por un
:
(dos puntos).Si se omite un campo opcional en medio de la cadena, se deben codificar dos puntos, como en la entrada
DBUSER_MYINST2
, en la que no se especificó ningún rol ni ningún puerto.Si a partir de cierto punto ya no se necesitan más campos opcionales, puedes omitir los dos puntos, como en la entrada
ASMUSER
, donde no se especificó ni host, ni puerto, ni alias TNS.
Incluir o excluir instancias
En algunos casos, puede que no quieras incluir instancias concretas en la monitorización. Esto puede deberse a que sólo sea un campo de juego para desarrolladores, o por otras razones. Para simplificar al máximo la configuración en situaciones individuales, tienes varias opciones para excluir total o parcialmente una o varias instancias:
Parámetro | Descripción |
---|---|
|
Aquí puedes determinar qué instancias se van a monitorizar. Una instancia se nombra por su identificador de sistema (SID). Se trata de una lista positiva, en la que se ignoran todas las instancias que no aparecen explícitamente. Este parámetro es muy útil si el número de instancias que se van a monitorizar es menor que el número de instancias que se van a ignorar. |
|
A diferencia de |
|
Con este parámetro puedes excluir parcialmente una instancia excluyendo de la monitorización determinadas secciones de la misma. De este modo, defines una lista negativa de las secciones de una instancia. También puedes excluir todas las secciones con el valor |
Ya lo habrás adivinado: el orden en que se procesan estos parámetros determina el resultado. De hecho, las entradas se procesan por instancia exactamente en secuencia, como se muestra en la tabla anterior. Por lo tanto, si se establece la variable ONLY_SIDS
, ya no se evalúa SKIP_SIDS
ni se comprueba si la variable EXCLUDE_<SID>
se establece en ALL
para esta instancia. Si no se establece ONLY_SIDS
, el sistema procede según la secuencia. En caso de duda -es decir, como comportamiento por defecto-, la instancia se monitorizará en consecuencia.
A continuación se muestra un ejemplo en el que se establecen todas las variables y cómo es el comportamiento:
ONLY_SIDS='INST1 INST2 INST5'
SKIP_SIDS='INST7 INST3 INST2'
EXCLUDE_INST1='ALL'
EXCLUDE_INST2='tablespaces rman'
Como la lista positiva de la primera línea siempre tiene prioridad, las líneas segunda y tercera ya no se evalúan. Sólo la cuarta línea (la última) se tendrá en cuenta más adelante, ya que aquí la instancia sólo se evaluará parcialmente.
En la práctica, sólo tiene sentido utilizar una de las variables para determinar el número de instancias que se van a monitorizar.
Determinar los datos a obtener
Como has aprendido en la sección anterior, no sólo es posible desactivar completamente las instancias, sino también monitorizarlas sólo parcialmente. Los requisitos operativos son diversos, y resulta especialmente práctico cuando no es deseable que determinadas secciones de larga duración se incluyan en todo, o cuando sólo se necesita información básica de las instancias de prueba, por ejemplo. Para restringir globalmente las secciones, establece directamente las variables correspondientes -para restringir sólo determinadas instancias puedes introducir la variable EXCLUDE_<SID>
, de la que ya has aprendido en la sección anterior-. Las variables globales son:
Parámetro | Descripción |
---|---|
|
Secciones que deben consultarse de forma sincrónica, es decir, cada vez que se ejecuta el agente. Como el intervalo de consulta es de 60 segundos por defecto, las consultas SQL utilizadas deben ejecutarse con la rapidez correspondiente. Si no se especifica la variable, se consultan todas las secciones. |
|
Secciones que deben consultarse de forma asíncrona, es decir, sólo cada x minutos. El tiempo de validez de los datos viene determinado por la variable |
|
Aquí para las secciones ASM se aplica el mismo mecanismo que en la descripción general para la variable |
|
En las secciones ASM se aplica el mismo mecanismo que en la descripción general de la variable |
|
Esta variable se utiliza para determinar durante cuánto tiempo siguen siendo válidos los datos recuperados de forma asíncrona. Si no se especifica el valor de la variable, se utiliza un valor por defecto de 600 segundos (10 minutos). Asegúrate de que el intervalo de tiempo no es inferior al intervalo en el que el agente Checkmk entrega los datos (60 segundos por defecto). De lo contrario, los datos pueden considerarse obsoletos y el agente no los entregará. |
|
Número de SID que se procesan en paralelo. El valor por defecto es 1. |
Por tanto, el mecanismo te permite establecer un valor por defecto en el archivo de configuración y sobrescribirlo para instancias individuales según sea necesario. Así, por ejemplo, una configuración podría tener este aspecto
# DEFAULTS:
# SYNC_SECTIONS="instance sessions logswitches undostat recovery_area processes recovery_status longactivesessions dataguard_stats performance locks"
# ASYNC_SECTIONS="tablespaces rman jobs ts_quotas resumable"
# SYNC_ASM_SECTIONS="instance processes"
# ASYNC_ASM_SECTIONS="asm_diskgroup"
# CACHE_MAXAGE=600
SYNC_ASM_SECTIONS='instance'
ASYNC_SECTIONS='tablespaces jobs rman resumable'
CACHE_MAXAGE=300
EXCLUDE_INST1='undostat locks'
EXCLUDE_INST2='jobs'
Como puedes ver en el ejemplo, sólo se consulta la sección instance
para las instancias ASM y se especifica un conjunto mínimo para las secciones asíncronas en todas las instancias regulares. Además, en la instancia INST1
se omitirán las secciones síncronas undostat
y locks
.
Puesto que las secciones síncronas no se especifican explícitamente, se consultan todas las secciones síncronas de todas las demás instancias. A su vez, en la instancia INST2
sólo se consultan tres de las cuatro secciones asíncronas, ya que jobs
se excluyó adicionalmente. Y, por último, el caché de 10 minutos se reduce a 5 minutos (300 segundos), ya que es tiempo suficiente para obtener todos los datos.
![]() |
Si defines en el archivo de configuración qué secciones quieres recuperar y mediante qué método -también puedes transformar una sección asíncrona en una sección síncrona-, debes especificartodas las secciones que deben ejecutarse en el área correspondiente. |
Por ejemplo, si sólo quieres locks
de la consulta sincrónica, especifica toda la lista sincrónica y simplemente omite locks
:
# Just exclude 'locks' from sync sections:
SYNC_SECTIONS='instance sessions logswitches undostat recovery_area processes recovery_status longactivesessions dataguard_stats performance'
Lo mismo se aplica a las otras tres variables en las que se pueden determinar las secciones.
Configurar el alias TNS y TNS_ADMIN
El alias TNS es un nombre fácil de usar para una conexión a una base de datos. TNS son las siglas de la tecnología de red de Oracle Substrato de red transparente. Un alias TNS permite establecer una conexión a una instancia de base de datos sin tener que introducir cada vez los detalles completos de la conexión (como el nombre del host, el número de puerto o el nombre del servicio). Los alias TNS se definen en el archivo tnsnames.ora
. La sección sobre Cartera Oracle contiene un ejemplo de cómo definir un alias TNS.
TNS_ADMIN
es una variable del entorno que apunta al directorio en el que se encuentran los archivos de configuración de Oracle, como sqlnet.ora
y tnsnames.ora
. Por defecto, TNS_ADMIN
está configurado por Oracle como $ORACLE_HOME/network/admin
. En el archivo de configuración, puedes asignar una ruta diferente a TNS_ADMIN
, como en el siguiente ejemplo para una instalación específica de Oracle:
export TNS_ADMIN=/opt/oracle/product/19c/dbhome_1/network/admin/
Sólo si la variable no está configurada, el plugin de agente la establece en /etc/check_mk/
.
Derechos de acceso en la ejecución
Por motivos de seguridad, el plugin de agente mk_oracle
ya no ejecuta binarios de Oracle bajo el usuario root
. Esto afecta a los programas sqlplus
, tnsping
y -si está disponible-crsctl
. En su lugar, mk_oracle
, por ejemplo, cambia al propietario del archivo $ORACLE_HOME/bin/sqlplus
antes de ejecutar sqlplus
. Esto garantiza que los programas de Oracle sólo sean ejecutados por un usuario sin privilegios y evita así que un usuario malintencionado de Oracle sustituya un binario como sqlplus
y lo ejecute como usuario root
.
![]() |
La ejecución de programas de Oracle por parte de un usuario sin privilegios puede provocar problemas al utilizar un monedero de Oracle, ya que este usuario no podrá acceder a los archivos específicos del monedero. El usuario sin privilegios necesita permisos para leer los archivos $TNS_ADMIN/sqlnet.ora
y $TNS_ADMIN/tnsnames.ora
, para ejecutar la carpeta del monedero y para leer los archivos de la carpeta del monedero. No deberías tener problemas con los derechos de acceso siempre que hayas cambiado el grupo de los archivos y directorios como se describe al final de la sección sobre el monedero de Oracle.
El plugin de agente te ayuda con el diagnóstico y comprueba si hay problemas para acceder a los archivos mencionados y los muestra en la prueba de conexión. El procedimiento exacto para diagnosticar y corregir los derechos de acceso se encuentra en la Base de conocimientos de Checkmk.
3.4. Monitorización de bases de datos remotas
En los sistemas tipo Unix, no sólo puedes recuperar las instancias que se ejecutan localmente, sino también conectarte a las remotas y recuperar las bases de datos que se ejecutan en ellas. Esto, por ejemplo, es ventajoso si no tienes acceso al sistema subyacente, pero quieres monitorizar la base de datos. También es posible monitorizar bases de datos remotas desde un host en el que se esté ejecutando el plugin de agente, pero no una base de datos Oracle.
Para monitorizar bases de datos remotas, deben cumplirse los siguientes requisitos en el host en el que esté instalado el plugin de agente:
La biblioteca de acceso Linux AIO está instalada. En Red Hat Enterprise Linux y distribuciones compatibles binarias, el paquete se llama
libaio
.El Cliente Instantáneo de Oracle está instalado.
El programa
sqlplus
ya existe en la instalación, o puede haberse instalado como paquete de extensión del cliente.
Por regla general, las condiciones ya se cumplen si existe una instalación de Oracle en el host. En caso contrario, instala los paquetes adecuados para ello.
Para que el plugin de agente pueda conectarse a la base de datos remota, almacena primero los datos de acceso en el archivo de configuración. Son similares a los detalles de DBUSER
, que ya has visto en la configuración avanzada de usuario. Sin embargo, hay una serie de especificaciones adicionales obligatorias:
# Syntax:
# REMOTE_INSTANCE_[ID]='USER:PASSWORD:ROLE:HOST:PORT:PIGGYBACKHOST:SID:VERSION:TNSALIAS'
REMOTE_INSTANCE_1='check_mk:mypassword::myRemoteHost:1521:myOracleHost:MYINST3:11.2'
REMOTE_INSTANCE_myinst1='/:::myRemoteHost:1521::MYINST1:11.2:INST1'
REMOTE_ORACLE_HOME='/usr/lib/oracle/11.2/client64'
En el ejemplo, se están configurando dos instancias remotas con dos líneas. Para que cada línea de texto sea única, se define un ID al final de cada variable. Éstos pueden elegirse libremente, sólo tienen que ser únicos para cada archivo de configuración. Como ya habrás observado, a la especificación del puerto le siguen ahora otros valores, en parte opcionales y en parte necesarios para establecer una conexión.
El primer valor nuevo PIGGYBACKHOST
se establece en myOracleHost
para la instancia MYINST3
. Esta especificación asigna los resultados de la consulta mediante el mecanismo piggyback al host especificado. Si éste está presente como host en Checkmk, los nuevos servicios aparecerán allí en consecuencia, en lugar de en el host donde se está ejecutando el plugin de agente o desde el que se obtuvieron los datos. No verás esta especificación en la segunda instancia MYINST1
: la asignación a otro host es opcional.
El segundo valor nuevo SID
es el nombre de la instancia. Como el plugin de agente no puede ver qué instancias se están ejecutando en el host remoto, se debe especificar una línea de configuración para cada instancia remota - por tanto, este valor es obligatorio y no opcional.
El tercer valor VERSION
es obligatorio y también se debe a que muchos metadatos sólo están disponibles si estás directamente en el host. Por lo tanto, tampoco se puede omitir la especificación de la versión, que determina qué consultas SQL se pueden pasar a la instancia. En el ejemplo, ambas instancias remotas utilizan la versión 11.2
.
El cuarto y último valor TNSALIAS
es de nuevo opcional y puede utilizarse si accedes a la instancia remota a través del Oracle Wallet o del LDAP/Directorio Activo. En el caso de que la instancia responda sólo a un alias TNS específico, puedes especificar este alias aquí. Para la segunda instancia remota, TNSALIAS
tiene el valor INST1
.
Para asegurarte de que también se encuentra el programa sqlplus
, utiliza la variable REMOTE_ORACLE_HOME
para especificar dónde se encuentra el cliente Oracle en el host que ejecuta el plugin de agente. Sólo entonces estarán disponibles todos los recursos necesarios para las consultas.
Al consultar instancias remotas, existen algunas restricciones y características especiales:
Puesto que has introducido explícitamente las instancias remotas en el archivo de configuración, no puedes excluir estas instancias utilizando
SKIP_SIDS
, y a cambio no necesitas incluirlas utilizandoONLY_SIDS
.Las instancias con el mismo nombre (
SID
) no pueden asignarse al mismo host. Esto es especialmente relevante si estás obteniendo instancias de múltiples hosts remotos y/o locales en los que se utilizan nombres idénticos.
4. Configuración para Windows
4.1. Plugin y rutas de configuración
En Windows, PowerShell se utiliza como lenguaje de scripting para monitorizar bases de datos Oracle. La funcionalidad es similar a la del plugin del agente en sistemas tipo Unix, pero sólo contiene una parte de ésta. Para utilizar el plugin del agente en Windows, necesitas la versión 5.x o superior de PowerShell y también los siguientes directorios:
Sistema operativo | Ruta del Plugin | Ruta de configuración |
---|---|---|
Windows |
|
|
4.2. Instalación del Plugin de agente
Una vez que hayas creado un usuario en la configuración inicial y lo hayas almacenado en el archivo de configuración, instala el plugin de agente. Los plugins de agente para Windows se almacenan en el host durante la instalación del agente Checkmk para Windows. En el host Oracle, copia el archivo mk_oracle.ps1
del directorio C:\Program Files (x86)\checkmk\service\plugins\
al directorio de plugins descrito anteriormente. También puedes hacer referencia al archivo en la ruta de instalación actualizando el archivo de configuración del agente Checkmk.
4.3. Características especiales en Windows
Normalmente, Windows impide la ejecución de scripts PowerShell si no han sido firmados. Ahora puedes solucionar este problema muy fácilmente modificando las directivas de ejecución de scripts PowerShell para el usuario que ejecuta el agente Checkmk:
PS C:\ProgramData\checkmk\agent\> Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope LocalMachine
PS C:\ProgramData\checkmk\agent\> Get-ExecutionPolicy -Scope LocalMachine
Bypass
Esta opción es útil si durante un breve periodo de tiempo quieres probar un script o la funcionalidad general del agente Checkmk. Para evitar comprometer la seguridad de tu sistema, revierte esta configuración en los servidores productivos una vez finalizadas las pruebas:
PS C:\Program\checkmk\agent\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
PS C:\Program\checkmk\agent\> Get-ExecutionPolicy -Scope LocalMachine
RemoteSigned
Es comprensible que probablemente no quieras cambiar las directrices cada 60 segundos. Por tanto, establece una excepción permanente sólo para los scripts relevantes. El archivo de configuración del plugin de agente también debe añadirse a las excepciones. Para facilitar la lectura, en este ejemplo se ha omitido completamente la salida:
PS C:\ProgramData\checkmk\agent\> Unblock-File -Path .\plugins\mk_oracle.ps1
PS C:\ProgramData\checkmk\agent\> Unblock-File -Path .\config\mk_oracle_cfg.ps1
4.4. Opciones avanzadas
En la configuración inicial ya has conocido las primeras variables para obtener datos de monitorización de tus instancias de Oracle. Sin embargo, dependiendo del escenario de la aplicación, necesitarás rápidamente otras opciones para poder controlar mejor e individualmente la monitorización de cada instancia. En las siguientes secciones se describen las opciones que también están a tu disposición en Windows.
Configuración avanzada de usuario
Al igual que en Linux, también puedes definir no sólo un inicio de sesión estándar para el plugin de agente de Windows, sino también datos de acceso individuales para instancias concretas. Por tanto, tienes las mismas tres opciones para especificar los usuarios:
Parámetro | Descripción |
---|---|
|
Por defecto, si no se han definido datos de acceso individuales para la instancia de base de datos. |
|
Datos de acceso para una instancia concreta de la base de datos, en este caso para la instancia |
|
Datos de acceso especiales para la Gestión Automática de Almacenamiento (ASM). |
Además, aquí también se pueden especificar más opciones aparte del nombre de usuario o la contraseña - estas entradas adicionales también son opcionales, sin embargo, cada entrada debe rellenarse si se utiliza. Así, por ejemplo, una configuración puede tener este aspecto
# Syntax
# DBUSER = @("USERNAME", "PASSWORD", "ROLE", "HOST", "PORT")
# Default
# DBUSER = @("", "", "", "localhost", "1521")
$DBUSER = @("checkmk", "myPassword", "SYSDBA", "localhost", "1521")
@DBUSER_MYINST1 = @("cmk_specific1", "myPassword1", "", "10.0.0.73")
@DBUSER_MYINST2 = @("cmk_specific2", "myPassword2", "SYSDBA", "localhost", "1531")
@ASMUSER = @("cmk_asm", "myASMPassword", "SYSASM")
Algunas explicaciones sobre el ejemplo anterior:
Puedes definir cualquier número de datos de acceso individuales, que siempre son preferibles a los estándar.
Cada opción se define en una lista. El orden de las entradas no es arbitrario, por lo que no se puede reordenar.
Cuando un campo opcional permanece inalterado pero se va a editar un campo que le sigue, ambos campos deben especificarse correctamente, como en el caso de la entrada
DBUSER_MYINST2
, en la que elHOST
sigue siendolocalhost
aunque sólo se vaya a cambiar elPORT
.Si los campos opcionales ya no son necesarios después de cierto punto, pueden omitirse, como en la entrada
ASMUSER
, en la que sólo se especificó el rol del usuario.Si no se va a asignar ningún rol especial al usuario, pero se va a personalizar
HOST
oPORT
, basta con introducir un par de comillas (""
) en esta posición.
Activar y desactivar instancias
Incluso en Windows, no siempre se desea incluir determinadas instancias. Las razones para ello ya se han descrito en la sección dedicada a Linux. Dos de los tres parámetros que conoces de Linux también se pueden utilizar con Windows:
Parámetro | Descripción |
---|---|
|
Aquí puedes determinar qué instancias se van a monitorizar. Una instancia se nombra por su identificador de sistema (SID). Se trata de una lista positiva, en la que se ignoran todas las instancias que no aparecen explícitamente. Este parámetro es muy útil si el número de instancias que se van a monitorizar es menor que el número de instancias que se van a ignorar. |
|
Como el parámetro |
El proceso se realiza para cada instancia en el orden que se muestra en la tabla anterior. Así, primero se comprueba si la instancia está en ONLY_SIDS
, y sólo después si se van a excluir determinadas secciones. Si la variable EXCLUDE_<SID>
se establece en ALL
, no se ejecutará ninguna sección.
A continuación se muestra un ejemplo en el que cada variable aparece una vez:
$ONLY_SIDS = @("MYINST1", "MYINST3")
$EXCLUDE_INST1 = "tablespaces rman"
$EXCLUDE_INST3 = "ALL"
Observa que ONLY_SIDS
es una lista, mientras que EXCLUDE_INST1
es una cadena que contiene secciones separadas por espacios.
Determinar los datos que hay que obtener
La especificación de las secciones que realmente se van a obtener se hace de la misma forma que en Linux, y lo que sigue es sólo un ejemplo para una configuración de Windows:
# DEFAULTS:
# $SYNC_SECTIONS = @("instance", "sessions", "logswitches", "undostat", "recovery_area", "processes", "recovery_status", "longactivesessions", "dataguard_stats", "performance", "locks")
# $ASYNC_SECTIONS = @("tablespaces", "rman", "jobs", "ts_quotas", "resumable")
# $SYNC_ASM_SECTIONS = @("instance", "processes")
# $ASYNC_ASM_SECTIONS = @("asm_diskgroup")
# $CACHE_MAXAGE = 600
$SYNC_ASM_SECTIONS = @("instance")
$ASYNC_SECTIONS = @("tablespaces", "jobs", "rman", "resumable")
$CACHE_MAXAGE = 300
$EXCLUDE_INST1 = "undostat locks"
$EXCLUDE_INST2 = "jobs'
![]() |
Si defines en el archivo de configuración qué secciones quieres recuperar y mediante qué método -también puedes transformar una sección asíncrona en una sección síncrona-, debes especificartodas las secciones que deben ejecutarse en el área correspondiente. |
Por ejemplo, si sólo quieres locks
de la consulta sincrónica, especifica toda la lista sincrónica y omite simplemente locks
:
# Just exclude 'locks' from sync sections:
$SYNC_SECTIONS = @("instance", "sessions", "logswitches", "undostat", "recovery_area", "processes", "recovery_status", "longactivesessions", "dataguard_stats", "performance")
Lo mismo ocurre con las otras tres variables en las que se determinan las secciones.
Derechos de acceso en la ejecución
Por motivos de seguridad, el plugin de agente mk_oracle.ps1
sólo ejecuta los binarios de Oracle como administrador si estos programas sólo pueden ser modificados por administradores. Los administradores en Windows son la cuenta LocalSystem y los miembros del grupo integrado Administrators
. Esto se aplica a los programas sqlplus.exe
, tnsping.exe
y -si están disponibles-crsctl.exe
. El plugin de agente mk_oracle.ps1
no ejecuta ninguno de estos programas si los usuarios sin privilegios tienen uno de los permisos Write
, Modify
o Full control
para el archivo. De esta forma se evita el riesgo de seguridad que supone que usuarios sin privilegios ejecuten programas como administrador.
![]() |
Puedes averiguar en qué versión de parche de Checkmk se hizo este cambio en Werk #15843. |
Si es necesario, modifica los derechos de acceso eliminando los permisos mencionados de los usuarios no administrativos para los programas. El plugin de agente te ayuda con el diagnóstico y comprueba si los usuarios no administrativos tienen acceso a los archivos mencionados y los muestra en la prueba de conexión. El procedimiento exacto para diagnosticar y corregir los derechos de acceso se encuentra en la Base de conocimientos de Checkmk.
Si no te es posible ajustar los permisos de los programas de Oracle de forma segura, puedes permitir que usuarios individuales y grupos ejecuten los programas:
# Oracle plugin will allow users and groups in the list to have write access to the Oracle binaries
$WINDOWS_SAFE_ENTRIES=@("NT AUTHORITY\Authenticated Users", "<Domain>\<User>")
Sólo si no hay otra forma de garantizar la monitorización de Oracle, puedes desactivar el check de derechos de acceso como última opción.
![]() |
Si desactivas el check de derechos de acceso, el plugin de agente dejará de ejecutarse de forma segura. |
# Oracle plugin will not check if the used binaries are write-protected for non-admin users
$SKIP_ORACLE_SECURITY_CHECK=1
Sin embargo, también existe otra forma de ejecutar el Plugin de agente, sin derechos de administrador. Puedes personalizar la ejecución del Plugin de agente y ejecutarlo bajo el grupo local de Windows Users
, por ejemplo. Para ello, edita el archivo de configuración check_mk.user.yml
del agente de Windows, por ejemplo, de esta forma
plugins:
enabled: yes
execution:
- pattern: $CUSTOM_PLUGINS_PATH$\mk_oracle.ps1
async: yes
group: Users
run: true
En las ediciones comerciales, puedes hacer que la Agent bakery cree estas entradas con la regla de agente Run plug-ins and local checks using non-system account.
4.5. Monitorización de bases de datos remotas
Actualmente no es posible monitorizar bases de datos remotas utilizando el plugin de agente de Windows. Por tanto, si quieres monitorizar bases de datos remotas, necesitas un host con un sistema operativo compatible tipo Unix.
5. Configuración con el Agent bakery
La configuración puede simplificarse enormemente en las ediciones comerciales con la Panadería de Agentes, porque se evitan los errores de sintaxis en los archivos de configuración, y las adaptaciones a entornos cambiantes pueden implementarse más fácilmente. La principal diferencia respecto a una configuración manual es que sólo tienes que trabajar en el host de Oracle en la línea de comandos si quieres hacer configuraciones especiales específicas de Oracle. Puedes realizar la configuración con la Panadería de Agentes para Linux, Solaris, AIX y Windows.
Sin embargo, no puedes configurar todas las funciones del plugin de agente con la Agent bakery, por ejemplo, si se trata de funciones que requieren una intervención importante y profundos conocimientos especializados. En consecuencia, las consultas SQL personalizadas no pueden configurarse en la Agent bakery.
A través de Setup > Agents > Windows, Linux, Solaris, AIX y el menú Agents > Agent rules, encontrarás la página con el conjunto de reglas Oracle databases (Linux, Solaris, AIX, Windows). Crea una nueva regla con Add rule. Aquí encontrarás todas las opciones disponibles para configurar el plugin de agente:

Muchas opciones te resultarán familiares de la configuración manual. Como se describe allí, hay opciones que no están disponibles para todos los sistemas operativos. El título de estas opciones muestra para qué sistemas operativos se pueden utilizar.
5.1. Configurar usuarios
En la configuración más sencilla para un sistema operativo tipo Unix, la regla será algo parecido a esto:

En el Agent bakery también tienes la opción de crear usuarios estándar y de crear excepciones para instancias específicas. Las opciones, separadas en el archivo de configuración con dos puntos (para Linux y compañía) o como entradas de la lista (para Windows), las encontrarás en Login Defaults como opciones individuales que luego puedes rellenar según necesites. Por supuesto, también puedes utilizar aquí el Monedero Oracle cambiando simplemente Authentication method por Use manually created Oracle password wallet.
La configuración para la Gestión Automática de Almacenamiento (ASM) se realiza de forma análoga mediante la opción Login for ASM, y las excepciones para instancias específicas se introducen en Login for selected databases, tal y como se describe en la configuración avanzada de usuario para Linux, Solaris, AIX y Windows.
5.2. Opciones avanzadas
La siguiente tabla enumera las opciones restantes del conjunto de reglas Oracle databases (Linux, Solaris, AIX, Windows), junto con una referencia a dónde encontrar una descripción de la opción:
Opción | Descripción |
---|---|
Host uses xinetd or systemd (Linux/AIX/Solaris only) |
Esta opción debe activarse para sistemas tipo Unix con |
Instances to monitor |
Esta opción resume varias opciones del archivo de configuración con las que puedes incluir o excluir instancias para Linux, Solaris, AIX o Windows. |
Add pre or postfix to TNSALIASes (Linux/AIX/Solaris only) |
Esta opción te permite ampliar el alias TNS globalmente o para una instancia concreta. |
Sections - data to collect |
En esta opción se enumeran todas las secciones disponibles, que pueden configurarse individualmente a nivel global, por lo que corresponden a las variables |
Exclude some sections on certain instances |
Si no quieres utilizar |
Cache age for background checks |
Especifica aquí cuánto tiempo deben permanecer válidas las secciones asíncronas. El valor por defecto es de 600 segundos (10 minutos). |
Sqlnet Send timeout |
Esta opción se añade al archivo |
Remote instances (Linux/AIX/Solaris only) |
Configura instancias remotas con esta opción. Contiene todos los elementos de la configuración que ya conoces. Para especificar el ID de la variable, a través de Unique ID puedes elegir entre varias opciones. Sólo tienes que asegurarte de que el ID es único dentro de la configuración. |
ORACLE_HOME to use for remote access (Linux/AIX/Solaris only) |
Aquí puedes determinar dónde encuentra el plugin de agente el programa |
TNS_ADMIN to use for sqlnet.ora and tnsnames.ora (Linux/AIX/Solaris only) |
Si los dos archivos se encuentran en un directorio distinto de |
sqlnet.ora permission group (Linux/AIX/Solaris only) |
Introduce aquí el grupo Linux del usuario sin privilegios propietario de los binarios Oracle para que este usuario pueda leer el archivo |
Oracle binaries permissions check (Windows only) |
Aquí puedes configurar el check de derechos de acceso para los binarios de Oracle, permitiendo que usuarios individuales, no administrativos, y grupos ejecuten los programas. Sólo debes desactivar el check si sabes lo que estás haciendo. Puedes encontrar más información sobre este tema en la sección Derechos de acceso en ejecución para Windows. |
6. Instancias en clúster
6.1. Bases de datos en espera
Oracle admite las denominadas bases de datos en espera, que pueden realizar tareas específicas, y que suelen ser simplemente copias de las bases de datos de producción o primarias. Estos conceptos de bases de datos también requieren mecanismos especiales de monitorización. Puedes obtener más información sobre estos mecanismos en las siguientes secciones.
Con Active Data Guard (ADG)
Una vez que hayas licenciado y activado ADG, no necesitas hacer ningún cambio en la configuración del plugin de agente, ya que puedes leer desde una instancia en espera en cualquier momento sin tener que interrumpir la sincronización con la instancia primaria.
Sin Guardia de Datos Activa (GD)
Si las instancias no tienen ADG, el usuario con el que se van a obtener los datos de monitorización de las instancias en espera necesita el rol SYSDBA
. Este permiso permite al usuario obtener al menos parte de los datos, aunque falle la instancia primaria y la instancia en el servidor de espera aún no se haya cambiado de MOUNTED
a OPEN
.
Asigna el permiso al usuario autorizado a recuperar los datos de las instancias.Importante: El funcionamiento puede diferir del ejemplo siguiente. Aquí el rol se asigna al usuario tal y como se creó en el ejemplo de configuración inicial:
sqlplus> grant sysdba to checkmk;
Para que el plugin de agente pueda consultar los datos en el servidor en espera en caso de error, crea el usuario en la instancia primaria y, a continuación, copia el archivo de contraseñas en el servidor en espera. Por último, en el archivo de configuración del Plugin, establece el rol del usuario en SYSDBA
:
# Syntax:
# DBUSER='USER:PASSWORD:ROLE:HOST:PORT:TNSALIAS'
DBUSER='checkmk:myPassword:sysdba'
Ten en cuenta que especificar un host, un puerto o un alias TNS es opcional, y puede omitirse. Además, el plugin de agente debe estar instalado, por supuesto, en el host de la instancia primaria, así como en los hosts de las instancias en espera.
Configurar los servicios del clúster
Por parte de Checkmk, es necesario -independientemente de si utilizas ADG o DG- personalizar los servicios y asignarlos a un host de clúster. Los correspondientes check plugin ya han sido preparados hasta el punto de que también pueden configurarse como servicios de clúster. Crea un host de clúster en Checkmk y añádele como nodos los hosts individuales de Oracle en los que se ejecutan las instancias primaria y en espera. A continuación, asigna los siguientes servicios a este host de clúster:
ORA .* RMAN Backup
ORA .* Job
ORA .* Tablespaces
De este modo, ya no tendrás que preocuparte de la instancia de la que proceden los datos, y habrás garantizado una monitorización sin fisuras de los servicios mencionados, incluso en caso de conmutación de la instancia primaria.
6.2. Clúster de Aplicaciones Reales (RAC)
Dado que en un RAC existe un almacenamiento central de los datos, en este caso basta con crear una sola vez el usuario para el plugin de agente. Sólo es necesario instalar y configurar el plugin de agente en cada nodo del clúster de Oracle.
Importante: Configura siempre tú mismo los nodos del clúster, y no consultes al listener de Oracle SCAN. Sólo así te asegurarás de que el acceso a través del plugin de agente funciona correctamente.
Configurar los servicios del clúster
También tiene sentido configurar los servicios del clúster para un RAC. Además de los servicios que asignes al host de clúster en un Data Guard (Activo), asigna también los siguientes servicios al host de clúster para garantizar una monitorización sin interrupciones en caso de conmutación:
ASM.* Diskgroup
ORA .* Recovery Area
7. Consultas SQL personalizadas (Custom SQLs)
7.1. ¿Por qué consultas SQL personalizadas?
Con su plugin de agente, Checkmk ya proporciona un gran número de consultas SQL con las que puedes monitorizar tus instancias de base de datos. Para que se adapten a la gama más amplia posible de requisitos técnicos y de contenido, se mantienen, por supuesto, de forma muy generalizada.
Para poder satisfacer los requisitos individuales de cada empresa para la monitorización de una base de datos concreta, Checkmk ofrece la posibilidad de crear tus propias consultas SQL personalizadas(SQL personalizadas para abreviar) y recuperarlas con el plugin de agente. Estas consultas SQL personalizadas se reconocen y monitorizan automáticamente como servicios propios en la interfaz web.
![]() |
Sólo es posible utilizar consultas SQL personalizadas en Linux, Solaris y AIX. Esta opción no está disponible en Windows. |
7.2. Consultas SQL personalizadas sencillas
Escribir consultas SQL
La forma más sencilla de conectar un SQL de este tipo es utilizar el complemento de comprobación Base de datos Oracle: Custom SQLs check plugin. Para ello, crea primero el archivo MyCustomSQL.sql
en el directorio de configuración del agente en el host en el que se va a ejecutar el SQL.
A continuación se muestra un archivo ficticio que ilustra la sintaxis:
/*Syntax help in comments. The first word is alwyas the key word and ends with a ":"*/
/*details:Text to display in the service detail output*/
prompt details: Some details for the service output;
/*perfdata:METRIKNAME=CURRENTVALUE;WARN;CRIT;MAX METRIKNAME=CURRENTVALUE2;WARN;CRIT;MAX*/
prompt perfdata:MyMetricName1=10;15;20;30 MyMetricName2=16;15;20;30;
prompt perfdata:MyMetricName3=21;15;20;30 MyMetricName4=15;15;20;30;
/*long:Text to display in the long output of the service*/
prompt long: Here comes some long output for the service;
prompt long: Here comes some more long output for the service;
/*exit:Status of the service as a number*/
prompt exit:2;
El ejemplo muestra, por un lado, que puedes definir cualquier número de sentencias en un archivo de este tipo. Por otro, la sintaxis es muy similar a la de un check local, especialmente en lo que respecta a las métricas. En detalle, esta sintaxis es mucho más potente en este caso, porque puedes generar una salida de varias líneas, que luego se procesa en el servidor Checkmk como un servicio. En principio, todas las líneas son opcionales y no es necesario rellenarlas.
Las palabras clave posibles son detalladas:
details
: Aquí puedes determinar lo que debe salir en el Summary del servicio generado. Esta línea se introduce con la palabra clave y dos puntos. El resto de la línea es la salida.perfdata
: Las métricas se introducen con esta palabra clave. Dentro de una línea, puedes crear cualquier número de métricas, cada una separada por un espacio. También puedes distribuir la salida de las métricas en varias líneas. Sólo tienes que empezar siempre con la palabra claveperfdata:
.long
: Si el servicio debe tener una salida larga para el campo Details, puedes especificarlo aquí. También puedes utilizar esta palabra clave varias veces para crear varias líneas en el campo Details.exit
Las asignaciones conocidas0
,1
,2
,3
están disponibles para los estados OK, WARN, CRIT, UNKNOWN.
![]() |
No tienes que definir manualmente la palabra clave |
Configurar el plugin de agente
Ahora que has definido tu primer SQL, muy sencillo, dáselo a conocer al plugin de agente mk_oracle
. Esto se hace mediante el conocido archivo de configuración, que puedes ampliar según convenga:
SQLS_SECTIONS="mycustomsection1"
mycustomsection1 () {
SQLS_SIDS="INST1"
SQLS_DIR="/etc/check_mk"
SQLS_SQL="MyCustomSQL.sql"
}
Con la primera opción (SQLS_SECTIONS
) determinas qué secciones individuales quieres que se ejecuten. Ten en cuenta que sección significa aquí una parte de la salida del plugin de agente, y no una parte de una instancia de base de datos. En el ejemplo, sólo hemos especificado una sección (mycustomsection1
) y la hemos descrito con más detalle directamente después. Cada sección es en realidad una pequeña función llamada por el plugin de agente.
En esta función puedes determinar más detalles y especificar para qué instancias (SQLS_SIDS
) se aplica esta sección. Además, también defines dónde se encuentra el archivo con las sentencias SQL (SQLS_DIR
), y el nombre de este archivo (SQLS_SQL
).
Esta sencilla configuración es suficiente para poder ver el resultado en Checkmk. Para ello, realiza un descubrimiento de servicios y activa el nuevo servicio. Después verás este nuevo servicio con los demás servicios en la vista general del host:

7.3. Opciones avanzadas
Las posibilidades de monitorización con consultas SQL personalizadas van, por supuesto, más allá del sencillo ejemplo mostrado anteriormente. A continuación encontrarás una Vista general de las variables disponibles que puedes utilizar en el archivo de configuración mk_oracle.cfg
. Para una descripción detallada, también puedes llamar al plugin de agente mk_oracle
con la opción --help
.
![]() |
Las variables que sólo pueden establecerse fuera o sólo dentro de una función de sección están marcadas en consecuencia. Todas las demás pueden definirse en ambas secciones. Si se establecen fuera de una sección, se aplicarán globalmente a todas las secciones. |
Variable | Descripción breve | Opcional |
---|---|---|
|
Las funciones de sección autodefinidas que ejecutará el plugin de agente. |
No |
|
Las instancias que deben ejecutar la(s) sección(es). |
No |
|
El nombre de la ruta del directorio en el que se almacenan los archivos con las consultas SQL personalizadas. |
No |
|
El archivo que contiene las sentencias SQL para una sección. |
No |
|
El nombre de la sección que evalúas con un propio check plugin para las consultas SQL personalizadas. |
Sí |
|
El separador de los elementos individuales en una línea de la salida, definido como un ID ASCII decimal. Esta variable sólo se puede utilizar junto con la variable |
Sí |
|
Especifica una parte del nombre del servicio generado. Por defecto, el nombre del servicio está compuesto por el SID y el nombre del archivo con las consultas SQL personalizadas. El valor de esta variable sustituye al nombre del archivo en el nombre del servicio. |
Sí |
|
Realiza la misma tarea que |
Sí |
|
Define un usuario individual para una sección. |
Sí |
|
Define la contraseña del usuario definido con |
Sí |
|
Sólo si el usuario definido con |
Sí |
|
Define un alias TNS individual para una sección. |
Sí |
7.4. Utilizar tus propios plugins de check
Si las posibilidades de la sintaxis descrita anteriormente no son suficientes, también puedes utilizar la variable SQLS_SECTION_NAME
para dar salida a tus propios nombres de sección para una o varias consultas SQL y definir tu propio separador con SQLS_SECTION_SEP
. Sin embargo, esto requiere que también hayas escrito un check plugin apropiado y lo hayas incluido en tu site Checkmk.
Si has escrito un plugin de comprobación de este tipo, tienes total libertad para evaluar la salida de las secciones autodefinidas del plugin de agente y puedes seguir tu propio camino. Como este método es el más completo, y también el más difícil, sólo se menciona aquí para completarlo. Supone que sabes cómo escribir un plugin de comprobación basado en agente e integrarlo en el site. Después, asignas las consultas SQL personalizadas con las variables a este plugin de comprobación.
8. Opciones de diagnóstico
En Linux, el diagnóstico se realiza llamando al plugin de agente mk_oracle
con varias opciones. Con mk_oracle --help
puedes mostrar un resumen de todas las opciones disponibles.
8.1. Prueba de conexiones
![]() |
La prueba de conexión que se describe a continuación también comprueba si se han establecido los derechos de acceso necesarios durante la ejecución en Linux o Windows. Si faltan derechos de acceso, éstos se muestran con sugerencias específicas para su rectificación. El procedimiento exacto para diagnosticar y corregir los derechos de acceso se puede encontrar en la Base de conocimientos de Checkmk. |
Linux, Solaris, AIX
Si tienes problemas para conectarte a una o varias instancias de un servidor Oracle, lo primero que puedes hacer es comprobar los parámetros básicos. Si inicias el plugin de agente con la opción -t
, se mostrarán los detalles de una conexión. Ten en cuenta que, previamente, hay que proporcionar al plugin de agente las rutas a su archivo de configuración y a los datos en caché del plugin. En la salida se han omitido las secciones ficticias para facilitar la lectura.
El siguiente ejemplo corresponde a un servidor Linux con systemd
, en el que el plugin de agente se ejecuta de forma asíncrona cada 60 segundos:
root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -t --no-spool
---login----------------------------------------------------------------
Operating System: Linux
ORACLE_HOME (oratab): /u01/app/oracle/product/11.2.0/xe
Logincheck to Instance: XE
Version: 11.2
Login ok User: checkmk on ORA-SRV01 Instance XE
SYNC_SECTIONS: instance dataguard_stats processes longactivesessions sessions recovery_status undostat logswitches recovery_area performance
ASYNC_SECTIONS: tablespaces rman jobs ts_quotas resumable
------------------------------------------------------------------------
En un servidor Linux con xinetd
, llama en su lugar a mk_oracle
para la prueba de conexión de la siguiente forma:
root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -t
Como es más probable que esta llamada se realice en caso de error, también recibirás más información: tanto la cadena de conexión que se utilizó para la conexión como los 100 primeros caracteres del mensaje de error que se devolvió durante el intento de conexión. Con ayuda de esta información, puedes identificar rápidamente problemas sencillos de configuración y corregirlos en consecuencia.
Windows
El plugin de agente no acepta ningún parámetro en Windows. Por eso, para probar la conexión aquí, limita temporalmente las secciones a recuperar a instance
y activa la opción DEBUG
:
# Syntax:
# $DBUSER = @("USERNAME", "PASSWORD")
$DBUSER = @("checkmk", "myPassword")
SYNC_SECTIONS = @("instance")
ASYNC_SECTIONS = @("")
DEBUG = 1
A continuación, ejecuta manualmente el plugin de agente. De nuevo, obtendrás información sobre cómo el plugin intenta acceder a las instancias. La salida puede ser, por ejemplo, la siguiente:
PS C:\ProgramData\checkmk\agent\plugins\> .\mk_oracle.ps1
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of DBVERSION software = xxx112020xxx
<<<oracle_instances>>>
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of inst_name = xxxXExxx
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of DBVERSION database = xxx112020xxx
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of the_section = sql_instance
2020-08-23T12:48:20.3930944+02:00 DEBUG:now calling multiple SQL
2020-08-23T12:48:20.3930944+02:00 DEBUG:value of sql_connect in dbuser = checkmk/myPassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=XE))) as sysdba
<<<oracle_instance>>>
XE|FAILURE|...
8.2. Registro
Linux, Solaris, AIX
Si no se puede encontrar el error comprobando una simple conexión, el siguiente paso es crear un archivo de registro, que registre todos los pasos del plugin de agente. Tampoco olvides aquí las variables del entorno necesarias. En el siguiente ejemplo, también se ha omitido la salida de las secciones para mejorar la legibilidad.
Aquí está la llamada para un servidor Linux con systemd
, en el que el plugin de agente se ejecuta de forma asíncrona cada 60 segundos:
root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -l --no-spool
Start logging to file: /var/lib/check_mk_agent/log/mk_oracle.log
Aquí está la llamada de mk_oracle
para el registro en un servidor Linux con xinetd
:
root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -l
Puedes utilizar el archivo de registro generado para identificar con gran precisión en qué línea del script se ha producido el problema.
Windows
El registro en Windows funciona de forma similar a la prueba de conexión descrita anteriormente. Si la conexión en sí es estable, puedes volver a añadir las secciones reales al archivo de configuración y obtener así una salida de registro completa.
8.3. Depuración
Linux, Solaris, AIX
Si no puedes llegar al problema, ni siquiera con la ayuda del registro, como última opción el plugin de agente proporciona la salida completa de todos los pasos para el análisis de errores. Esta salida es, por tanto, el método más completo, y sin duda el más difícil de leer, para llegar a la causa de un problema, por lo que sólo debe utilizarse como último recurso.
A continuación se muestra un ejemplo de depuración en un servidor Linux con systemd
, en el que el plugin de agente se ejecuta de forma asíncrona cada 60 segundos:
root@linux# export MK_CONFDIR="/etc/check_mk/"; export MK_VARDIR="/var/lib/check_mk_agent"
root@linux# /usr/lib/check_mk_agent/plugins/60/mk_oracle -d --no-spool
He aquí la llamada de mk_oracle
para depurar en un servidor Linux con xinetd
:
root@linux# /usr/lib/check_mk_agent/plugins/mk_oracle -d
Importante: En esta salida no se enmascaran los datos sensibles, como las contraseñas, por lo que todo es legible en texto plano.
Windows
En Windows existe una funcionalidad similar. Sin embargo, como no puedes pasar ningún argumento al plugin de agente, tendrás que activar el rastreo manualmente:
PS C:\ProgramData\checkmk\agent\plugins\> Set-PSDebug -Trace 1
PS C:\ProgramData\checkmk\agent\plugins\> .\mk_oracle.ps1
8.4. Mensajes de error en los archivos de registro de Oracle
El usuario de la base de datos para la monitorización no suele necesitar el rol SYSDBA
. Sin embargo, ten en cuenta que el plugin de agente mk_oracle
puede generar mensajes de error (no relevantes para la monitorización) con bases de datos multi-tenant que pueden no escribirse en los archivos de registro de la base de datos Oracle debido a la falta del privilegio SYSDBA
. Esto puede dar lugar, por ejemplo, a mensajes de error de Oracle del tipo ORA-01031: insufficient privileges
en un archivo de registro de alerta.
9. Ficheros y directorios
9.1. En el host Oracle bajo Linux, Solaris, AIX
Ruta del archivo | Descripción |
---|---|
|
El agente Checkmk que recoge todos los datos sobre el host. |
|
El plugin de agente de Oracle en el directorio habitual para los plugins de agente. Ten en cuenta que el nombre de la ruta en AIX es ligeramente distinto: |
|
El archivo de configuración del plugin de agente. De nuevo, AIX es diferente: |
|
El archivo de configuración necesario para la Cartera Oracle. |
|
El archivo de configuración que contiene los alias TNS. Los archivos de ejemplo también se encuentran en la instalación de Oracle, pero como la ruta difiere de una instalación a otra, no se puede especificar de forma estandarizada. |
9.2. En el host de Oracle bajo Windows
Ruta del archivo | Descripción |
---|---|
|
El agente Checkmk que recoge todos los datos sobre el host. |
|
El Plugin de agente Oracle en el directorio habitual para plugins de agente. |
|
El archivo de configuración del Plugin de agente. |
|
El archivo de configuración necesario para la Cartera Oracle. |
|
El archivo de configuración que contiene los alias TNS. Los archivos de ejemplo también se encuentran en la instalación de Oracle, pero como la ruta difiere de una instalación a otra, no se puede especificar de forma estandarizada. |
9.3. En el servidor Checkmk
Ruta del archivo | Descripción |
---|---|
|
Plugin de agente para sistemas tipo Unix, que obtiene los datos en el host de Oracle. |
|
Este plugin de agente para sistemas Unix proporciona datos a un gestor de clústeres de Oracle. |
|
Plugin de agente para Windows, que obtiene los datos en el host de Oracle. |
|
Aquí tienes ejemplos de archivos de configuración para sistemas tipo Unix en los archivos |
|
Un archivo de configuración de ejemplo para Windows. |