2009-09-08 9 views
1

J'écris une application fond/serveur C++ pour Linux/Windows. Existe-t-il un service standard de contrôle/profilage/reporting que je devrais utiliser pour exposer le statut actuel de mon application de manière standardisée?C++: Modèle de statut et de contrôle

Si ce n'est pas le cas, quel est le bon modèle (ou bibliothèque) à utiliser pour exposer ce type de données et de contrôle?

Plus précisément, je veux exposer les données suivantes:

  1. "utilisation" relative des "composants" (où l'utilisation/composants est défini par l'utilisateur)
  2. Toute erreur/défauts
  3. mémoire, CPU, d'autres données de processus misc
  4. méthode/classe profil d'exécution
    1. temps moyen passé dans la méthode/classe
    2. total appelle

Je veux exposer les mécanismes de contrôle suivants

  1. Démarrer, arrêter, redémarrer, recharger X ... (contrôle commandesque)
  2. paramètre de réglage
+0

Exposer à quoi? L'application sonne comme un démon ou un service, mais que prévoyez-vous consommer la sortie que vous voulez exposer? Une application client spécifique? Scripts? Le bus système de sorte que n'importe quel programme peut réagir aux événements? – Duck

+0

Une application externe consommera les événements. – jameszhao00

Répondre

2

De nombreux systèmes Linux ont maintenant dbus pour ce genre de choses. Les démons fonctionnent et fournissent des informations et une interface de contrôle sur le bus système. Les applications de bureau communiquent entre elles via le bus de session.

Par exemple, le bluez bluetoothd daemon utilise dbus pour fournir des informations sur les périphériques et les services Bluetooth, ainsi qu'une interface de contrôle pour contrôler ces périphériques.

NetworkManager utilise également dbus à des fins d'état et de contrôle. Cependant, le démarrage et l'arrêt sont des fonctions qui sont généralement en dehors de l'application elle-même. Peut-être que l'architecture correcte serait pour un cadre de supervision de service (upstart, runit ...) pour fournir une interface dbus pour contrôler les services. Cela dit, dbus lui-même peut être utilisé pour démarrer des services à la demande, mais il n'est pas vraiment destiné à la supervision de service. Voir this pour plus.

Edit: Je viens de lire plus à propos de l'upstart, et il a un dbus interface for job control. Il est sujet à changement cependant.

Questions connexes