Tableau de bord de supervision
OmniDB dispose d’une fonctionnalité très pratique appelée tableau de bord de supervision (Monitoring Dashboard). Comme une image vaut mille mots, jetez-y un œil :

Comme vous pouvez le voir, il s’agit d’un nouveau type d’onglet interne affichant des graphiques et des grilles. Cet onglet interne Monitoring (Supervision) s’ouvre automatiquement dès que vous développez le nœud racine de l’arborescence (le nœud PostgreSQL). Vous pouvez le laisser ouvert ou le fermer à tout moment. Pour le rouvrir, faites un clic droit sur le nœud racine et cliquez sur Dashboard (Tableau de bord).

Le tableau de bord est composé de rectangles d’informations pratiques appelés unités de supervision (Monitoring Units). Voici un exemple d’unité de supervision et les éléments de son interface :

- 1 : titre de l’unité de supervision ;
- 2 : actualise l’unité de supervision. Selon le type, cliquer sur ce bouton actualisera soit l’ensemble de la zone de dessin, soit fera simplement acquérir au graphique un nouveau jeu de valeurs ;
- 3 : met en pause l’unité de supervision ;
- 4 : intervalle en secondes pour l’actualisation automatique ;
- 5 : retire l’unité de supervision du tableau de bord ;
- 6 : zone de dessin, qui diffère selon le type de l’unité de supervision.
Types d’unités de supervision
Il existe 3 types d’unités de supervision :
- Grid (Grille) : le type le plus simple, il exécute simplement une requête à intervalles réguliers et affiche les résultats dans une grille de données.

- Chart (Graphique) : à chaque actualisation, il redessine un graphique complet. L’ancien jeu de valeurs est perdu. C’est particulièrement utile pour les graphiques circulaires, mais d’autres types de graphiques peuvent aussi être utilisés.

- Timeseries (Série temporelle) : c’est sans doute le type d’unité de supervision le plus utile. Il s’agit d’un graphique qui ajoute un nouveau jeu de valeurs à chaque actualisation. Les graphiques en lignes ou en barres conviennent le mieux à ce type. Les 100 derniers jeux de valeurs sont conservés côté client par le composant afin d’être consultés par l’utilisateur.

Afficher et masquer les unités du tableau de bord
Si vous cliquez sur le bouton Refresh All (Tout actualiser), toutes les unités de supervision seront actualisées en une seule fois. Vous pouvez également retirer les unités de supervision indésirables en cliquant sur le bouton Remove (Retirer). Retirons dès à présent toutes les unités du tableau de bord, pour le vider entièrement :

Les 17 unités livrées en standard avec OmniDB (métriques de serveur PostgreSQL et MySQL — taux de transactions, processus serveur, production de WAL, taille des bases de données/tables, etc.) s’exécutent en code natif et ne nécessitent rien de supplémentaire à installer dans la base de données.

Maintenant que notre tableau de bord est vide, ajoutons quelques unités. Cliquez sur le bouton Manage Units (Gérer les unités).

Cliquez sur l’action verte pour ajouter l’une des unités intégrées — par exemple Backends (Processus serveur) et Database Size (Taille de la base de données). Attendez quelques secondes et vous obtiendrez un tableau de bord comme celui-ci :

De la même manière, vous pouvez ajouter et retirer n’importe quelle unité pour personnaliser le tableau de bord comme vous le souhaitez.
Écrire des unités de supervision personnalisées
OmniDB vous permet d’écrire vos propres unités, ou de personnaliser celles existantes, en écrivant une simple requête SQL — la même connexion et les mêmes permissions que celles déjà utilisées par votre éditeur SQL, mais s’exécutant sur une base périodique plutôt qu’à la demande. Il n’y a pas de langage de script ni de bac à sable séparé à apprendre.
Remarque : comme la requête se réexécute sans surveillance à un intervalle d’actualisation
donné, seules les requêtes SELECT (ou WITH ... SELECT) sont acceptées — une instruction
destructrice collée par erreur est rejetée d’emblée plutôt que de s’exécuter silencieusement à intervalles
réguliers.
Pour créer une nouvelle unité de supervision, cliquez sur le bouton Manage Units dans le tableau de bord, puis cliquez sur le bouton New Unit (Nouvelle unité). Un nouveau type d’onglet interne s’ouvre, avec un nom, une liste déroulante Type, un intervalle d’actualisation, et un unique éditeur de requête SQL (plus une liste déroulante Chart Type, affichée uniquement pour les unités de type Chart).
La forme de la requête dépend du Type de l’unité :
-
Grid : aucune forme particulière — quelles que soient les colonnes et lignes renvoyées par la requête, elles deviennent directement la grille. Par exemple :
SELECT * FROM pg_stat_activity -
Chart : une ligne par catégorie — la première colonne est l’étiquette, la ou les colonnes restantes forment chacune une série (le nom de la colonne devient le nom de la série). Choisissez le Chart Type (barres, camembert, anneau ou ligne) dans la liste déroulante à côté du sélecteur de Type. Par exemple, un graphique circulaire de la taille des bases de données :
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 : exactement une ligne — chaque colonne numérique devient une série en ligne alimentée en continu, actualisée selon l’intervalle configuré. Par exemple, pour suivre la taille de la base de données au fil du temps :
SELECT round(sum(pg_catalog.pg_database_size(datname)) / 1048576.0, 2) AS total_size_mb FROM pg_catalog.pg_database WHERE NOT datistemplate
Écrivez (ou collez) la requête dans l’éditeur de requête SQL, puis cliquez sur le bouton Test pour la voir s’afficher dans la zone d’aperçu — vous pouvez la tester autant de fois que vous le souhaitez. Une fois satisfait du résultat, donnez un nom à l’unité, définissez un intervalle d’actualisation, puis appuyez sur Save (Enregistrer). Fermez l’onglet d’édition et la nouvelle unité apparaît dans la liste des unités, prête à être ajoutée au tableau de bord (action verte) comme une unité intégrée.