Cette page décrit Calíope 1.5, la version que je construis en ce moment. La 1.4 est sur l'App Store pour Mac, iPad, iPhone, Apple Watch, Apple TV et Apple Vision Pro. Le changelog indique dans quelle version chaque fonction est arrivée.

Ajoute un bouton « Ouvrir dans Calíope » à chaque sujet. Ne fonctionne qu'avec l'app installée.

Surveillance du serveur

Moniteur de santé des serveurs

Collecte et visualise des métriques historiques d'un ou plusieurs de vos serveurs : QPS, threads, taux de succès du cache, réseau, DML et plus encore. Les données sont stockées sur un serveur centralisé que vous choisissez et restent disponibles même après la fermeture de l'application.

Où le trouver : Espace de travail › Outils › Santé

Le Moniteur de santé vous permet de suivre les performances de plusieurs de vos serveurs dans le temps. Contrairement au Tableau de bord (qui affiche des métriques en temps réel du serveur actuellement connecté), le Moniteur de santé stocke des instantanés historiques dans un magasin centralisé, accessibles depuis n'importe quelle session et partagés entre les membres de l'équipe.

Architecture :
- Serveur de stockage — un serveur où Calíope crée le magasin caliope_monitoring avec ses tables d'instantanés. Sur MySQL, MariaDB et SQL Server c'est une base de données ; sur PostgreSQL c'est un schéma à l'intérieur de la base que vise le profil, donc deux profils du même serveur visant des bases différentes sont deux magasins différents. Il doit être accessible à tous les utilisateurs souhaitant consulter l'historique.
- Serveurs surveillés — les serveurs dont les métriques sont collectées. Ils peuvent être différents du serveur de stockage.
- Moteur de surveillance — s'exécute en arrière-plan dès le lancement de l'application ; l'onglet n'a pas besoin d'être ouvert pour que la surveillance fonctionne.

Configuration initiale :
1. Ouvrez l'onglet Moniteur de santé depuis la barre de navigation du workspace (icône de cœur).
2. Appuyez sur Configuration du monitoring —l'icône engrenage (⚙) dès qu'il y a quelque chose à afficher— pour ouvrir les paramètres.
3. Activez Activer le monitoring en haut du panneau. Vous pouvez le désactiver à tout moment pour arrêter complètement la collecte de métriques sans perdre votre configuration.
4. Sous Serveur de stockage, sélectionnez un profil de connexion existant et appuyez sur Enregistrer et provisionner. Calíope crée automatiquement le magasin caliope_monitoring et toutes les tables nécessaires. L'utilisateur doit disposer du privilège CREATE sur le serveur sélectionné.
5. Sous Serveurs surveillés, appuyez sur + pour ajouter chaque serveur que vous souhaitez surveiller. Pour chaque serveur, vous pouvez définir :
- Alias — un nom convivial pour l'identifier dans les graphiques.
- Intervalle — fréquence de collecte : 15 s, 30 s, 1 min (défaut), 5 min, 15 min, 30 min ou 1 heure.
- Actif — commutateur pour mettre en pause la surveillance d'un serveur sans le supprimer.
6. Sous Rétention des données, choisissez combien de jours conserver les données (7, 14, 30, 60, 90 ou 180 jours). L'option « Sans limite » conserve toutes les données indéfiniment.
7. Fermez les paramètres. Le moteur démarre automatiquement si la surveillance est activée.

Fonctionnement en arrière-plan :
La surveillance continue tant que l'application est ouverte, quel que soit l'onglet actif. Si vous fermez et rouvrez l'application, le moteur redémarre automatiquement au lancement.

Visualisation :
- Sélectionnez le serveur dans le sélecteur de la barre supérieure pour afficher ses métriques.
- Choisissez la plage temporelle, de Dernière heure à 30 derniers jours.
- L'état du moteur —un point vert, jaune ou rouge avec son étiquette : En cours, Démarrage…, Nouvelle tentative, Pas de stockage…— indique si la surveillance est active, en cours de démarrage ou sans accès au serveur de stockage. Un triangle orange à côté signifie que la dernière interrogation du serveur choisi a échoué, et son info-bulle dit pourquoi.
- Le bouton ↻ recharge manuellement les données depuis le serveur de stockage.
- Le bouton ⏱ (horloge avec flèche) active l'actualisation automatique toutes les 30 secondes : les graphiques se rechargent automatiquement sans avoir à appuyer sur ↻. Sur macOS, l'étiquette 30 s apparaît à côté de l'icône lorsqu'elle est active. Désactivez-la si vous souhaitez une vue statique pour inspecter les données sans qu'elles changent.

