Quelle est la meilleure façon de surveiller votre API REST?
J'ai créé une API basée sur le modèle Reposant et je me demandais quelle est la meilleure façon de le surveiller? Je peux en quelque sorte à recueillir des statistiques sur chaque demande et à quelle profondeur je pourrais surveiller les demandes?
Aussi, pourrait-il être fait en utilisant des logiciels open source (peut-être la construction de ma propre service de surveillance) ou dois-je besoin d'acheter un logiciel tiers?
Si elle pouvait être atteint par l'utilisation de logiciels open source où dois-je commencer?
OriginalL'auteur 0x1ad2 | 2015-02-27
Vous devez vous connecter pour publier un commentaire.
Commencer avec l'identification des principaux besoins que vous pensez de surveillance permettra de résoudre. Essayez de répondre aux deux questions: "Que dois-je savoir?" et "Comment dois-je agir sur cette information?".
Exemples de "Que dois-je savoir?"
Exemples de "Comment dois-je agir sur cette information?"
Si vous pouvez répondre à ces questions, vous pouvez trouver la bonne solution tierce partie qui saisit les paramètres qui vous intéressent, ou injecter des sondes de surveillance dans la partie droite de votre API qui vous dira ce que vous devez faire savoir. J'ai remarqué que vous êtes principalement un Laravel de l'utilisateur, il est donc probable que bon nombre de mesures que vous souhaitez savoir peut être capturé par l'ajout d'avant ( L'enregistrement Avant de Filtres Sur un Contrôleur de ) et après ( L'inscription d'un Après Application du Filtre ) filtres à votre demande, pour mesurer le temps de réponse et à la réussite de réponse. C'est là que les réponses à la première série de questions sont les plus importantes ( "Que dois-je savoir?" ), il servira de guide à où et ce que vous mesurez dans votre application.
Une fois que vous savez où vous pouvez capturer les données, choisir le bon outil devient une question de choix entre (en gros) deux classes d'applications de surveillance: hautement spécialisés surveillance d'applications qui sont étroitement liés à l'exploitation de votre application, et généralisée logiciel de surveillance qui s'apparente davantage à une série de temps de la base de données.
Il n'y a pas populaires (à ma connaissance) des exemples de la très spécialisés qui sont open source. De nombreux commerces, des solutions existent cependant: NewRelic, Ruxit, DynaTrace, etc. etc. etc. Leur fonction pourrait facilement être décrit à être semblable à une distance de profils, avec de nombreuses autres fonctions en plus. (Aussi, n'oubliez pas que, plus traditionnel du générateur de profils peuvent être utiles pour la collecte de certaines informations dont vous avez besoin, alors il ne sera certainement pas supplanter le suivi de votre demande, il y a beaucoup d'informations précieuses qui peuvent être tirées de profilage de même avant de passer à la production.)
Sur le grand côté des choses, il y a beaucoup plus d'ouvrir les options de source que je suis personnellement au courant de. La longévité est de Graphite (une bonne introduction à ce qui peut être lu ici: Mesurer Quoi Que Ce Soit, De Tout Mesurer), qui est dans la jolie commune de l'utilisation parmi tant d'autres. Le Graphite est loin d'être la seule option, cependant, et vous pouvez trouver de nombreuses autres options comme Kibana et InfluxDB si vous souhaitez héberger vous-même.
Beaucoup de ces open source les options ont également accueilli des options disponibles à partir de plusieurs fournisseurs. En outre, vous trouverez qu'il ya beaucoup de entièrement commercial options disponibles dans ce camp (je suis fondateur de l'une, en effet 🙂 - Instrumentale ).
La plupart de ces options existent parce que les propriétaires d'applications ont trouvé assez onéreux pour exécuter leur propre infrastructure de surveillance sur le haut de l'exécution de leur application effective; maintien de la disponibilité d'un système distribué est pas élevé sur de nombreux ops du personnel d'idées de cadeaux. 🙂
OriginalL'auteur Chris Zelenak
(Je suis clairement biaisée pour répondre à cette depuis que j'ai co-fondé Runscope qui, je crois, est le chef de file de l'API de Suivi, de sorte que vous pouvez prendre tout cela avec un grain de sel ou de faire confiance à mes années d'expérience de travail avec 1000s des clients spécifiquement sur ce problème 🙂
Je ne sais pas du tout d'outils logiciels spécifiques de REPOS(ful) de l'API de surveillance. Usage général OSS métriques des outils de suivi (comme pour le Graphite) peut certainement aider à garder un œil sur les morceaux de votre API pile, mais n'ont pas spécifique à l'API fonctionnalités.
Commerciale métrique des outils de suivi (comme Datadog) ou de la Surveillance de la Performance applicative (APM) des outils comme (Nouvelle Relique ou AppDynamics) ont un peu plus de fonctionnalités spécifiques à l'API: cas d'utilisation, mais aucun n'est centré sur elle. Ces sont utiles dans le cadre de ce que nous appelons des "couches d'approche de surveillance": démarrer avec les API de haut niveau de la surveillance, et l'utilisation de ces autres outils (à l'exception des trackers, APM, journaux bruts) à plonger dans les problèmes lorsqu'ils surviennent.
Donc, ce spécifique à l'API caractéristiques devraient être à la recherche d'une API outil de surveillance? Nous les classons selon les trois facteurs que vous êtes généralement suivi pour: temps de fonctionnement/de disponibilité, de performance, de vitesse et de la correction/validation des données.
La Disponibilité De Surveillance
À un niveau de base, vous aurez envie de savoir si vous êtes Api sont même disponibles pour les clients qui ont besoin pour les atteindre. Pour le "bien public" (ce qui signifie, disponible sur l'internet public, pas nécessairement médiatisé...un mobile backend API est public, mais pas nécessairement médiatisé) Api vous aurez envie de simuler les clients qui font appel autant que possible. Si vous avez une application mobile, il est probable que l'API doit être disponible partout dans le monde. Donc, au minimum, votre API outil de surveillance devrait vous permettre d'exécuter des tests à partir de plusieurs endroits. Si votre API ne peut pas être atteint à partir d'un emplacement, vous aurez envie de notifications via e-mail, Mou, etc.
Si votre API est sur un réseau privé (pare-feu d'entreprise, la mise en scène de l'environnement, de la machine locale, etc.) vous devrez être capable de "voir". Il existe une variété d'approches pour ce (agents, Vpn, etc.) juste assurez-vous d'utiliser celui de votre département de signes.
Répartition mondiale des agents de contrôle est plus coûteux que le programme d'installation si vous êtes auto-hébergement, de la construction à l'interne ou à l'aide d'un OSS outil. Vous devez vous assurer que chaque emplacement que vous avez défini (de préférence à l'extérieur de votre groupe principal) est très disponible et entièrement surveillée. Cela peut être coûteux et chronophage très rapidement.
Suivi De La Performance
Une fois que vous avez vérifié votre Api sont accessibles, alors vous aurez envie de commencer à mesurer à quelle vitesse ils sont performants pour vous assurer qu'ils ne ralentit pas les applications qui les consomment. Raw le temps de réponse est le strict minimum métrique que vous devriez suivre, mais pas toujours les plus utiles. Examiner les cas où de multiples appels de l'API sont agrégées en une vue de l'utilisateur, ou des actions par l'utilisateur de générer des dynamiques ou rarement appelé de données qui ne peuvent pas être présents dans une couche de mise en cache encore. Ces multi-étape, les tâches ou les flux de travail peuvent être difficiles à contrôler avec l'APM ou des mesures en fonction des outils qu'ils n'ont pas les capacités de comprendre le contenu des appels d'API, seulement leur existence.
Externe de suivi de vitesse est également important pour obtenir la représentation la plus exacte de la performance. Si l'agent de contrôle se trouve à l'intérieur de votre code ou sur le même serveur, il est peu probable que c'est en tenant compte de tous les facteurs qui ont une réelle expérience de la clientèle lors d'un appel. Des choses comme la résolution DNS, SSL négociation, équilibrage de charge, la mise en cache, etc.
Exactitude et la Validation des Données
Ce bien est une API qui est rapide et si c'est le retour des données erronées? Ce scénario est très commun et est finalement une bien pire expérience de l'utilisateur. Les gens à comprendre "vers le bas"...ils ne comprennent pas pourquoi une application est de leur montrer les données erronées. Une bonne API outil de suivi vous permettra de faire une inspection en profondeur du message charges des va-et-vient. JSON et XML parsing, complexe d'assertions, de la validation du schéma, extractions de données, des variables dynamiques, multi-étape de moniteurs et de plus sont nécessaires pour valider entièrement les données envoyées en arrière est Correct.
Il est également important de valider la manière dont les clients s'authentifier avec votre API. Bon spécifique à l'API, les outils de surveillance comprendre OAuth, une authentification mutuelle avec le client certificats, authentification, etc.
J'espère que cela vous donne une idée de pourquoi API de suivi est différent de "traditionnel" métriques, APM et outils de journalisation, et comment ils peuvent jouer ensemble pour obtenir une image complète de votre application s'exécute.
Salut John, comment nous pouvons utiliser RunScope dans notre internes à l'entreprise, les applications qui ne sont pas accessibles au public?
runscope.com/docs/api-testing/agent
OriginalL'auteur John Sheehan
Je suis en utilisant runscope.com pour mon entreprise. Si vous voulez quelque chose de gratuit apicombo.com aussi peut le faire.
Fondamentalement, vous pouvez créer un test pour votre API point de terminaison pour valider la charge utile, le temps de réponse, code d'état, etc. Ensuite, vous pouvez planifier le test à exécuter. Ils fournissent également des statistiques de base.
OriginalL'auteur Andy Mok
J'ai essayé plusieurs applications et de méthodes pour le faire, et le meilleur (pour ma société et de nos projets connexes) est de connecter la clé=valeur de paires atomiques (entrées avec toutes les informations associées à cette opération comme IP source, le résultat de l'opération, le temps écoulé, etc... sur des fichiers de log pour chaque nœud/serveur), puis monitorize avec Splunk. Avec le REPOS et les données json peut-être que votre approche sera différente, mais il est également bien pris en charge.
Il est assez facile à installer et à configurer. Vous pouvez surveiller (presque) en temps réel des données (les temps de réponses, les résultats de l'opération), d'envoyer des notifications sur les événements et faire un peu de DWH (et beaucoup d'autres choses, il y a beaucoup de plugins).
Il n'est pas open source mais vous pouvez l'essayer pour libre si vous utilisez moins de 50 mo journaux par jour (c'est la façon dont il a travaillé il y a quelques temps, car maintenant je suis sur la licence de l'entreprise, je ne suis pas sûr à 100%).
Voici un petit tutoriel expliquant comment réaliser ce que vous êtes à la recherche pour: http://blogs.splunk.com/2013/06/18/getting-data-from-your-rest-apis-into-splunk/
Il y a quelques temps, j'ai cherché toutes les solutions disponibles et Splunk est le meilleur pour vous (la meilleure = de mon mieux = meilleur coût, prix, facile d'utilisation, facile d'intégration avec déjà développé des applications, etc...). Ce qui est exactement ce que vous souhaitez surveiller?
Ceux qui seraient mes exigences, je pense, et si c'est possible, je vais ajouter gratuit/open source comme une exigence. Je veux surveiller toutes les demandes qui ont été faites, ce qui est le plus populaire de point de terminaison, combien de temps cela prend-il pour y répondre, où vont-ils faire pour que nos clients vont l'utiliser sur leurs propres applications. etc.
OriginalL'auteur exoddus