Demande d'extension de l'API de PlanetHoster pour récupérer des données serveur par compte World

W2A partagé ce idée il y a 19 mois
Complété

Bonjour à toute l'équipe

Il serait opportun d'envisager une extension de l'API de PlanetHoster pour inclure des données sur la consommation de ressources par compte World (ou par nom de domaine associé), telles que le CPU, la RAM et les E/S. Cela permettrait aux utilisateurs de surveiller leur consommation de ressources de manière plus précise et de prendre des décisions éclairées en matière d'optimisation de leur utilisation de l'hébergement.

Nous vous serions reconnaissants de bien vouloir prendre en considération cette suggestion importante pour l'amélioration de vos services d'hébergement.


Merci beaucoup

Réponses (1)

photo
2

Bonjour Imed,

Est-ce qu'il s'agit d'alertes envoyés lorsque les ressources sont atteintes ?

Cordialement,

Mina S.

PlanetHoster

photo
1

Bonjour Mina


Merci pour votre réactivité

Je suis en train de créer un tableau de bord pour mes clients, qui leur permettra d'accéder plus facilement aux différents services liés à leurs sites de commerce électronique. Parmi ces services, je souhaite inclure un widget affichant des métriques de performance telles que l'utilisation du processeur, de la mémoire vive et des entrées/sorties, pour chaque compte World créé dans mon portefeuille.

Voici la capture d'écran des données à récupérer dans le tableau de bord par client connecté:

0fec0324f2c8c1c1601be25b6103659f

photo
2

Merci pour le complément d'information.

Nous vérifions s'il y a des contraintes techniques pouvant limiter cette approche.

Si aucune contrainte, il nous fera plaisir d'implémenter cela.

Merci pour votre confiance.

Cordialement,

Mina S.

PlanetHoster

photo
1

Bonjour,

Merci pour votre retour.

Je suis un client fidèle de PlanetHoster et je suis satisfait des services que vous offrez. Cependant, je rencontre actuellement des difficultés pour récupérer les données de consommation en CPU, RAM et E/S pour mes comptes World. Bien que votre API permette de récupérer ces données pour l'ensemble des serveurs, il n'est malheureusement pas possible de le faire pour chaque compte World individuellement.

Je souhaiterais vous encourager à développer une extension de votre API qui permettrait aux clients de récupérer ces données de consommation pour chaque compte World. Cela serait extrêmement utile pour les clients qui souhaitent surveiller les performances de leurs sites de commerce électronique hébergés chez PlanetHoster en temps réel.

Je pense que cette fonctionnalité serait un ajout précieux à votre offre de services et je suis certain que de nombreux clients seraient intéressés par cette possibilité.

Je vous remercie pour votre attention à cette demande et j'espère que vous pourrez la prendre en considération dans vos projets de développement futurs.


Encore Merci

Imed ZHIR

photo
2

Bonjour,

Nous avons pris connaissance de votre demande et nous avons ouvert une demande interne DP-4732.

Merci

photo
1

Bonjour

J'espère que ce ne sera pas long

Merci beaucoup

photo
2

Je suis également fortement intéressé par le widget proposé par Imed et plus particulièrement par l'extension d'API, j'adorerais pouvoir fournir ce genre d'informations à mes clients

photo
1

Bonjour Normand

Quelles sont les nouvelles concernant la demande interne DP-4732 et quand est-ce que l'extension de l'API sera disponible ?

photo
2

Bonjour,

Cette fonctionnalité est actuellement en développement. Elle sera disponible sous peu en production.


merci

photo
1

Bonjour Normand

Pouvez-vous nous donner une estimation du nombre de jours de travail nécessaires pour terminer cette fonctionnalité ?

photo
2

Bonjour,

Si tout vas bien le déploiement en production est prévu Mardi le 23 Mai.


merci

photo
1

Bonjour Normand

Des nouvelles sur le déploiement en production ?

photo
2

Bonjour Imed,

Les méthodes sont en production depuis le mardi 23 mai. Cependant, la documentation, elle sera en place dans le courant de la semaine.


Désolé de l'inconvénient.

photo
1

Bonjour Normand,

Je suis satisfait de l'avancement des travaux que vous effectuez. Cependant, je vous serais reconnaissant de me tenir informé dès que la documentation sera disponible.

Encore merci pour votre coopération.

photo
2

Bonjour Imed,

La documentation est maintenant en place: https://apidoc.planethoster.com/fr/#tag/Stats

merci

photo
1

