Obwohl Prometheus ursprünglich für Single-Thread-Anwendungen mit einem Prozess und nicht für Multiprozess-Anwendungen entwickelt wurde, ist es jetzt für die Überwachung von [Python-Anwendungen] beliebt (https://www.courseduck.com/programming/python/). Wird ein Werkzeug für.
Prometheus wurde in der Soundcloud-Umgebung entwickelt und von Googles Borgmon inspiriert. In der ursprünglichen Umgebung basiert Borgmon auf der einfachen Methode von Service Discovery. Sie können leicht alle Jobs finden, die in Ihrem Cluster ausgeführt werden.
Prometheus erbt diese Annahmen unter der Annahme, dass ein Ziel ein einzelner Multithread-Prozess ist. Die Prometheus-Clientbibliothek basiert auf der Annahme, dass die Metriken aus verschiedenen Bibliotheken und Subsystemen mehrerer Ausführungsthreads stammen, die in einem gemeinsam genutzten Adressraum ausgeführt werden.
Um zu beginnen, gehen Sie zu MetricFire [Kostenlose Testversion] Bitte melden Sie sich unter https://www.hostedgraphite.com/accounts/signup-metricfire/?signup=japan&utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20monitor%20Python%20Applications%20 an. In dieser Testversion können Sie Prometheus sofort auf Ihrer Plattform verwenden und das, was Sie aus diesem Artikel gelernt haben, in die Praxis umsetzen.
Wenn ich eine Python-App auf dem WSGI-Anwendungsserver ausführe, treten Probleme auf. In WSGI-Anwendungen werden Anforderungen vielen verschiedenen Mitarbeitern und nicht einem einzelnen Prozess zugewiesen. Jeder dieser Mitarbeiter wird zu einer Multiprozessanwendung, indem er mithilfe mehrerer Prozesse bereitgestellt wird.
Wenn diese Art von Anwendung nach Prometheus exportiert wird, erhält Prometheus mehrere verschiedene Mitarbeiter, die auf Kratzanfragen reagieren. Jeder Arbeiter antwortet mit bekannten Werten, so dass Prometheus die Gegenmetrik abkratzen und als 100 zurückgeben kann, unmittelbar nachdem sie als 200 zurückgegeben wurde. Jeder Mitarbeiter exportiert seine eigenen Werte, sodass die Gegenmetrik eher zufällige Informationen als den gesamten Job misst.
Es gibt vier Lösungen, um diese Probleme zu lösen:
Mit eindeutigen Beschriftungen für jede Metrik können Sie alle gleichzeitig abfragen und den gesamten Job effizient abfragen. Wenn Sie beispielsweise jeden Worker als Worker_Name kennzeichnen, können Sie eine Abfrage wie folgt schreiben:
sum by (instance, http_status) (sum without (worker_name) (rate(request_count[5m])))
Dadurch werden alle Arbeitsknoten für einen Job gleichzeitig zusammengefasst. Das Problem dabei ist jedoch, dass die Anzahl Ihrer Metriken in die Höhe schnellen wird.
Diese Methode wird von uns bei MetricFire empfohlen. Diese Methode verwendet den Prometheus Python-Client (https://github.com/prometheus/client_python), der Multiprozess-Apps auf dem Gunicorn-Anwendungsserver verarbeitet und Ihre eigene Anwendung mit Prometheus überwacht.
Weitere Informationen zur Verwendung eines Python-Clients mit MetricFire zur Überwachung Ihrer eigenen Dienste finden Sie im Artikel Überwachen von Python-Webanwendungen mit Prometheus (https://qiita.com/MetricFire/items/57b95f6de1f608ef7c44). schauen Sie bitte. Dieser Artikel beschreibt jeden Schritt der Verwendung von Prometheus zur Überwachung einer Python-Webanwendung.
Diese Methode gibt jeden Mitarbeiter als vollständig separates Ziel an. Der Django Prometheus-Client konfiguriert jeden Mitarbeiter so, dass er über seinen eigenen Port auf Prometheus-Scrape-Anforderungen wartet.
Diese Methode lehnt die Vorstellung ab, dass Prometheus die Anwendung direkt reiben muss. Konfigurieren Sie Prometheus stattdessen so, dass Metriken aus Ihrer App in eine lokal ausgeführte StatsD-Instanz exportiert werden und eine StatsD-Instanz in Ihrem Namen abgerufen wird. Dies gibt Ihnen mehr Kontrolle darüber, was jeder Zähler zählt.
Prometheus kann Multiprozessanwendungen nicht nativ überwachen, aber diese vier Lösungen sind gute Problemumgehungen. Dadurch kann Prometheus das primäre Überwachungstool für das gesamte Unternehmen sowohl für IT-Ressourcen als auch für APM sein.
Weitere Informationen zur Verwendung von Prometheus zur Überwachung von Python-Apps finden Sie im Artikel über Python-basierte Exporteure (https://www.metricfire.com/blog/first-contact-with-prometheus) und Kubernetes. Weitere Informationen finden Sie in der Reihe zum Entwickeln und Bereitstellen von Python-APIs mithilfe von (https://www.metricfire.com/blog/develop-and-deploy-a-python-api-with-kubernetes-and-docker).
Um Prometheus auszuprobieren und das, was Sie aus diesem Artikel gelernt haben, in die Praxis umzusetzen, [MetricFire](https://try.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20monitor%20Python% 20Anwendungen% 20mit% 20Prometheus) Kostenlose Testversion Überprüfen Sie% 20 Prometheus). Sie können Prometheus direkt auf unserer Plattform verwenden, um die Überwachung von Metriken ohne Einrichtung zu starten. Bitte kontaktieren Sie uns auch direkt über Buchung einer Demo .. Wir freuen uns immer, von Ihnen über die Überwachungsanforderungen Ihres Unternehmens zu hören.
Wir sehen uns in einem anderen Artikel!
Recommended Posts