Перейти к содержимому

PHP

Агент мониторинга PHP от New Relic состоит из двух взаимодействующих частей:

  1. Расширение для PHP, которое занимается сбором метрик и трейсов.
  2. Прокси-демон (newrelic-daemon), который отвечает за взаимодействие с бэкендом мониторинга (в данном случае — с GMONIT).

Ниже собрана полная инструкция по установке и настройке данного агента в различных окружениях (Ubuntu/Debian, CentOS, контейнерные среды). Если требуется дополнительная информация, обращайтесь к официальной документации.

Независимо от окружения, в файле newrelic.ini (обычно располагается в /etc/php/7.x/mods-available/newrelic.ini/etc/php.d/newrelic.ini или /etc/php/.../conf.d/newrelic.iniобязательно должны быть прописаны (или эквивалентно заданы в переменных окружения) следующие параметры:

newrelic.license = 0123456789-123456789-123456789-123456789 #Ключ(заглушка, не меняем)
newrelic.daemon.collector_host = gmonit-collector.<DOMAIN>.ru #Домен коллектора GMONIT
newrelic.appname = "MY_AWESOME_APP" #Название приложения
newrelic.logfile = stdout #Логирование агента в stdout

Если вы настраиваете агент через переменные окружения, то эквивалентом будут:export NEW_RELIC_LICENSE_KEY=0123456789-123456789-123456789-123456789 #Ключ(заглушка, не меняем) export NEW_RELIC_HOST=gmonit-collector.name.ru #Домен коллектора GMONIT export NEW_RELIC_APP_NAME=“MY_AWESOME_APP” #Название приложения export NEW_RELIC_LOG=stdout #Логирование агента в stdout

1. Установка агента New Relic для PHP на Ubuntu и Debian

Заголовок раздела «1. Установка агента New Relic для PHP на Ubuntu и Debian»
  1. Добавление репозитория New Relic:echo ‘deb http://apt.newrelic.com/debian/ newrelic non-free’ | sudo tee /etc/apt/sources.list.d/newrelic.list
  2. Обновление списка пакетов:sudo apt-get update
  3. Установка PHP-агента:sudo apt-get install newrelic-php5Если вы используете вместо glibc библиотеку musl libc (например, в Alpine Linux), необходимо скачать и установить актуальную версию агента с поддержкой musl по ссылке.
  4. Настройка конфигурации агента:
    • Откройте файл newrelic.ini и пропишите обязательные параметры, указанные выше в разделе «Обязательные настройки агента».
    • Если используются самоподписанные сертификаты (или Let’s Encrypt) для коллектора, необходимо явно указать это при конфигурации демона. Например, добавляя ключ к команде запуска newrelic-daemon:newrelic-daemon —cafile /etc/ssl/certs/ca-certificates.crtили в конфигурационном файле newrelic.cfg:ssl_ca_bundle = /etc/ssl/certs/ca-certificates.crt
  5. Перезапуск веб-сервера:# Для Apache sudo systemctl restart apache2

sudo systemctl restart nginx sudo systemctl restart php-fpm 6. Проверка работы Сгенерируйте трафик к вашему приложению и проверьте метрики в интерфейсе GMONIT.

  1. Добавление репозитория New Relic:
  2. Установка PHP-агента:sudo yum install newrelic-php5
  3. Запуск скрипта установки:sudo newrelic-install install
  4. Настройка конфигурации агента:
    • Откройте файл newrelic.ini и пропишите обязательные параметры, указанные выше в разделе «Обязательные настройки агента».
    • Если используются самоподписанные сертификаты (или Let’s Encrypt), укажите путь к сертификату в конфигурации newrelic-daemon или newrelic.cfg (аналогично Ubuntu/Debian).
  5. Перезапуск веб-сервера:# Для Apache sudo systemctl restart httpd

sudo systemctl restart nginx sudo systemctl restart php-fpm 6. Проверка работы Сгенерируйте трафик к вашему приложению и проверьте метрики в интерфейсе GMONIT.

3. Установка агента New Relic для PHP в контейнерных средах (Docker и др.)

Заголовок раздела «3. Установка агента New Relic для PHP в контейнерных средах (Docker и др.)»
  1. Выбор способа установки:
    • Установка в разных контейнерах (рекомендуется):
      1. Настройте контейнер для демона: Используйте образ newrelic/php-daemon из Docker Hub или аналогичный подход, где newrelic-daemon работает в отдельном контейнере.
      2. Настройте контейнер для PHP-агента: Установите PHP и агент в контейнере:sudo apt-get install newrelic-php5 sudo newrelic-install installЗатем пропишите переменные окружения (или внесите настройки в newrelic.ini) при запуске контейнера или в Dockerfile. Обязательные параметры описаны в начале инструкции.
    • Установка в одном контейнере:
      1. Установите PHP и агент:sudo apt-get install newrelic-php5 sudo newrelic-install install
      2. Настройте параметры в newrelic.ini или через переменные окружения. Не забудьте добавить обязательные:newrelic.license = 0123456789-123456789-123456789-123456789 #Ключ(заглушка, не меняем) newrelic.daemon.collector_host = gmonit-collector..ru #Домен коллектора GMONIT newrelic.appname = “MY_AWESOME_APP” #Название приложения newrelic.logfile = stdout #Логирование агента в stdout
      3. При использовании самоподписанных сертификатов (или Let’s Encrypt) обязательно укажите путь к сертификату в конфигурации демона (либо с помощью ключа --cafile, либо через ssl_ca_bundle в newrelic.cfg).
  2. Дополнительные действия для Alpine Linux Если используется musl libc (в Alpine Linux), скачайте и установите версию агента для musl по ссылке.
  3. Перезапуск веб-сервера Убедитесь, что выбранный веб-сервер (Apache, NGINX, PHP-FPM) перезапущен после установки:sudo systemctl restart apache2 || sudo systemctl restart httpd sudo systemctl restart nginx sudo systemctl restart php-fpm
  4. Проверка работы Сгенерируйте трафик к вашему приложению и проверьте метрики в интерфейсе GMONIT.
  • Подробная документация по установке и настройке агента для PHP: PHP Agent Configuration — New Relic Documentation
  • Если требуются более тонкие настройки агента и прокси-демона (newrelic-daemon), в том числе указание кастомного cafile, использование дополнительных сетевых параметров и т. д., обратитесь к разделу конфигурации демона.

Для добавления пользовательских параметров в текущую транзакцию PHP можно использовать функцию newrelic_add_custom_parameter. Это позволяет добавлять дополнительные данные, такие как идентификаторы пользователей, чтобы они были доступны в трассировках транзакций и в событиях Transaction.

Пример использования функции:

if (extension_loaded('newrelic')) {
$user_id = 12345; // уникальный идентификатор пользователя
newrelic_add_custom_parameter('user_id', $user_id);
}
newrelic_add_custom_parameter(string $key, scalar $value)
  • key — имя пользовательского параметра (до 255 символов). Например, user_idclient_name.
  • value — значение, связанное с этим параметром. Допустимы скалярные типы (строки, числа, логические значения). Для float значений NaNInfinitydenorm или отрицательного нуля поведение функции не определено.

Вы можете использовать эту функцию для добавления данных, таких как:

  • Идентификаторы пользователей
  • Метки запросов
  • Прочие специфичные данные

Эти параметры будут видны в трассировках транзакций в интерфейсе GMONIT.

Убедитесь, что расширение New Relic для PHP загружено в вашу среду (проверьте через phpinfo() или php -m).

Подробности можно найти в официальной документации New Relic

Для правильной идентификации и отслеживания транзакций в мониторинге вы можете задавать имена транзакций с помощью функции newrelic_name_transaction. Это позволяет организовать мониторинг и избежать избыточного числа уникальных имён транзакций, которые могут затруднить анализ данных.

Пример: Задание имени транзакции для Uri/index.php

Заголовок раздела «Пример: Задание имени транзакции для Uri/index.php»

Для задания имени транзакции добавьте следующий сниппет в код обработчика запросов (вместо example подставьте имя вашей функции, вызываемой при обращении к Uri/index.php):

function example() {
if (extension_loaded('newrelic')) { // Проверка, что PHP-агент доступен
newrelic_name_transaction("Custom/index/*");
}
// ... здесь остальной код функции
}

Таким образом, текущая транзакция станет называться Custom/index/.

Примечание: Уникальных имён транзакций не должно быть слишком много, и они не должны содержать идентификаторы.

Примеры:

  • Custom/index/ — хорошо.
  • Custom/index/ + product.id — нельзя.

Этот код безопасен и не вызовет ошибки при отключении агента, так как вызов функции обёрнут в проверку if (extension_loaded('newrelic')).

Подробности можно найти в официальной документации New Relic

Пример: Добавление имени транзакции для конкретного URI

Заголовок раздела «Пример: Добавление имени транзакции для конкретного URI»

Для добавления транзакции, например для URI https://test.ru/doc/estimation следуйте этим шагам:

  1. В коде обработчика запросов для нужного URI добавьте следующий сниппет:function example() { if (extension_loaded(‘newrelic’)) { // Проверка, что PHP-агент доступен newrelic_name_transaction(“Custom/estimation”); } // … здесь остальной код функции }
  2. Таким образом, текущая транзакция станет называться Custom/estimation.

Примечание: Как и в предыдущем примере, уникальных имён транзакций не должно быть слишком много, и они не должны содержать идентификаторы.

Примеры:

  • Custom/estimation — хорошо.
  • Custom/estimation + product.id — нельзя.

Этот код безопасен и не вызовет ошибки при отключении агента, так как вызов функции обёрнут в проверку if (extension_loaded('newrelic')).

Подробности можно найти в официальной документации New Relic