Bonjour Normand,

Je tiens à vous remercier sincèrement pour votre réponse favorable et pour le développement de l'extension de l'API permettant de récupérer les données de consommation en CPU, RAM et E/S. Je suis vraiment reconnaissant de votre réactivité et de votre soutien dans cette démarche.

Je vais maintenant étudier attentivement la documentation et je vous tiendrai informé.

photo
1

Bonjour Normand,

J'espère que vous allez bien. Je me permets de vous contacter car je rencontre des difficultés pour accéder à l'API de performance de PlanetHoster.

Selon la documentation que j'ai consultée, l'URL basée sur la production pour l'API de performance devrait être la suivante : https://api.planethoster.net/n0c-api/stats/performance. Cependant, lorsque j'essaie d'y accéder dans mon navigateur, je reçois le message suivant : "The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved."

J'ai vérifié mes clés d'API et elles sont correctes. Je pense donc que l'URL de l'API a peut-être été modifiée depuis la dernière mise à jour de la documentation.

Pouvez-vous s'il vous plaît me fournir la bonne URL pour accéder à l'API de performance ? De plus, si des changements ont été apportés à l'API, je vous serais reconnaissant de bien vouloir me les communiquer.

Voici mon code de test qui génère le shortcode [planethoster_metrics] pour Wordpress:

function getPerformanceMetrics() {
    $url = 'https://api.planethoster.net/n0c-api/stats/performance';
    $headers = array(
        'X-API-KEY: XXXXX',
        'X-API-USER: XXXXX',
        'Content-Type: application/json'
    );

    $options = array(
        'http' => array(
            'header' => implode("\r\n", $headers),
            'method' => 'GET'
        )
    );

    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);

    if ($response === false) {
        return "Erreur lors de la requête vers l'API.";
    } else {
        // Traitez la réponse de l'API ici
        return $response;
    }
}

function planethosterMetricsShortcode() {
    $metrics = getPerformanceMetrics();
    return '<pre>' . $metrics . '</pre>';
}

add_shortcode('planethoster_metrics', 'planethosterMetricsShortcode');


Je vous remercie par avance pour votre assistance et votre attention à ce sujet.

photo
2

Bonjour Imed,

Pour n0c-api/stats/performance la méthode est un POST et non GET.

Cependant, nous allons aussi apporter éventuellement une meilleur gestion des erreurs surtout en ce qui concerne les TIMEOUT


merci

photo
1

Bonjour Normand,

Merci pour votre réactivité. Voici mon code de test corrigé pour récupérer les données JSON avec POST:


function getPerformanceMetrics() {
    
    $url = 'https://api.planethoster.net/n0c-api/stats/performance';

    $headers = array(
        'X-API-KEY: Votre_Api_Key',
        'X-API-USER: Votre_Api_User',
        'Content-Type: application/json'
    );

    $payload = array(
        'periodType' => 'day',
        'period' => 1,
        'id' =>XXXX // L'ID se trouve dans l'URL https://my.planethoster.com/v2/hosting-management/overview/details/[ID])
    );

    $options = array(
        'http' => array(
            'header' => implode("\r\n", $headers),
            'method' => 'POST',
            'content' => json_encode($payload)
        )
    );

    $context = stream_context_create($options);
    $response = file_get_contents($url, false, $context);

    if ($response === false) {

        return "<div class='staff-notification error'>Erreur lors de la requête vers l'API! Contactez le support technique SVP</div>";

    } else {

        // Vérifier si la réponse contient une erreur de clé API
        $json_response = json_decode($response, true);

        if (isset($json_response['error_code']) && $json_response['error_code'] === 5003) {

            return "<div class='staff-notification error'>La clé de l'API PlanetHoster est erronée! Contactez le support technique SVP</div>";

        } elseif(isset($json_response['error_code']) && $json_response['error_code'] === 5004) {

            return "<div class='staff-notification error'>L'identifiant du compte World est erroné ! Contactez le support technique SVP</div>";
            
        }else{

            // Traitez la réponse de l'API ici
            return '<pre>' . $response . '</pre>';
        }
    }
}

add_shortcode('planethoster_metrics', 'getPerformanceMetrics');

Je vous envoie également un apperçu du résultat de $response :


