Panel de monitorización
OmniDB cuenta con una función muy útil llamada Panel de monitorización. Como una imagen vale más que mil palabras, eche un vistazo:

Como puede ver, se trata de un nuevo tipo de pestaña interna que muestra gráficos y tablas. Esta pestaña interna Monitoring se abre automáticamente al expandir el nodo raíz del árbol (el nodo PostgreSQL). Puede dejarla abierta o cerrarla en cualquier momento. Para volver a abrirla, haga clic con el botón derecho en el nodo raíz y seleccione Dashboard.

El panel está formado por prácticos rectángulos de información llamados Unidades de monitorización. A continuación se muestra un ejemplo de unidad de monitorización y sus elementos de interfaz:

- 1: título de la unidad de monitorización;
- 2: actualiza la unidad de monitorización. Según el tipo, al hacer clic en este botón se actualizará toda el área de dibujo o simplemente se hará que el gráfico obtenga un nuevo conjunto de valores;
- 3: pausa la unidad de monitorización;
- 4: intervalo en segundos para la actualización automática;
- 5: elimina la unidad de monitorización del panel de monitorización;
- 6: área de dibujo, que varía según el tipo de la unidad de monitorización.
Tipos de unidades de monitorización
Existen 3 tipos de unidades de monitorización:
- Tabla (Grid): el tipo más simple; simplemente ejecuta una consulta de vez en cuando y muestra los resultados en una tabla de datos.

- Gráfico (Chart): cada vez que se actualiza, dibuja un gráfico completo nuevo. El conjunto anterior de valores se pierde. Resulta especialmente útil para gráficos circulares, aunque también pueden usarse otros tipos de gráfico.

- Serie temporal (Timeseries): probablemente el tipo de unidad de monitorización más útil. Es un gráfico que añade un nuevo conjunto de valores cada vez que se actualiza. Los gráficos de líneas o de barras son los que mejor se adaptan a este tipo. El componente conserva en el cliente los últimos 100 conjuntos de valores para que el usuario pueda consultarlos.

Mostrar y ocultar unidades en el panel
Si hace clic en el botón Refresh All, se actualizarán de una sola vez todas las unidades de monitorización. También puede eliminar las unidades que no desee haciendo clic en el botón Remove. A continuación vamos a eliminar todas las unidades del panel para dejarlo vacío:

Las 17 unidades incluidas de serie en OmniDB (métricas de servidor de PostgreSQL y MySQL: tasa de transacciones, backends, producción de WAL, tamaño de bases de datos/tablas, etc.) se ejecutan como código nativo y no requieren instalar nada adicional en la base de datos.

Ahora que el panel está vacío, vamos a añadir algunas unidades. Haga clic en el botón Manage Units.

Haga clic en la acción verde para añadir cualquiera de las unidades integradas, por ejemplo Backends y Database Size. Espere unos segundos y obtendrá un panel como este:

De la misma manera, puede añadir y eliminar cualquier unidad para personalizar el panel como desee.
Escritura de unidades de monitorización personalizadas
OmniDB le permite escribir sus propias unidades, o personalizar las existentes, mediante una única consulta SQL: la misma conexión y los mismos permisos que ya tiene su editor SQL, solo que ejecutándose según un temporizador en lugar de bajo demanda. No es necesario aprender ningún lenguaje de scripting ni entorno aislado (sandbox) independiente.
Nota: dado que la consulta se vuelve a ejecutar sin supervisión en cada
intervalo de actualización, solo se admiten consultas SELECT (o
WITH ... SELECT): una sentencia destructiva pegada por error se rechaza
directamente en lugar de ejecutarse en silencio según el temporizador.
Para crear una nueva unidad de monitorización, haga clic en el botón Manage Units del panel y, a continuación, en el botón New Unit. Se abrirá un nuevo tipo de pestaña interna con un campo Name, una lista desplegable Type, un campo Refresh Interval y un único editor de SQL Query (además de una lista desplegable Chart Type, que solo se muestra para unidades de tipo Chart).
La forma de la consulta depende del tipo de unidad:
-
Grid: sin forma particular; las columnas y filas que devuelva la consulta pasan a formar la tabla directamente. Por ejemplo:
SELECT * FROM pg_stat_activity -
Chart: una fila por categoría; la primera columna es la etiqueta y las columnas restantes son cada una una serie (el nombre de la columna pasa a ser el nombre de la serie). Elija el Chart Type (barras, circular, anillo o líneas) en la lista desplegable situada junto al selector Type. Por ejemplo, un gráfico circular con el tamaño de las bases de datos:
SELECT datname, round(pg_catalog.pg_database_size(datname) / 1048576.0, 2) AS size_mb FROM pg_catalog.pg_database WHERE datname NOT IN ('template0', 'template1') -
Timeseries: exactamente una fila; cada columna numérica se convierte en una serie de líneas que se va ampliando continuamente, actualizada según el intervalo configurado. Por ejemplo, para seguir el tamaño de la base de datos a lo largo del tiempo:
SELECT round(sum(pg_catalog.pg_database_size(datname)) / 1048576.0, 2) AS total_size_mb FROM pg_catalog.pg_database WHERE NOT datistemplate
Escriba (o pegue) la consulta en el editor de SQL Query y, a continuación, haga clic en el botón Test para verla representada en el área de vista previa; puede probarla tantas veces como desee. Una vez que esté conforme con ella, asigne un nombre a la unidad, establezca un intervalo de actualización y pulse Save. Cierre la pestaña de edición y la nueva unidad aparecerá en la lista de unidades, lista para añadirse al panel (acción verde) igual que una unidad integrada.