为 PHP 设置 New Relic APM

有很多不同的 APM 工具可用,但在本书中,我们将只专注于使用 New Relic

New Relic 提供了很多性能监控工具,但在本书中,我们将专注于监控我们的 PHP 应用程序,以及它运行的基础设施。

在本节中,我们将在 EC2 实例中安装和配置 New Relic PHP 代理,以便我们可以开始收集 PHP 和服务器数据。

创建 New Relic 帐户和许可证密钥

在 EC2 实例中安装 New Relic 代理之前,您首先需要一个免费的 New Relic 账户。您可以在 https://newrelic.com/signup 注册,创建一个免费账户。在稍后的安装过程中,您将需要许可证密钥。

许可证密钥可在管理仪表板下的 New Relic API keys 页面找到:

image 2023 10 24 18 19 51 386
Figure 1. Figure 11.1 – License key

您可以从此页面复制许可证密钥,并在后续步骤中使用它来设置代理。

在 PHP 8 容器中安装 New Relic 代理

要安装 PHP 代理,我们需要连接到用于为应用程序提供服务的 AWS EC2 实例。

使用 SSHAWS EC2 Instance Connect Web 应用程序连接到 EC2 实例。

进入实例后,我们将在容器内安装代理。这可以是部署自动化的一部分,但在本书中,我们将手动安装它。您可以运行以下命令来连接到 PHP 容器:

docker exec -it docker-server-web-1 /bin/bash

进入容器后,运行以下命令来安装 PHP 代理:

curl -L "https://download.newrelic.com/php_agent/release/
newrelic-php5-10.2.0.314-linux.tar.gz" | tar -C /tmp -zx
export NR_INSTALL_USE_CP_NOT_LN=1 /tmp/newrelic-php5-*/newrelic-install install

运行这些命令后,系统将提示您输入 New Relic 许可证密钥。粘贴 New Relic API 密钥页面中的许可证密钥,然后完成安装过程:

image 2023 10 24 18 22 46 613
Figure 2. Figure 11.2 – PHP Agent Installation result

安装完成后,您会发现在 /usr/local/etc/php/conf.d/newrelic.ini 中创建了一个新的 ini 文件。你可以手动修改该文件,设置自己喜欢的 PHP 应用程序名称,或者直接运行以下命令:

sed -i \
-e 's/newrelic.appname = "PHP Application"/newrelic.
appname = "NEWRELIC_TDDPHP"/' \
-e 's/;newrelic.daemon.app_connect_timeout =.*/newrelic.
daemon.app_connect_timeout=15s/' \
-e 's/;newrelic.daemon.start_timeout =.*/newrelic.daemon.
start_timeout=5s/' \
/usr/local/etc/php/conf.d/newrelic.ini

更新 newrelic.ini 文件后,通过运行以下命令重新启动 apache2

service apache2 restart

现在,New Relic PHP 代理已安装在为 Symfony 和 Behat 应用程序提供服务的 PHP 容器中。

接下来,我们将查看代理是否能向 New Relic 发送数据,并通过 New Relic 面板查看我们能获得哪些性能数据。