Dies ist eine Methode zum Senden von benutzerdefinierten Metriken und Ereignissen von Laravel an Datadog über Dogstatsd, wobei Datadog-Agent, Nginx und Laravel in der mit Docker-Compose erstellten Umgebung mit mehreren Containern installiert sind.
Die offizielle Datadog-Dokumentation ist ** wie üblich unbrauchbar **, daher habe ich es geschafft, die Einstellungen selbst zu erstellen.
Zunächst die Docker-Compose-Einstellungen.
(Referenz) Klicken Sie hier, um zu erfahren, wie Sie den Datadog-Agenten mit Docker-Compose installieren und konfigurieren https://qiita.com/reopa_sharkun/items/cd4dbfdaa60bcfbefd74
Der Punkt ist die Einstellung der Umgebung und der Links. Ermöglichen Sie Links die Kommunikation zwischen dem Container von Laravel und dem Container des Datadog-Agenten Das Verbindungsziel wird mit den Umgebungsvariablen DD_AGENT_HOST und DD_DOGSTATSD_PORT festgelegt. (Datadogstatsd, das später beschrieben wird, liest und verwendet diese Umgebungsvariable.) Stellen Sie DD_ENTITY_ID wie Sie möchten ein.
app:
build:
context: ./docker/php
dockerfile: Dockerfile
volumes:
- php-fpm-socket:/var/run/php-fpm
- ../backend:/work/backend:delegated
- ./docker/php/bash/.bash_history:/root/.bash_history
- ./docker/php/bash/psysh:/root/.config/psysh
environment:
- DD_AGENT_HOST=dd-agent
- DD_DOGSTATSD_PORT=8125
- DD_ENTITY_ID=Laravel
links:
- dd-agent:dd-agent
Das Wichtigste hier ist DD_DOGSTATSD_NON_LOCAL_TRAFFIC = true. Darüber hinaus sollte beachtet werden Beachten Sie, dass es nicht funktioniert, wenn DD_DOGSTATSD_NON_LOCAL_TRAFFIC = "true" gesetzt ist!
dogstatsd überwacht den UDP-Port 8215 Fügen Sie "8125: 8125 / udp" hinzu.
Andere Einstellungen umfassen Einstellungen zur Überwachung von Nginx.
dd-agent:
container_name: dd-agent
image: datadog/agent:7
environment:
- DD_API_KEY=Schreiben Sie hier Ihren API-Schlüssel
- DD_APM_ENABLED=true
- DD_LOGS_ENABLED=true
- DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true
- DD_AC_EXCLUDE="name:dd-agent"
- DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /proc/:/host/proc/:ro
- /sys/fs/cgroup:/host/sys/fs/cgroup:ro
ports:
- "8125:8125/udp"
- "8126:8126/tcp"
Es ist in Ordnung, wenn Sie Docker-Compose wie oben einstellen. Lassen Sie uns den Container neu starten.
Fügen Sie die folgenden zwei Pakete hinzu.
"datadog/php-datadogstatsd" "chaseconey/laravel-datadog-helper"
composer require datadog/php-datadogstatsd
composer require chaseconey/laravel-datadog-helper
Stellen Sie sicher, dass der Container mit Docker ps korrekt gestartet wurde. dd-agent hört um 0.0.0.0:8125-> 8125 / udp.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fa807546066 docker-laravel_app "docker-php-entrypoi…" 35 minutes ago Up 35 minutes 9000/tcp docker-laravel_app_1
8b970a3b89c3 datadog/agent:7 "/init" 35 minutes ago Up 35 minutes (healthy) 0.0.0.0:8125->8125/udp, 0.0.0.0:8126->8126/tcp dd-agent
Versuchen Sie, vom Host zu senden, auf dem Docker ausgeführt wird. Es wird nichts angezeigt, ob es erfolgreich ist oder fehlschlägt: enttäuscht_relieved:
echo "deploys.test.myservice:1|c" | nc -w 1 -u 127.0.0.1 8125
Wieder sehe ich nur null, ob es erfolgreich ist oder fehlschlägt: enttäuscht_relieved: Nur beim ersten Mal werden viele Hinweise angezeigt, aber es gibt kein Problem.
Psy Shell v0.10.4 (PHP 7.4.11 — cli) by Justin Hileman
>>> Datadog::event('An test error occurred.',array( 'text' => 'Test Info message','alert_type' => 'error'));
=> null
>>> Datadog::increment('my.sweet.metrics');
=> null
>>>
Sie können verschiedene andere Protokolle senden, aber wenn Sie es bisher geschafft haben, können Sie es meiner Meinung nach durch Lesen des Dokuments verwalten.
https://docs.datadoghq.com/ja/developers/dogstatsd/?tab=agent
https://docs.datadoghq.com/ja/developers/events/dogstatsd/?tab=php