PHPにOpenTelemetryを導入する
最終更新
最終更新
MackerelはOpenTelemetryの仕組み (計装)を利用してデータを取得しています。
このページではPHPのデータをMackerelに送信する方法を解説します。
OpenTelemetryにはPHP用のSDKが用意されています。
このSDKに加えて、LaravelやPDO用のSDKを使用すると、既存の実装を変更せずに計装することができます。
データをMackerelに送信する際に、SDKから直接送信するだけではなく、Collectorを使うこともできます。
しかし、PHPの多くのランタイムは全ての処理が終わるまでリクエストをブロッキングするため、直接Mackerelにデータを送信すると、Mackerelに送信している時間の分だけリクエストも遅くなってしまいます。
そのため、Collectorを使用して、ユーザーへの返答をできるだけ速くすることを推奨しています。
ただし、fastcgi
の fastcgi_finish_request()
を使用すると、Mackerelへの送信を待つことなくユーザーにレスポンスを返すことができます。その場合は、直接Mackerelにデータを送信しても問題になることはないでしょう。
Collectorを使用する方法は、以下のページを参照してください。
PHPには複数のWebフレームワークが存在しますが、このページでは Laravel
への導入方法を説明します。
他のフレームワークを使っている場合もほぼ同じ方法で計装することができます。
以下のステップでMackerelトレーシング機能を導入できます。
拡張ライブラリ (PECL) の追加
パッケージの追加
環境変数の設定
独自の計装 (任意)
PECL を使用して OpenTelemetry 用の拡張ライブラリをインストールします。
その後、インストールした拡張を php.ini
に追加します。
Laravel や PDO用のパッケージを追加します。
このページではLaravelを例にするため opentelemetry-auto-laravel
を使用しています。SlimやSymfonyなど別のフレームワークを使用している場合、それぞれにあったパッケージを、以下のページから検索することができます。
パッケージのインストール後、以下の環境変数を設定するとデータがCollectorへ送信されるようになります。
これらの環境変数を、オートロードが開始する前に設定してください。
以上で、インストールが完了し、Collectorを通して、Mackerelにデータが送られるようになりました。
独自のSpanを追加することで、任意の範囲を計装することができます。
計装によって、変数の値や処理時間を記録することができるようになります。
具体的には、下のように startSpan
を使用すると計装が追加できます。
計装の方法は他にも用意されています。詳細はOpenTelemetryのドキュメントを参照してください。