Contact salesFree trial
Blog

Up(sun) and running mit Infrastrukturprozessen auf Blackfire

SchwarzfeuerInfrastrukturPHPBeobachtbarkeit
Share

Das Auftreten von Ereignissen, die sich auf das Verhalten und die Leistung von Anwendungen auswirken, ist unvermeidlich. Die Implementierung einer Observability-Strategie für Produktionswebsites, die von möglichst viel Kontext profitiert, verschafft Ihnen jedoch den besten Überblick über Ihre Anwendungen. Sie hilft Ihnen, potenzielle Engpässe zu erkennen und ein nahtloses Benutzererlebnis zu gewährleisten.

Durch das Hinzufügen von Infrastrukturinformationen zu einem Observability-Dashboard können Sie nachvollziehen, was auf der Infrastrukturseite getan wurde, und ggf. Probleme schnellstmöglich diagnostizieren. Ist die Spitze im Ressourcenverbrauch auf eine Verkehrsspitze zurückzuführen oder auf etwas, das auf der Infrastrukturseite aufgetreten ist? Ist eine Anfrageverzögerung auf eine neu geschaltete Anzeige oder einen neu eingerichteten Dienst zurückzuführen? Jedes Ergebnis erfordert eine andere Reaktion, so dass jeder zusätzliche Kontext auf Ihrem Observability-Dashboard Ihnen hilft, interne und externe Ursachen zu unterscheiden.

In der Zwischenzeit gibt Ihnen Upsun Zugriff auf alle Infrastrukturprozesse, die in Ihrer Umgebung/Projekt/Integration/Wartung vorkommen, und lässt Sie für jeden von ihnen eine Aktion auslösen. Für jeden Infrastrukturprozess können Sie entscheiden, was zu tun ist: eine Benachrichtigung an einen bestimmten Slack-Kanalsenden , Informationen an einen benutzerdefinierten Endpunkt (Webhook) senden, ein spezielles Skript ausführen, Informationen an Newrelic senden und so weiter.

Ein Activity-Skript ist ein Stück Code, geschrieben in ES2021 (Javascript), das ausgeführt werden kann, um alles zu tun, was Sie wollen. Die Verbindung zwischen diesen beiden, den Aktivitätsskripten und den Infrastrukturprozessen, wird durch eine Integration hergestellt .

Diese Integration muss mit Parametern konfiguriert werden, die festlegen, welche Aktion Sie ausführen möchten, in welchen Umgebungen und welche Ereignisse und entsprechenden Zustände dieses Aktivitätsskript auslösen.

  • Aktion: Für die Zwecke dieses Artikels werden wir das Aktionsskript (=Ausführen eines Aktivitätsskripts) verwenden, aber die vollständige Liste der möglichen Aktionen finden Sie hier. Wir müssen auch festlegen, welches Skript (Option --Datei) wir ausführen wollen.
  • Umgebung: Es könnte auf alle Umgebungen gesetzt werden, aber in unserem Fall wollen wir nur Infrastrukturprozesse aus der Produktionsumgebung(main) verarbeiten.
  • Ereignis: In unserem Fall wollen wir jedes Infrastrukturereignis an mein Monitoring-Dashboard senden, aber wenn Sie eine Feinabstimmung vornehmen wollen, können Sie hier eine vollständige Liste der möglichen Infrastrukturereignisse finden (= Aktivitätsskripttypen).
  • Zustand: Es gibt 3 verfügbare Zustände: ausstehend, in_progress und abgeschlossen. In unserem Fall haben ausstehende Vorgänge keine Auswirkungen auf Ihre Anwendung (Upsun-interne Nutzung), so dass wir uns auf die Zustände in_progress und complete konzentrieren werden.

Upsun verwendet Blackfire als integriertes APM/Continuous Profiling Tool, und seine Verwendung ist (soweit ich diesen Artikel schreibe) in allen Upsun-Projekten enthalten.

Blackfire bietet einen REST-Endpunkt, um Marker hinzuzufügen, indem Sie einen einfachen Curl-Aufruf mit Ihren Anmeldedaten (blackfire_server_id und blackfire_server_token) und der Nachricht, die Sie auf Ihrer Blackfire-Timeline anzeigen möchten, verwenden.

Jetzt haben wir gute Zutaten für unser Rezept: wie man Infrastrukturprozesse an Ihr Blackfire Monitoring sendet. Fügen wir die Upsun-Infrastrukturprozesse in unsere Blackfire-Timeline ein.

Bitte beachten Sie: Die Prozesse/Befehle in diesem Artikel können auch auf Platform.sh Projekte angewendet werden, indem Sie upsun CLI durch platform CLI ersetzen.

Upsun-Infrastrukturprozesse in der Blackfire-Zeitleiste anzeigen

Um Upsun-Infrastruktur-Prozesse in der Blackfire-Timeline zu platzieren, benötigen wir:

Dies sind die minimalen Schritte für Ihre Upsun-Umgebung, um Infrastrukturprozesse an Ihre Blackfire-Umgebung zu senden.

Bitte beachten Sie: Wir gehen in diesem Blogpost davon aus, dass Sie Ihre Anwendung bereits auf Upsun hosten. Falls nicht, werfen Sie einen Blick auf unsere Up(sun) and running with Symfony Demo Anleitung und verwenden Sie dieses Projekt für Ihren Test.

