web-dev-qa-db-fra.com

Existe-t-il une solution de type Google Analytics pour suivre les REST appels vers un service Web?

Je me demande simplement s'il y a une solution prête à l'emploi pour cela, je ne suis pas trop familier avec l'api d'analyse, je peux peut-être écrire quelques js simples qui mettent à jour l'analyse avant d'aller à mon service, etc. - sinon je vais devoir m'en tenir à le bon vieux "stocker les enregistrements dans la base de données".

Toute aide appréciée!

40
JohnIdol

Il semble y avoir quelques solutions, bien qu'elles semblent principalement impliquer de changer l'architecture de votre API.

Vous pouvez potentiellement utiliser l'une des Google Analytics bibliothèques de suivi côté serveur .

Je vois que vous utilisez AppEngine; Je lance également une API à l'aide d'AppEngine et j'ai récemment joué avec Google Analytics Library for App Engine . Ce n'est pas une solution parfaite, mais il y a une quantité décente de données de qualité.

Soyez averti que la modélisation des données de Google Analytics n'est vraiment pas analogue à celle d'une API; selon votre API, la notion de "visite" est quelque peu dénuée de sens.

12
Yahel

Je pense que Keen IO serait un excellent choix ici. Il s'agit d'une plate-forme d'analyse uniquement API (ce qui signifie que vous envoyez à la fois des données et que vous consommez des analyses via une API REST).

Divulgation complète: je suis le PDG. Je n'écris pas cette réponse pour l'autopromotion, mais parce que honnêtement, notre produit a été spécialement conçu pour des cas d'utilisation comme le vôtre.

Plusieurs utilisateurs enthousiastes IO sont des sociétés d'API qui l'utilisent pour effectuer des analyses sur la façon dont leurs utilisateurs utilisent leurs API.

Au risque d'être un peu trop méta: nous utilisons l'API Keen IO en interne pour collecter les événements et effectuer une analyse de la façon dont nos clients utilisent l'API Keen IO en externe, et à titre d'exemple, notre modèle de données à deux événements ressemble à ceci: *

  • analysis_call
    • demande (objet)
      • client_library_version (chaîne)
      • API_version (nombre)
      • query_parameters (objet valeur-clé)
      • post_parameters (objet valeur-clé)
      • Origin_ip (adresse IP)
      • URI (chaîne)
    • num_events (entier)
    • includes_geolocation (booléen)
    • user_agent (chaîne)
    • réponse (objet)
      • HTTP_code (nombre)
      • latence (nombre)
      • en-têtes (objet)
      • corps (objet: l'objet de réponse JSON complet réel, s'il est inférieur à 1 Ko)
  • events_added_call
    • client_library_version (chaîne)
    • API_version (nombre)
    • Origin_ip (adresse IP)
    • demande (objet)
    • response (objet: l'objet de réponse JSON complet réel)

* Nous utilisons en fait un beaucoup plus de propriétés que cela, je les ai supprimées pour le rendre plus clair

14
Kyle Wild

Eh bien, vous pouvez utiliser ... Google Analytics

Sur le serveur, dans une fonction de gestionnaire d'API REST, faites une requête HTTP GET à http://www.google-analytics.com/__utm.gif avec le bons paramètres, et vous avez terminé. De préférence asynchrone.

https://developers.google.com/analytics/resources/concepts/gaConceptsTrackingOverview

8
Neil McGuigan

Vous pouvez le faire maintenant avec GA en utilisant le nouveau Measurement Protocol le est actuellement en version bêta publique.

5
Andre Lackmann

Je pense que ce que vous cherchez est quelque chose comme apigee: http://apigee.com

2
jverdi

Je pense que cette solution pourrait être un très bon choix si vous êtes intéressé à suivre spécifiquement REST appels: http://apianalytics.com On dirait qu'il a tout dont vous auriez besoin. Un peu comme le Mixpanel des API.

Avertissement: Un de mes bons amis a construit ce

1

Je ne pense pas que Google Analytics puisse suivre les appels en attente, car il est activé par un extrait de JavaScript que vous intégrez dans votre code HTML.

Pour afficher les journaux, vous pouvez aller sur console Appengine , choisissez votre application et sélectionnez Logs .

Pour accéder à vos journaux par programmation, vous devez les télécharger (avec Java , avec Python ), mais il semble que jusqu'à présent, vous ne pouvez pas le faire dans votre application moteur, vous devez donc le faire sur votre poste de travail ou peut-être sur une instance Amazon EC2 (peut-être micro) .

D'un autre côté, si vous décidez de stocker des enregistrements dans le DataStore, effectuez la mise à jour dans une file d'attente de tâches, afin de ne pas ralentir votre API ( Files d'attente de tâches avec Java , Tâche Files d'attente avec Python ).

1
stivlo

Quelles informations recherchez-vous spécifiquement? Vous pourrez peut-être obtenir ce dont vous avez besoin à partir des journaux d'accès http.

0
Bill