Organiser les graphiques :
- Le bouton à curseurs (Personnaliser la disposition des graphiques de santé) place deux flèches et un œil sur chaque graphique. Les flèches le déplacent d'une place —vous pouvez aussi le faire glisser—, l'œil le masque, et les graphiques masqués attendent en bas, sous Graphiques masqués, jusqu'à ce que vous cliquiez dessus.
- Le bouton ↺ (Réinitialiser la disposition) remet chaque graphique à sa place par défaut, après confirmation.
- La coche termine. La disposition est mémorisée et, avec la synchronisation iCloud activée, suit sur vos autres appareils.

Disponible sur macOS, iPad et iPhone.

Mots-clés : moniteur de santé, health monitor, surveillance, métriques, historique, instantanés, stockage, caliope_monitoring, provisionner, intervalle, rétention, arrière-plan, background, serveur surveillé, qps, cache, innodb, activer, désactiver, actualisation auto, 30 secondes

Métriques du moniteur de santé

Description de chaque graphique : threads connectés, QPS, taux de succès du cache, processus actifs, réseau (octets/s) et DML par seconde.

Où le trouver : Espace de travail › Outils › Santé

Le moniteur affiche six graphiques de séries temporelles : les quatre à valeur unique tracent une ligne sur une zone de remplissage, et Réseau et DML tracent une ligne par série. Vous pouvez appuyer ou cliquer sur n'importe quel point du graphique pour voir la valeur exacte à cet instant.

Threads connectés
Nombre de connexions ouvertes à cet instant. Une valeur proche de la limite max_connections indique un risque de saturation.

QPS — Requêtes par seconde
Taux de requêtes exécutées par seconde, calculé comme la différence de Queries entre des instantanés consécutifs divisée par l'intervalle. Reflète la charge générale du serveur.

Taux de succès du cache (%)
Pourcentage de demandes de lecture servies depuis le cache du serveur sans accéder au disque. Calculé comme :

(1 − Δ lectures disque / Δ demandes de lecture) × 100

Chaque moteur publie ces deux compteurs sous ses propres noms, et un serveur qui n'en publie aucun laisse le graphique vide.
Une valeur maintenue en dessous de 95 % indique que le cache est insuffisant pour la charge de travail et devrait être augmenté.