Gehen Sie zum Stammverzeichnis des Quellcodes Ihres lokalen Projekts und folgen Sie diesen Schritten:

1. Erstellen Sie eine neue Javascript-Datei (unsere Activity-Skriptdatei) im Stammverzeichnis Ihres Quellcodes, blackfire-notifier.js (Quelle hier) mit der folgenden Befehlszeile:

curl -L https://raw.githubusercontent.com/upsun/snippets/main/src/blackfire-notifier.js > blackfire-notifier.js git add blackfire-notifier.js && git commit -m "Add blackfire-notifier.js"

Bitte beachten Sie: Dieses Javascript-Skript ist nicht an ein bestimmtes Framework gebunden. Sie können die Markierungsnachricht selbst anpassen (die Größe ist auf 64 Zeichen begrenzt).

Diese blackfire-notifier.js Javascript-Datei verwendet 2 Umgebungsvariablen, blackfire_server_id und blackfire_server_token, um die entsprechenden Infrastrukturprozessinformationen(Status und Typ, z.B. (start|stop) Florent Huck redeployed environment Main ) an Ihre Blackfire-Umgebung zu senden, wobei der dedizierte Blackfire REST-Endpunkt zum Hinzufügen von Markern verwendet wird.

2. Fügen Sie eine Activity-Skript-Integration für dieses neue blackfire-notifier.js-Skript hinzu:

upsun integration:add --type=script --file ./blackfire-notifier.js --events \* --states in_progress,complete --environments main

Mit dieser Integration wird Upsun das Skript blackfire-notifier.js für alle Infrastrukturprozesse (mit dem Status in_progress oder complete) in Ihrer Hauptumgebung ausführen.

Bitte beachten Sie: Sie müssen die <INTEGRATION_ID> (id), die nach dem obigen Befehl ausgegeben wird, kopieren und in den nächsten Befehlszeilen verwenden.

3. Übergeben Sie die Blackfire-Anmeldedaten, BLACKFIRE_SERVER_ID und BLACKFIRE_SERVER_TOKEN an Ihr Aktivitätsskript:

Führen Sie von der Wurzel Ihres Upsun-Projekts die 2 folgenden Befehlszeilen aus:

upsun project:curl /integrations/<INTEGRATION_ID>/variables -X POST -d '{"name": "blackfire_server_id", "value": "'$(upsun ssh 'echo $BLACKFIRE_SERVER_ID')'", "is_sensitive": true, "is_json": false}' upsun project:curl /integrations/<INTEGRATION_ID>/variables -X POST -d '{"name": "blackfire_server_token", "value": "'$(upsun ssh 'echo $BLACKFIRE_SERVER_TOKEN')'", "is_sensitive": true, "is_json": false}'

Bitte beachten Sie: Sie müssen Ihre in Schritt 2 erstellte Integrations-ID verwenden.

4. Testen Sie.

Um die Integration Ihres Activity-Skripts zu testen, lösen Sie einfach einen Infrastrukturprozess für Ihr Projekt aus:

upsun project:clear-build-cache && upsun environment:redeploy -y

Neue Markierungen sollten auf der Blackfire-Seite erscheinen, um den Start und das Ende des Prozesses zu kennzeichnen:

5. Debuggen Sie es und aktualisieren Sie das Aktivitätsskript.

Wenn Sie Zugang zu den neuesten Activity Script Logs haben möchten, können Sie den folgenden Befehl verwenden:

upsun integration:activity:log <INTEGRATION_ID>

Da der Inhalt des Skripts blackfire-notifier.js bei der Erstellung der Integration im Cache gespeichert wurde, müssen Sie die Integration jedes Mal aktualisieren, wenn eine Aktualisierung dieses Skripts vorgenommen wurde, indem Sie den folgenden Befehl verwenden

upsun integration:update --file ./blackfire-notifier.js <INTEGRATION_ID>

Et voilà, sobald ein Infrastrukturprozess in Ihrer Hauptumgebung stattfindet, fügt dieses Aktivitätsskript mehr Kontext zu Ihrer Blackfire-Zeitleiste hinzu, indem es neue Marker hinzufügt. So erhalten Sie einen ganzheitlichen Überblick über die Leistung Ihrer Anwendung und können Probleme schnell diagnostizieren und beheben.

Indem Sie das volle Potenzial von Blackfire nutzen und die Infrastrukturprozesse von Upsun einbeziehen, sind Sie besser gerüstet, die Leistung Ihrer Anwendung zu verwalten und zu optimieren. Nutzen Sie diesen integrierten Ansatz, um potenziellen Problemen einen Schritt voraus zu sein, die betriebliche Effizienz zu verbessern und Ihren Benutzern einen zuverlässigen Service zu bieten.

Bleiben Sie auf unseren Social Media- und Community-Kanälen immer auf dem Laufenden: Dev.to, Reddit und Discord. Viel Spaß beim Überwachen.

Dieses Video ansehen

Ihr größtes Werk
steht vor der Tür

Kostenloser Test
Discord
© 2025 Platform.sh. All rights reserved.