11
votes

Y a-t-il une version Python pour la bibliothèque de métriques basée sur la JVM

Je recherche une bibliothèque de métriques de performance en Python.

Je suis familier avec métriques par CODA HALE, qui est écrit pour la JVM et donc je me demande si Il y a un équivalent python pour cela (et qui n'utilise pas la JVM).

En bref, la liste des exigences de l'outil serait:

  • comptez différents types de métriques au moment de l'exécution. Compteurs, jauges, mètres, minuteries, histogrammes, etc. Il y a une belle liste ici
  • Autorise un accès facile aux données d'exécution via API HTTP. (Je peux envelopper moi-même la couche HTTP, mais si elle est déjà cuite au four, c'est un plus)
  • plugins pour graphite en particulier ou d'autres. Copperegg serait gentil. Ou NewRelic.
  • Le soutien de l'instrumentation au four des libs communs, tels que Memcached.

    jusqu'à présent, j'avais trouvé pocounters qui fait une partie du travail, mais pas tout. Cela satisfait à ma première balle (mais il n'a pas tous les types de métriques, à seulement trois) et c'est tout.

    Y a-t-il une meilleure alternative aux pocounters?

    merci


0 commentaires

3 Réponses :


3
votes

Je ne suis pas au courant de quelque chose qui fait exactement cela, mais j'ai écrit quelque chose d'un moment de retour pour un projet qui en fait simplement en ajoutant simplement des décorateurs aux fonctions pertinentes.

J'ai créé un ensemble de décorateurs pour mesurer le temps d'exécution de Fonctions, temps de mesure des fonctions d'accès à db, etc.

Un exemple d'un tel décorateur est: xxx

plus tard, vous l'utiliseriez comme suites: xxx

J'ai également ajouté un décorateur pour des fonctions lisées à partir de la DB et des fonctions qui écrivent sur la base de données afin que je puisse obtenir des graphiques sur combien de temps le code passé à lire données ou écrire des données ainsi que sur le nombre de fois que j'ai appelé les opérations "lire" et "écriture".

Donc, dans tout ce que j'ai eu les décorateurs suivants: - @func_Runtime - pour mesurer le temps d'exécution d'une fonction - @func_dbread - Places sur les fonctions qui effectuent des lectures. Incrémente une base de données.Reads comptoir ainsi que d'envoyer des données de synchronisation à Read_timing - @func_dbwrite - identique à @func_dbread mais pour écrit - @func Dbruntime - Utilisé pour mesurer le temps d'exécution des fonctions spécifiques à DB ainsi que les appels et la synchronisation totale de toutes les fonctions de DB

Vous pouvez combiner des décorateurs et exécuter dans l'ordre le plus proche de la fonction , par exemple: xxx

donc, @func_dbread fonctionne avant @func_dberruntime.

Tout dans tout, c'est facilement personnalisable et très puissant et vous pouvez l'étendre Supporter les services tiers de 3ème partie ainsi que Ajouter un code pour transformer dynamiquement ces compteurs et éteints chaque fois que cela est pertinent. Pour autant que je puisse dire, la pénalité de la performance était au mieux au mieux.

Juste un avis sur l'envoi de données à des endroits tels que Copperegg et d'autres services, Statsd utilise UDP et depuis ses statistiques, vous pouvez perdre certaines données et toujours Obtenez des idées significatives et cela ne bloquera rien. Si vous souhaitez envoyer des données aux sites tiers des tiers tels que Copperegg, je envisagerais d'envoyer les données à une file d'attente locale, puis de la repousser avec un processus différent de Copperegg uniquement pour découpler des problèmes de 3ème partie de la soirée.

Personnellement, pour de telles données, StatsD est excellent et Graphite vous donne toutes les choses dont vous avez besoin, notamment les 90e centile, la moyenne, le max, les capacités en matière de graphique, etc. et que vous avez essentiellement la plupart des types de compteurs dont vous avez besoin.


0 commentaires

3
votes

n'a pas eu la chance de l'essayer, mais je suis tombé sur celui-ci il y a quelques jours: https://github.com/cue/scales

Balances - Metrics pour Python Suites Server Etat et statistiques, vous permettant de voir quel est votre serveur. Il peut également envoyer des métriques au graphite pour le graphique ou dans un fichier de criminel.

échelles est inspirée de la bibliothèque de métriques fantastiques, bien qu'elle ne soit en aucun cas un port.


0 commentaires

6
votes

Je suis tombé sur cette bibliothèque, qui est un port de métriques Codahale pour Python.

Il y a des choses qui manquent I.e. Reporters, mais cela fait la plupart des autres choses.

https://github.com/omertel/pyformance/

Bouchon sans scrupule, voici ma fourchette qui ajoute un journaliste en graphite hébergé. Il devrait être trivial pour ajouter des journalistes à d'autres systèmes.

https://github.com/usmanismail/pyformance


1 commentaires