2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Azure App Service上のPHPにElastic APMを設定する方法

Last updated at Posted at 2022-08-22

Azure App Service上で動かすPHPにElastic APMを設定する機会がありましたので、注意点など含めて紹介しようと思います。

PHPでElastic APMを使う方法

公式ドキュメントはこちら
https://www.elastic.co/guide/en/apm/agent/php/1.x/intro.html
通常であればrpm/dpkg/apkでインストールするだけですが、今回はひと手間必要です。

Elastic Cloud用の設定

この部分はApp Serviceでなくても必要になる部分です。

Elastic Cloudにデータを送る設定をphp.iniに記載する必要があります。
https://www.elastic.co/guide/en/apm/agent/php/1.x/configuration.html#configure-ess

elastic_apm.server_url=APM_SERVER_URL
elastic_apm.secret_token=TOKEN
elastic_apm.service_name=SERVICE_NAME

elastic_apm.server_url:APMデータの送付先。Elastic APM Agentがデータを送信する先は、Elastic Cloudに自動的に建てられているElastic Agent(APM Agentとは別)です。

elastic_apm.secret_token:アクセストークン

elastic_apm.service_name:Elastic APMのUIに表示する文字列

これら3つの設定は以下から確認できます。
Fleet -> Agent Policies -> Elastic Cloud Agent Policies -> Elastic APM -> APM Agents -> PHP
スクリーンショット 2022-08-22 10.10.48.png

URL(elastic_apm.server_url)を変更したい場合はElastic Agentをどこかに展開すれば可能となります。
APM Agent -> 新しく展開したElastic Agent -> Elasticsearch
というデータの流れになります。

Token(elastic_apm.secret_token)を変更する場合は
Fleet -> Agent Policies -> Elastic Cloud Agent Policies -> Elastic APM -> Settings -> Agent Authorization -> Secret token
に設定した文字列を入力して右下の"Save Integration"をクリックします。
スクリーンショット 2022-08-18 14.52.22.png

elastic_apm.service_nameは自由です。好きな文字列を入れてください。

Kibana UIで確認した以下の部分をコピーしてphp.iniとして保存しておきましょう
(実際には<address>と<token>にはそれぞれの環境の文字列が入っています)

elastic_apm.server_url="https://<address>:443"
elastic_apm.secret_token="<token>"
elastic_apm.service_name="My service"

App Serviceのための設定

App Serviceでは/home以外はPersistentではないため、ライブラリ/ソースコード/iniファイルを手動で用意し、/home以下に配置して環境変数でその場所を指定します。

必要なもの

こちらからダウンロードします。
https://github.com/elastic/apm-agent-php
apm-agent-php.tarを持ってくるのが早いです。
2022年8月現在で最新は以下のものです。
https://github.com/elastic/apm-agent-php/releases/download/v1.5.2/apm-agent-php.tar

tarを展開してopt/elastic/apm-agent-phpに移動します。

extensions

PHPバージョンに応じて必要なファイルが異なります。例えばPHP8であればelastic_apm-20200930.soです。

src

src配下全て必要です

php.ini

先ほど作成したものに以下の2行を追加します

extension=/home/site/wwwroot/extensions/elastic_apm-20200930.so
elastic_apm.bootstrap_php_part_file=/home/site/wwwroot/src/bootstrap_php_part.php

extensionbootstrap_php_part_fileで指定しているフォルダ構成はapm-agent-php.tarを展開したそのままの構成をApp ServiceにDeployした場合の例です。
ディレクトリ構造を変える場合は適宜変更してください。

PHPファイル

表示できれば何でも良いので以下のようなものを用意しました。

index.php
<?php phpinfo(); ?>

Deployment準備

ZIPでアップロードするかGitHubを使用するかで少し方法が異なります。

ZIPでアップロードの場合

extensions,src,php.ini,index.phpをまとめてZIPに固めます。
zip -r php.zip .

GitHubを使用する場合

上記をまとめてGitHubにPushしておきましょう。

App Service 作成

ここはElastic向けのものはありませんので詳細は省きます。
こんな感じで作成すればよいでしょう。
スクリーンショット 2022-08-17 14.28.56.png

iniファイル読み込みディレクトリ設定

そのままだと上記で設定したphp.iniを読み込んでもらえません。
こちらのサイトにiniファイルを読み込むディレクトリの設定方法が記載してあります。
https://docs.microsoft.com/ja-jp/azure/app-service/configure-language-php?pivots=platform-linux

UIから行う場合は以下のように設定->構成->新しいアプリケーション設定に入力します。
これにより/home/site/wwwrootにあるiniファイルを読み込んでくれます。
スクリーンショット 2022-08-17 14.36.10.png

Deploy

どの方法を使うにせよ展開先は/home/site/wwwrootです。

ZIPでのDeploy

ZIPファイルをアップロードします。こちらはUIから行えず先程のZIPファイルのあるローカル環境から行います。
ローカル環境にはAzure CLIをインストールしておきます。
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli

下記コマンドを実行すると自動的にZIPがアップロードされ/home/site/wwwrootに展開されます。
az webapp deploy --resource-group <group name> --name <app name> --src-path php.zip

GitHubからのDeploy

デプロイセンターの設定からソースとしてGitHubを選んでも同様に出来ます。
スクリーンショット 2022-08-17 14.59.51.png

確認

サイトにアクセス

App Serviceの概要へ戻りURLの横にあるリンクをクリックしましょう。
https://<app name>.azurewebsites.net
となっているはずです。
このように表示されればOKです。
スクリーンショット 2022-08-17 15.05.57.png

Elastic APMでの確認

Elastic CloudのKibanaにアクセスしてObservability -> APMをクリックします。
以下のようにName部分にphp.inielastic_apm.service_nameで設定した値(今回だとphp8)が表示されていれば成功です。
スクリーンショット 2022-08-17 15.07.24.png

まとめ

Elastic APMは様々な環境で簡単にAPMデータを取得することが可能です。ぜひお試しください。

Elastic Cloud 無料トライアル

こちらからElastic Cloudの14日間無料トライアルを是非お試しください
Elastic Cloud 無料トライアル

手順は下記リンクをご参照ください
Elastic Cloud について 〜実際にデプロイメントを作ってみよう〜

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?