{"reseller_id":"XXXXX","success":true,"data":[{"From":"06-02 13:05","To":"06-03 13:05","aCPU":2,"mCPU":100,"lCPU":100,"aEP":0,"mEP":0,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":113740190,"mPMem":171663360,"lPMem":1073741824,"aNproc":2,"mNproc":4,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.118,"mIO":15.163,"lIO":5120,"aIOPS":0,"mIOPS":1,"lIOPS":1024}
Cependant, j'aimerais obtenir des explications sur les différentes variables présentes dans cette chaîne JSON afin de pouvoir calculer les données de consommation en CPU, RAM et E/S pour chaque compte World individuel, comme indiqué dans le widget proposé ci-dessus.

Pourriez-vous m'expliquer les différentes variables et leur signification, afin que je puisse effectuer les calculs appropriés ?

Je vous remercie d'avance pour votre aide et vos explications.

photo
2

Bonjour Imed,


voici la correspondance

aCPUAverage CPU usage
uCPUThe percentage of user-allocated resource CPU
mCPUdeprecated
lCPUCPU limit
CPUfOut Of CPU usage Faults
aEPAverage Entry Processes
uEPThe percentage of user-allocated resource Entry processes
mEPdeprecated
lEPmaxEntryProc limit
aVMemAverage Virtual Memory Usage
uVMemThe percentage of user-allocated resource Virtual Memory
mVMemdeprecated
lVMemVirtual Memory Limit
VMemFOut Of Memory Faults
EPfEntry processes faults
aPMemAverage Physical Memory Usage
uPMemThe percentage of user-allocated resource Physical Memory
mPMemdeprecated
lPMemPhysical Memory Limit
aNprocAverage Number of processes
uNprocThe percentage of user-allocated resource Number of processes
mNprocdeprecated
lNprocLimit of Number of processes
PMemFOut Of Physical Memory Faults
NprocFNumber of processes faults
aIOAverage I/O
uIOThe percentage of user-allocated resource I/O
mIOdeprecated
lIOI/O Limit
IOfOut Of I/O usage Faults
aIOPSAverage I/O Operations
mIOPSdeprecated
uIOPSThe percentage of user-allocated resource I/O Operations
lIOPSI/O Operations Limit
IOPSfOut Of I/O Operations Faults
photo
1

Bonjour Normand

Pour afficher les valeurs de consommations en pourcentage comme dans le widget ci-dessus et sur une échelle de 100, Est-il correcte de faire comme ceci :

// Traitez la réponse de l'API ici
$data = $json_response['data'][0];

$mCPU = $data['mCPU'];
$lCPU = $data['lCPU'];

 // Calculer la consommation CPU sur une échelle de 100.
$cpuUsagePercentage = ($mCPU / $lCPU) * 100;

photo
1

Bonjour Normand

S'il vous plaît, j'ai besoin que vous validiez les formules de calcul des ressources CPU, RAM et E/S utilisées pour une journée.

// Traitez la réponse de l'API ici
$data = $json_response['data'][0];

$mCPU = $data['mCPU'];
$lCPU = $data['lCPU'];

$aPMem = $data['aPMem']; 
$lPMem = $data['lPMem'];

$mIO = $data['mIO'];
$lIO = $data['lIO'];

// Calculer la consommation CPU sur une échelle de 100.
$cpuUsagePercentage = ($mCPU / $lCPU) * 100;

// Calculer la consommation RAM sur une échelle de 100.
$ramUsagePercentage = ($aPMem / $lPMem) * 100;

// Calculer la consommation E/S sur une échelle de 100.
$ioUsagePercentage = ($mIO / $lIO) * 100;

photo
1

Bonjour Imed,

Les valeurs aCPU et mCPU sont déjà en pourcentage d'utilisation au moment T.

Vous pouvez donc calculer la valeur moyenne sum($aCPU) / count($json_response['data'])

Vous pouvez faire le même genre de calcule pour tous les autres. Somme de mIO diviser par le nombre d'entré multiplié par 100 pour le pourcentage.

photo
1

Bonjour Normand,


Je vous suis reconnaissant pour votre rapidité dans la réponse.


J'ai étudié attentivement le traitement des variables "aCPU" et "mCPU". Cependant, la somme des valeurs moyennes de consommation, SUM(aCPU), ne produit pas le résultat escompté.


Voici un exemple du fichier JSON couvrant une période de 7 jours :

string(2349) "{"reseller_id":"XXXX","success":true,"data":[{"From":"05-30 16:46","To":"05-31 16:46","aCPU":1,"mCPU":56,"lCPU":100,"aEP":0,"mEP":1,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":78732177,"mPMem":213041152,"lPMem":1073741824,"aNproc":2,"mNproc":4,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":2.592,"mIO":5120,"lIO":5120,"aIOPS":0,"mIOPS":40,"lIOPS":1024},{"From":"05-31 16:46","To":"06-01 16:46","aCPU":1,"mCPU":42,"lCPU":100,"aEP":0,"mEP":2,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":117783761,"mPMem":255787008,"lPMem":1073741824,"aNproc":2,"mNproc":5,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.876,"mIO":5120,"lIO":5120,"aIOPS":0,"mIOPS":3,"lIOPS":1024},{"From":"06-01 16:46","To":"06-02 16:46","aCPU":1,"mCPU":27,"lCPU":100,"aEP":0,"mEP":0,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":120242254,"mPMem":175403008,"lPMem":1073741824,"aNproc":2,"mNproc":4,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.209,"mIO":104.615,"lIO":5120,"aIOPS":0,"mIOPS":5,"lIOPS":1024},{"From":"06-02 16:46","To":"06-03 16:46","aCPU":2,"mCPU":100,"lCPU":100,"aEP":0,"mEP":1,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":112614793,"mPMem":215252992,"lPMem":1073741824,"aNproc":2,"mNproc":5,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.122,"mIO":15.163,"lIO":5120,"aIOPS":0,"mIOPS":1,"lIOPS":1024},{"From":"06-03 16:46","To":"06-04 16:46","aCPU":1,"mCPU":35,"lCPU":100,"aEP":0,"mEP":2,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":110016762,"mPMem":261550080,"lPMem":1073741824,"aNproc":2,"mNproc":6,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.234,"mIO":151.578,"lIO":5120,"aIOPS":0,"mIOPS":7,"lIOPS":1024},{"From":"06-04 16:46","To":"06-05 16:46","aCPU":1,"mCPU":36,"lCPU":100,"aEP":0,"mEP":0,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":113645298,"mPMem":164380672,"lPMem":1073741824,"aNproc":3,"mNproc":13,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.139,"mIO":44.45,"lIO":5120,"aIOPS":0,"mIOPS":4,"lIOPS":1024},{"From":"06-05 16:46","To":"06-06 16:46","aCPU":1,"mCPU":23,"lCPU":200,"aEP":0,"mEP":2,"lEP":20,"aVMem":0,"mVMem":0,"lVMem":0,"VMemF":0,"EPf":0,"aPMem":117140603,"mPMem":253558784,"lPMem":2147483648,"aNproc":2,"mNproc":11,"lNproc":100,"PMemF":0,"NprocF":0,"aIO":0.271,"mIO":81.386,"lIO":5120,"aIOPS":0,"mIOPS":6,"lIOPS":1024}]}" 
Il est évident que les valeurs de "aCPU" ne dépassent pas 1 ou 2. La somme de ces valeurs nous donne 8%, ce qui ne correspond pas à la courbe de performance dans l'espace NOC.