Processus actifs
Nombre d'instructions en cours d'exécution à cet instant : les threads qui exécutent une requête (Query ou Execute dans SHOW PROCESSLIST ; sur PostgreSQL, les sessions à l'état active ; sur SQL Server, les sessions utilisateur avec une requête en cours). Les connexions inactives, les threads de réplication et les démons du serveur lui-même ne comptent pas. Une valeur élevée et persistante suggère des requêtes lentes ou des verrous.

Réseau (octets/s)
Trafic réseau vers et depuis le serveur :
- RX — octets reçus par seconde (Bytes_received).
- TX — octets envoyés par seconde (Bytes_sent).
Utile pour détecter les requêtes qui transfèrent des volumes de données anormalement importants.

DML/s — Instructions de modification de données
Taux d'instructions DML par seconde, ventilé en :
- SELECT — lectures.
- INSERT — insertions.
- UPDATE — mises à jour.
- DELETE — suppressions.
Une augmentation soudaine des INSERT/UPDATE/DELETE peut indiquer des processus de traitement par lots ou ETL actifs.

Interprétation générale :
- Les graphiques affichent des valeurs calculées à partir des compteurs cumulatifs du serveur, représentant donc des taux par seconde et non des totaux absolus.
- Tous les moteurs ne publient pas tous les compteurs. Ce qu'un serveur ne mesure pas est stocké vide, et son graphique indique Ce serveur ne le mesure pas : PostgreSQL, par exemple, ne compte pas le trafic réseau et ne ventile pas les instructions par verbe, et son QPS compte des transactions plutôt que des instructions. SQL Server ne compte ni les octets réseau ni les lignes, ne ventile pas non plus les instructions par verbe, et son QPS compte des lots.
- Les intervalles d'échantillonnage courts (15 s, 30 s) produisent des graphiques plus détaillés mais génèrent davantage de données sur le serveur de stockage.
- La rétention configurable (voir Moniteur de santé des serveurs) contrôle la période visible dans la plage 30 derniers jours.

Mots-clés : threads connectés, threads_connected, qps, requêtes par seconde, taux de succès du cache, taux de succès innodb, innodb hit rate, pool de tampons, buffer pool, processus actifs, processlist, bytes_received, bytes_sent, com_select, com_insert, com_update, com_delete, dml, réseau, throughput, série temporelle, graphique, métriques

Configurer l'historique du Moniteur de santé

Comment activer le monitoring, choisir le serveur de stockage, ajouter des serveurs surveillés et régler la rétention.

Où le trouver : Moniteur de santé › Configuration du monitoring

Le Moniteur de santé de Calíope conserve un historique de métriques échantillonnées périodiquement sur vos serveurs. Cet historique vit dans un schéma dédié, caliope_monitoring, hébergé sur un serveur que vous choisissez — pas dans l'application.

Ouvrir la fenêtre de configuration
- Le bouton ⚙︎ de la barre supérieure du Moniteur de santé, sur macOS, iPad et iPhone. Tant que rien n'est configuré, la barre et l'écran vide l'affichent comme Configuration du monitoring.
- Chaque changement est enregistré aussitôt ; Fermer ne fait que fermer la fenêtre.

1. Activer le monitoring
- Interrupteur en tête du dialogue. Lorsqu'il est activé, MonitoringEngine démarre en arrière-plan ; lorsqu'il est désactivé, il s'arrête.

2. Serveur de stockage
- Choisissez, dans le sélecteur groupé, lequel de vos profils hébergera le schéma caliope_monitoring.
- Ce peut être le même serveur que vous surveillez ou un serveur dédié (recommandé en production).
- Touchez Enregistrer et provisionner pour que Calíope crée le magasin et les tables requises — l'opération est idempotente (utilise CREATE … IF NOT EXISTS), vous pouvez la relancer sans risque si vous avez supprimé quelque chose manuellement.
- État visuel : Schéma prêt en vert lorsque tout fonctionne, ou étiquette rouge avec l'erreur si la connexion échoue.

Tables créées
- caliope_monitoring.monitoring_config — version du schéma, rétention et horodatage du dernier nettoyage.
- caliope_monitoring.monitored_servers — serveurs enregistrés comme surveillés.
- caliope_monitoring.server_snapshots — instantanés temporels (uptime, threads, cache, instructions par verbe, trafic, processus actifs, requête la plus longue, etc.).
- caliope_monitoring.collection_errors — erreurs de collecte, utiles au diagnostic.

3. Serveurs surveillés
- Bouton + pour en ajouter un. Sélectionnez le profil, donnez-lui un alias lisible et choisissez l'intervalle d'échantillonnage (15 s, 30 s, 1 min, 5 min, etc.).
- Chaque ligne dispose d'une case pour l'activer ou le désactiver sans supprimer la configuration, de son intervalle, d'un bouton avec les seuils de santé propres à ce serveur, et d'un bouton − pour le retirer.
- Le serveur de stockage ne peut pas être ajouté comme serveur surveillé de lui-même : la liste ne le propose pas.
- Sous la liste, les Seuils de santé décident quand un serveur passe en avertissement ou en critique sur le tableau de bord Calíope de votre Apple TV.

4. Rétention des données
- Menu déroulant avec des préréglages (7, 14, 30, 60, 90 et 180 jours, et Sans limite).
- Sans limite ne supprime jamais rien et affiche un avertissement orange — n'oubliez pas que server_snapshots grandit à chaque tick.
- Le nettoyage s'exécute à chaque démarrage du moteur et une fois par jour tant que l'app est ouverte.

Notes de sécurité
- Toutes les connexions au serveur de stockage utilisent les mêmes identifiants enregistrés dans le Trousseau pour ce profil (synchronisation Trousseau optionnelle).
- Si vous supprimez l'app ou touchez Effacer toutes mes données, l'app cesse d'écrire ; les tables caliope_monitoring.* demeurent sur le serveur jusqu'à ce que vous les supprimiez manuellement (DROP DATABASE caliope_monitoring;).

Mots-clés : monitoring, moniteur de santé, caliope_monitoring, provisionner, serveur de stockage, storage server, rétention, snapshot, MonitoringEngine, intervalle, polling, monitored_servers, server_snapshots, config