Skip to content

Cywise et Performa

Il est possible de mettre en place l'application Performa pour un utilisateur de Cywise.

Cela permet de faire remonter les métriques des serveurs vers ce Performa.

Déploiement d'un Performa

Nous avons dupliqué le code de Performa dans notre repo Cywise et dans le sous-dossier performa. Cela nous a permis de modifier la configuration pour les groupes et pour Windows.

Pour déployer un nouveau Performa, les étapes sont :

  • générer un sous-domaine composé de 3 groupes de 4 chiffres et lettres minuscules séparés par des tirets (Ex : z6br-ewgz-7v4r)
  • générer une clé secrête composée, au minimum, de 24 caractères alphanumériques (Ex : A8z6QbfYNs8mZCXCHYjqBiAd)
  • configurer le domaine dans Gandi
  • modifier performa/towerify/config.yaml pour ajouter un environnement pour le sous-domaine
    config:
      envs:
        z6br-ewgz-7v4r:
          domain: z6br-ewgz-7v4r.cywise.io
    
  • ajouter les secrets pour cet environnement
    towerify secrets set --env z6br-ewgz-7v4r PERFORMA_BASE_APP_URL=https://z6br-ewgz-7v4r.cywise.io
    towerify secrets set --env z6br-ewgz-7v4r PERFORMA_EXTERNAL_USER_API=https://app.cywise.io/performa/user/login/z6br-ewgz-7v4r.cywise.io
    towerify secrets set --env z6br-ewgz-7v4r PERFORMA_SECRET_KEY=A8z6QbfYNs8mZCXCHYjqBiAd
    
  • déployer le performa
    towerify deploy --env z6br-ewgz-7v4r --profile cywise
    

La repo GitHub de Performa se trouve ici : https://github.com/jhuckaby/performa.

Configuration du Performa dans Cywise

Une fois le Performa déployé, il faut l'affecter à un utilisateur en modifiant les colonnes performa_domain et performa_secret de la table users pour cet utilisateur.

UPDATE users
SET performa_domain = 'z6br-ewgz-7v4r.cywise.io',
    performa_secret = 'A8z6QbfYNs8mZCXCHYjqBiAd'
WHERE id = <user_id>;

Détails sur le fonctionnement

API Cywise pour la connexion de l'utilisateur

La doc de Performa, son README, n'explique pas le fonctionnement pour la connexion des utilisateurs externes à Performa mais elle précise que Performa utilise le module pixl-server-user.

Et la doc de ce module détaille la façon dont on peut configurer l'authentification des utilisateurs auprès d'une application externe.

L'application externe doit fournir une API que Performa va appeler, de serveur à serveur, et en passant les cookies. Pour Cywise, nous avons fait un point d'entrée /performa/user/login/{performa_domain}. Grâce aux cookies qui sont passés, nous pouvons retrouver l'utilisateur s'il est authentifié.

Si l'utilisateur est authentifié, nous vérifions qu'il a bien accès au performa_domain passé dans l'URL et, si c'est le cas, nous renvoyons le détail des informations de cet utilisateur ce qui permet à Performa de le connecter. Nous envoyons également que l'utilisateur est admin de Performa donc tout utilisateur ayant accès à un Performa sera administrateur de ce Performa.

Si l'utilisateur n'est pas authentifié ou s'il n'a pas accès au performa_domain alors nous demandons à Performa de faire une redirection vers la page de login de Cywise.

Enfin, nous gérons également la déconnexion (bouton en haut à gauche de l'UI de Performa) où l'API est appelée avec ?logout=1 et où nous déconnectons l'utilisateur.

Déploiement du client Performa sur les serveurs

Quand un serveur, sur lequel notre client a été installé, appelle notre API pour se mettre à jour, nous testons si ce serveur est lié à un utilisateur ayant accès à un performa. Si c'est le cas, nous installons le client Performa sur le serveur.

Voir app/Models/YnhOsquery.php et YnhOsquery::monitorLinuxServer par exemple.