En revanche, la variable "mCPU" représente la consommation maximale par jour en pourcentage, mais cette valeur est par rapport au nombre de cœurs CPU multiplié par 100.

Car d'après la documentation des statistiques de performance sur NOC, nous avons la règle suivante :


Si 1 core a été assigné à un hébergement donné, le maximum que vous pouvez solliciter sera de 100%.

Si davantage de cores sont assignés, le pourcentage sera en proportion.

Ainsi, 400% et 800% signifient respectivement que 4 cores et 8 cores sont sollicités au maximum selon vos ressources attribuées.

Par exemple, supposons que vous avez assigné 2 cores sur un de vos hébergements et que le pourcentage indique 227% : cela signifie que vous avez excédé de 27% la limite que vous avez définie."


Par conséquent, la formule correcte est la suivante :


$cpuUsagePercentage = (SUM($mCPU) / ($nombreCoresCPU * 100)) * 100;

Qu'en pensez-vous ?

Et merci pour votre coopération.

photo
1

Bonjour,


Pour faciliter la discussion et poursuivre nos échanges sur ce sujet, nous avons créé un sujet sur notre forum :

https://planethoster.live/threads/demande-dextension-de-lapi-de-planethoster-pour-recuperer-des-donnees-serveur-par-compte-world.6473/

Auriez-vous l'amabilité de reformuler votre question sur celui-ci ?

Au plaisir,

photo
1

Bonjour Mina

Merci pour votre aide précieux. je viens de reformuler ma question sur le forum. Encore Merci.

photo
Poster un commentaire
 
Joindre un fichier