APM WinMachine – это наукоемкий программный продукт, созданный на базе современных инженерных методик проектирования, численных методов механики, математики и моделирования, гармонично сочетающий опыт поколений конструкторов, инженеров-механиков и других специалистов с возможностями компьютерной техники и технологии.
Система реализована по модульному принципу. Каждый модуль может работать как отдельно, так и в составе определенного комплекса, таким образом, пользователь выбирает оптимальный вариант поставки программного продукта.
Простота работы с APM WinMachine дает возможность существенно повысить производительность труда конструкторских отделов и снизить требования, предъявляемые к квалификации работающих с системой сотрудников, без ущерба для предприятия.
Адаптация и доработка поставляемых программ под требования заказчика, обучение персонала заказчика работе с поставляемым программным обеспечением, а также постоянная техническая поддержка пользователей и предоставление им специализированных материалов по работе с APM WinMachine выводят процесс работы Разработчик – Пользователь на качественно новый уровень.
Вебинар: Возможности APM WinMachine
Возможности интеграции со сторонними программными продуктами через обменные форматы позволяют использовать ранее созданную графическую информацию для получения расчетных моделей, что существенно уменьшает временные затраты в процессе проектирования.
Имеющиеся в системе APM WinMachine возможности инструментального обеспечения делают возможным решение обширного круга прикладных задач, таких как анализ напряженно-деформированного состояния (с помощью метода конечных элементов) трехмерных объектов любой сложности при произвольном закреплении, статическом или динамическом нагружении.
Компания АПМ в ходит в консорциум отечественных разработчиков инженерного ПО:
Источник: ascon.ru
Что такое мониторинг производительности приложений (APM)?
Что такое мониторинг производительности приложений (APM)?
Мониторинг производительности приложений (APM) – это процесс использования программных инструментов и телеметрических данных для отслеживания производительности критически важных для бизнеса приложений. Компании хотят гарантировать, что они поддерживают ожидаемые уровни обслуживания и что клиенты получают положительный опыт использования приложений. Они используют инструменты APM для предоставления данных в режиме реального времени и анализа производительности приложений. Затем ИТ-команды, специалисты DevOps и инженеры по надежности сайтов могут быстро выявлять и устранять неполадки в приложениях.
Почему важен мониторинг производительности приложений?
Эффективный мониторинг производительности приложений (APM) является неотъемлемой частью успеха предприятия. Благодаря ему ваши цифровые сервисы работают бесперебойно, с минимальным временем простоя, а ваши клиенты неизменно получают хорошие результаты.
APM 101 — 5 вещей, которые необходимо знать всем
Мониторинг производительности приложений дает предприятиям ряд преимуществ.
Удовлетворение потребностей клиентов
APM – это эффективный инструмент для точного определения мест возникновения проблем в приложении. Он также выделяет общие проблемы в процессе цифрового взаимодействия с клиентами. Таким образом, вы можете улучшить качество обслуживания клиентов, определив области, которые обеспечивают максимальную ценность для ваших конечных пользователей. APM также эффективен в определении того, являются ли изменения полезными. Например, если компания внедряет новый бот для обслуживания клиентов, показатели APM могут измерить, сколько клиентов решили свой вопрос с помощью бота.
Быстрая диагностика
Всего несколько минут простоя могут стать причиной финансовых потерь или неудачных действий клиентов. APM может быстро диагностировать проблемы производительности приложений и направлять ИТ-команды непосредственно к проблеме. Такая быстрая диагностика сводит время простоя к минимуму. У технологических команд появляется больше времени на разработку новых приложений, а не на исправление существующих.
Сокращение эксплуатационных расходов
ИТ-команды используют инструменты APM для определения того, сколько ресурсов, инфраструктуры и вычислительной мощности необходимо для поддержания оптимальной работы приложений. Это позволяет свести эксплуатационные расходы к минимуму.
Эффективная разработка продуктов
Инструменты мониторинга производительности приложений могут быть частью процесса разработки продукта. Вы можете внедрить APM в тестовой или реальной среде и использовать инструменты APM для мониторинга и анализа синтетического трафика, выявления ограничений и ошибок. Команды разработчиков могут получить полезную информацию еще до запуска приложения и исправить ошибки, которые раньше стали бы очевидны только после запуска.
Сотрудничество в бизнесе
Вы можете обмениваться показателями и аналитическими данными между бизнес-подразделениями, что улучшает коммуникацию, устраняет разрозненность, повышает вовлеченность сотрудников и увеличивает производительность.
Какие показатели отслеживает мониторинг производительности приложений?
Мониторинг производительности приложений (APM) отслеживает общие показатели, такие как указанные далее.
Использование ЦПУ
Решения APM могут отслеживать такие показатели ЦПУ, как использование процессора и потребность в памяти. Таким образом ваше приложение получает вычислительные ресурсы, необходимые ему для адекватной работы.
Время отклика
Время отклика имеет большое значение для предприятий, поскольку ваши пользователи ожидают, что смогут получить доступ к сервисам без задержек. Решения APM измеряют время отклика по отношению к приемлемой базовой производительности и предупреждают вас, если время отклика падает ниже порогового значения.
Количество ошибок
Программное обеспечение APM осуществляет мониторинг приложений для регистрации и составления отчетов о количестве ошибок. В качестве примера ошибки можно привести ситуацию, когда веб-запрос завершается или запрос к базе данных не выполняется. APM будет выдавать предупреждения, когда уровень ошибок превышает заданные параметры, например, когда 5 % из последних 50 запросов привели к ошибке.
Отслеживание транзакций
Отслеживание транзакций в APM позволяет получить точную картину отдельных транзакций, выполняемых в приложении. Информация, полученная при отслеживании транзакций, содержит доступные вызовы функций, внешние вызовы и вызовы базы данных. Сервис отслеживает запрос на транзакцию от начала до конца.
Инстансы
Решение APM может отслеживать и сообщать, сколько инстансов серверов или приложений запущено в ваших приложениях, а также предупреждать вас о необходимости увеличения или уменьшения масштаба для удовлетворения спроса пользователей.
Запросы
Программное обеспечение APM отслеживает, сколько пользовательских запросов получает ваше приложение. Отслеживая трафик, программное обеспечение может отправлять предупреждения, если обнаружит какие-либо аномалии. Например, система может предупредить вас о неожиданном увеличении количества запросов, большом количестве запросов от одного и того же пользователя или необычно низком количестве запросов.
Время безотказной работы
Время безотказной работы критически важно для предприятий, предоставляющих онлайн-сервисы. Многие соглашения об уровне обслуживания (SLA) допускают лишь определенный процент простоя в заранее установленные периоды. APM отслеживает доступность приложений и сравнивает уровни с согласованными поставщиком сервиса и клиентом.
Каковы примеры использования мониторинга производительности приложений?
Ниже мы приведем несколько примеров использования мониторинга производительности приложений (APM).
Мониторинг реальных пользователей
Мониторинг реальных пользователей, или мониторинг работы конечного пользователя, – это сбор и анализ пользовательских данных для построения представления об уровне производительности приложения. Установив базовый уровень приемлемой производительности, вы сможете точно предсказать, когда приложение столкнется с проблемами. Например, если количество клиентов, испытывающих проблемы при попытке оформить заказ, превышает пороговое значение, APM отправляет предупреждение соответствующим командам.
Вы можете осуществлять мониторинг пользователей двумя способами:
- Синтетический мониторинг имитирует поведение пользователя для выявления проблем до выпуска приложения в производство.
- Мониторинг без использования агентов анализирует сетевой трафик без необходимости установки программных агентов на контролируемые приложения.
Профилирование транзакций, определяемое пользователем
Вы можете использовать решения APM для воссоздания обычных взаимодействий пользователей с приложениями. Так вы сможете лучше понять условия, при которых возникают проблемы с вашими цифровыми сервисами. ИТ-команды обычно используют профилирование транзакций, определяемых пользователем, для устранения неполадок в приложениях и решения общих проблем пользователей.
Мониторинг компонентов
Мониторинг компонентов, или глубокий мониторинг компонентов приложений, всесторонне отслеживает всю ИТ-инфраструктуру. Осуществляется мониторинг и анализ полной производительности приложения. Контролируемые ресурсы включают использование памяти, серверов, загрузку процессора и сетевых компонентов.
Мониторинг инфраструктуры
Инструменты APM можно использовать для сбора данных из ИТ-инфраструктуры, таких как серверы (мониторинг серверов), контейнеры (мониторинг контейнеров), базы данных (мониторинг баз данных), виртуальные машины (мониторинг виртуальных машин) и другие внутренние системы. Это делается для обнаружения проблем с производительностью и поиска первопричины ошибок приложения.
Аналитика
Эффективные APM предоставляют данные для аналитики, которые предприятия могут использовать для исправления или улучшения своих приложений. Некоторые инструменты APM используют алгоритмы искусственного интеллекта и машинного обучения (ИИ/МО) для прогнозного анализа, диагностики основных причин ошибок и связывания сложных проблем производительности приложений.
Мониторинг Соглашений об уровне обслуживания (SLA)
Соглашения об уровне обслуживания (SLA) имеют решающее значение для контракта между поставщиком ИТ-услуг и клиентом. Они устанавливают требуемые уровни обслуживания, согласованные обеими сторонами. С помощью APM можно отслеживать показатели эффективности в рамках SLA, что помогает поставщикам убедиться в том, что они соответствуют ожиданиям. В нем также выделены области, в которых поставщики услуг могут оказаться ниже стандартов, указанных в SLA.
В чем разница между мониторингом производительности приложений и наблюдаемостью?
Современные приложения со сложной архитектурой требуют большего, чем мониторинг производительности приложений (APM) для устранения неполадок. Благодаря наблюдаемости можно объединить информацию из всего ИТ-стека в центральную платформу, на которой можно действовать на основе бизнес-аналитики высокого уровня. APM – это подмножество наблюдаемости. В то время как APM дает совокупное представление о метриках, наблюдаемость использует несколько других инструментов, таких как распределенное отслеживание, чтобы получить полное понимание поведения приложения.
Как выбрать правильное решение для мониторинга производительности приложений для вашей организации?
Прежде чем интегрировать платформу мониторинга производительности приложений (APM) и ее набор инструментов в свою ИТ-среду, необходимо рассмотреть множество факторов.
Покупка
Убедитесь, что ваши команды понимают обоснование и личные преимущества внедрения APM. Вам необходимо найти решение, которое вписывается в существующие системы и процессы, удобные для вашей команды.
Возможности
Существует множество инструментов APM. Убедитесь, что внедряемая вами платформа APM имеет необходимые инструменты для ваших приложений и поддерживает ваш язык программирования.
Требования к стоимости
Внедрение APM может потребовать значительных вычислительных ресурсов, особенно если вы планируете контролировать несколько приложений. Убедитесь, что у вас есть необходимый бюджет на вычислительные ресурсы, а также на стоимость самой APM.
Личная ответственность
Подумайте, кто будет контролировать работу APM и управлять им. Какие команды будут отвечать за обслуживание и администрирование?
Как AWS может помочь в мониторинге производительности приложений?
Amazon CloudWatch – это сервис мониторинга и контроля, позволяющий непрерывно отслеживать цифровые возможности ваших конечных пользователей. Он также отслеживает приложения, работающие на AWS – в Эластичном вычислительном облаке Amazon (Amazon EC2), контейнерах и бессерверных системах, а также в локальных средах. CloudWatch собирает данные на каждом уровне стека производительности: от интерфейса до инфраструктуры.
Вы можете использовать Amazon CloudWatch ServiceLens для выявления и изоляции узких мест в производительности ваших приложений на основе сопоставленных метрик, журналов и трассировок. CloudWatch ServiceLens интегрирует CloudWatch с AWS X-Ray для обеспечения комплексного подхода к вашему приложению. Благодаря этому вы сможете точно определить узкие места в производительности и более эффективно выявлять пользователей, на которых это повлияло.
Вот примеры того, что можно делать с помощью CloudWatch:
- Настраивать предупреждения для адресов соглашения об уровне обслуживания (SLA) и цели уровня обслуживания (SLO), а также мониторинг рабочих процессов пользовательского интерфейса.
- Собирайте данные о производительности приложения на стороне клиента практически в режиме реального времени.
- Экспериментируйте с новыми возможностями, оценивайте их влияние на весь стек приложения, производительность и бизнес-метрики, а затем безопасно выпускайте обновления.
Начните работу с мониторингом производительности приложений (APM) на AWS, создав бесплатный аккаунт AWS сегодня.
Источник: aws.amazon.com
Elastic APM для PHP-разработчиков: Используем APM c Laravel и Lumen
APM расшифровывается как Application Performance Monitoring (мониторинг производительности приложений). Если на вашем пути встречается эта аббревиатура, то речь скорее всего идет о измерении производительность вашего приложения и ваших серверов. Как они справляются, сколько памяти они потребляют, где узкие места? И это далеко не все.
С помощью APM можно настроить специальные уведомления, которые будут оповещать вас, например, о том, что потребление памяти достигло очень высоких показателей или удаленный вызов занимает слишком много времени. Триггеры для подобных уведомлений могут опираться на довольно широкий набор показателей и событий. Но давайте не будем забегать вперед.
Немного истории
Когда я еще работал в Pathao, мы использовали New Relic. New Relic очень удобен. Чтобы начать с ним работу в PHP вам просто нужно установить его пакет и агент. И на этом все. Вы сразу же увидите всю необходимую информацию на дашборде New Relic, как только сервер начнет обслуживать запросы. Но моя нынешняя компания (Digital Healthcare Solutions, ранее известная как Telenor Health), предложила Elastic APM.
Поэтому мне пришлось разбираться, как он работает. До этого момент я уже как минимум 4 раза пробовал заставить себя освоить Elastic Search, но все безуспешно. Поэтому я искал доступные готовые пакеты. И я нашел кое-что. Это был очень хороший пакет, но под капотом он отправлял HTTP-запросы на сервер APM. Что на самом деле достаточно затратно.
И он не поддерживал APM Server 7.x.
Вот почему мне пришлось создать свой собственный пакет практически с нуля. В этой статье я собираюсь продемонстрировать вам, как можно использовать мой пакет с абсолютно любым PHP-кодом. Пакет уже достаточно просто использовать с Laravel или Lumen. Но вам не обязательно использовать что-либо из этого. Прелесть заключается в том, что вы можете использовать его как захотите.
Что такое Elastic APM?
Обратили ли вы внимание на изображение вначале статьи? Давайте ненадолго вернемся к нему. На этом изображении отражена основная структура того, как это все работает. Вам нужно установить APM-агент для вашего конкретного языка (APM-агенты до сих пор поддерживают не все языки, так что имейте это ввиду). Этот агент будет собирать данные о выполнении вашего кода.
Затем он будет отправлять их на APM-сервер. Далее серверы APM передают эти данные на сервер Elasticsearch, и вы сможете просмотреть эти данные в Kibana. Собственно, ничего сверхъестественного. Но я обнаружил, что APM Dashboard UI поставляется с XPack, а это означает, что вам придется немного раскошелиться.
Инсталляция
Elastic предоставляет APM-агента для PHP. Этот агент будет собирать данные с нашего сервера и передавать их на APM-сервер. Свое PHP-приложение я разместил в докер-контейнере. Докер-файл выглядит следующим образом:
FROM php:7.4-fpm RUN apt-get update RUN apt-get install -y libpq-dev libpng-dev curl nano unzip zip git jq supervisor RUN docker-php-ext-install pdo_pgsql RUN pecl install -o -f redis RUN docker-php-ext-enable redis RUN curl -sS https://getcomposer.org/installer | php — —install-dir=/usr/local/bin —filename=composer RUN apt-get -y update apt-get -y install build-essential autoconf libcurl4-openssl-dev —no-install-recommends RUN mkdir -p /home/apm-agent cd /home/apm-agent git clone https://github.com/elastic/apm-agent-php.git apm cd apm/src/ext /usr/local/bin/phpize ./configure —enable-elastic_apm make clean make make install COPY ./elastic_apm.ini /usr/local/etc/php/conf.d/elastic_apm.ini RUN mkdir /app WORKDIR /app CMD [«php», «-S», «0.0.0.0:80», «index.php»]
Докер-файл для PHP-контейнера. Игнорируйте раздел CMD.
В приведенном выше фрагменте вам стоит обратить внимание на команды в строке 16. Мы клонируем git-репозиторий APM, а затем настраиваем его и устанавливаем в наш контейнер.
В строке 22 мы копируем .ini файл. Вот этот .ini файл:
extension=elastic_apm.so elastic_apm.bootstrap_php_part_file=/home/apm-agent/apm/src/bootstrap_php_part.php elastic_apm.enabled=true elastic_apm.server_url=»http://docker.for.mac.localhost:8200″ ; elastic_apm.secret_token= elastic_apm.service_name=»PHP APM Test Service» ; service_version= $ elastic_apm.log_level=DEBUG ; Available Log levels ; OFF | CRITICAL | ERROR | WARNING | NOTICE | INFO | DEBUG | TRACE
В файле elastic_apm.ini строка 2 указывает путь к нашему файлу клонированного git-репозитория – src/bootstrap_php_part.php . Строка 4 указывает URL APM-сервера. Если вы не используете докер, вы можете сделать git clone репозитория, а затем просто инсталлировать его. Дальше мы интегрируем с php расширение. Это все, что касается установки APM-агента.
Прежде чем мы углубимся в сам пакет, вы можете получить некоторые сведения об основных понятиях из документации по агенту.
По сути все сводится всего к двум:
- Транзакция: Когда ваше приложение работает, оно генерирует транзакции. Каждый запрос считается транзакцией. Каждая транзакция имеет имя и тип.
- Спан: Когда вы выполняете какой-ниубдь код, информация, с которой вы имеете дело, может быть отправлена на сервер в виде спана. Спан (span) — это запись операции, выполняемая одним фрагментом кода. Запрос к базе данных может быть спаном, точно так же как и информация HTTP-запроса.
Сам пакет и работа с ним
Итак, сначала давайте разберемся, как интегрировать пакет с PHP. Затем мы рассмотрим, как он интегрируется с Laravel/Lumen. Сам агент требует PHP версии ≥ 7.2, вот почему минимальное требование для пакета – PHP 7.2.
Инсталляция
composer require anik/elastic-apm-php
Интеграция с PHP
- Класс AnikElasticApmAgent является публичной точкой доступа для всех взаимодействий. Класс Agent не может быть инстанцирован – он представляет собой синглтон. То есть, всякий раз, когда вам нужно как-либо с ним взаимодействовать, вы будете вызывать Agent::instance() . Вы получите один и тот же объект, откуда бы вы его не вызывали, на протяжении всего жизненного цикла запроса.
- Чтобы задать транзакции имя и тип вам нужно будет инстанцировать объект AnikElasticApmTransaction с параметрами name и type. После успешного инстанцирования объекта вам нужно будет передать его в класс Agent посредством его метода setTransaction .
Agent::instance()->setTransaction(new Transaction(‘name’, ‘type’));
- Если вы хотите отправить данные этой транзакции на сервер, вам придется использовать спан. Чтобы можно было создать новый спан, должен быть реализован интерфейс AnikElasticApmContractsSpanContract , в котором можно найти такие методы, как getSpanData() , getName() , getType() , getSubType() . Но если вы используете трейт AnikElasticApmSpansSpanEmptyFieldsTrait , тогда вы можете опустить методы getAction() и getLabels() . Если же вы хотите отправлять данные на свой APM-сервер, то вам не помешало бы реализовать эти методы. Я не буду здесь останавливаться на возвращаемых значениях методов, вы можете найти эту информацию в документации по агенту приведенной выше.
- Когда реализация класса Span будет готова, вы сможете добавлять спан следующим образом:
Agent::instance()->addSpan(» >implementedSpanObject);
- Наконец, когда вы закончите добавлять спаны, то, прежде чем возвращать результат, вам нужно будет отправить все эти транзакции и спаны в APM-агент. Для этого используйте
Agent::instance()->capture();
Приведенный выше метод обрабатывает все транзакции и спаны, а затем передает их агенту, после чего агент берет на себя заботу об отправке их на сервер.
Примечание: Если вы хотите делать все самостоятельно, вы можете использовать Agent::getElasticApmTransaction() , чтобы получить текущую транзакцию агента, или Agent::newApmTransaction($name, $type) , чтобы создать новую транзакцию. Обязательно вызывайте метод end() , если вы создали новый объект Transaction . Или, если вы хотите поместить спаны, которые вы добавляете, в новую транзакцию, вы можете использовать метод Agent::captureOnNew() , чтобы отправить их с новой транзакцией. Вам не нужно вызывать end , когда вы используете captureOnNew . Если вам вдруг понадобиться получить свежий инстанс Agent , вы можете сначала вызвать Agent::reset() , а потом Agent::instance() , но Agent::reinstance() будет делать то же самое. Наконец, имейте в виду, что если вы вызываете любой из методов capture*() , то с ним должен быть предоставлен объект Transaction . Без объекта Transaction вы получите исключение AnikElasticApmExceptionsRequirementMissingException .
На этом мы закончили с интеграцией с PHP.
Интеграция с Laravel/Lumen
Для Laravel:
- Пакет уже поддерживает функцию обнаружения пакетов. Но все же добавьте AnikElasticApmProvidersElasticApmServiceProvider::class в массив providers вашего config/app.php.
- Добавьте AnikElasticApmFacadesAgent::class в массив facade вашего config/app.php .
- Запустите php artisan vendor:publish , чтобы опубликовать файл конфигурации.
Для Lumen:
- Вам не нужно возиться с Facade, чтобы использовать этот пакет.
- Скопируйте elastic-apm.php из каталога src/config пакета в каталог config вашего lumen-проекта.
// в ваш файл bootstrap/app.php. use AnikElasticApmProvidersElasticApmServiceProvider; $app->register(ElasticApmServiceProvider::class); $app->configure(‘elastic-apm’);
Вы также можете смело изменять файл конфигурации в соответствии с вашими требованиями.
Отслеживание ошибок приложений
Если вы хотите отправить данные об ошибке на ваш APM-сервер, то
- Для Laravel, в bootstrap/app.php
// ЭТОТ РАЗДЕЛ СЛЕДУЕТ ЗАКОММЕНТИРОВАТЬ /** * $app->singleton( * IlluminateContractsDebugExceptionHandler::class, * AppExceptionsHandler::class * ); */ // ИСПОЛЬЗУЙТЕ ЭТОТ РАЗДЕЛ use IlluminateContractsDebugExceptionHandler; use AnikElasticApmExceptionsHandler; use AppExceptionsHandler as AppExceptionHandler; use SymfonyComponentHttpKernelExceptionNotFoundHttpException; use GuzzleHttpExceptionConnectException; $app->singleton(ExceptionHandler::class, function ($app) < return new Handler(new AppExceptionHandler($app), [ // NotFoundHttpException::class, //(1) // ConnectException::class, //(2) ]); >);
AnikElasticApmExceptionsHandler принимает массив классов исключений в качестве второго параметра (который не будет отправляться на APM-сервер). По умолчанию ошибки NotFoundHttpException не отправляются на APM-сервер. Строчки, помеченные (1) и (2) были закомментированы, чтобы указать вам на это.
Если ваше приложение сталкивается с ошибкой, которая была успешно перехвачена обработчиком исключений (Exception Handler), и при этом уже настроены транзакции, то APM-сервер гарантированно получит стек-трейс ошибки. Поскольку PHP-агент не предоставляет API для отправки стека-трейса, ваш трейс может быть обрезан обработчиком исключений.
Отслеживание запросов и ответов вашего приложения
Для отслеживания количества запросов, которые обслуживает ваше приложение, кодов состояния и времени, затраченного на их обработку, у нас есть специальное встроенное middleware.
- Для Laravel, в вашем классе app/Http/Kernel.php :
- Для Lumen, в вашем файле bootstrap/app.php :
use AnikElasticApmMiddlewareRecordForegroundTransaction; $app->middleware([ // . RecordForegroundTransaction::class, // . ]);
Имя транзакции для обрабатываемых запросов подчиняется следующей логике:
Отслеживание удаленных HTTP-вызовов
Если вы используете Guzzle, вы можете использовать встроенное middleware для Guzzle.
use GuzzleHttpHandlerStack; use GuzzleHttpClient; use AnikElasticApmMiddlewareRecordHttpTransaction; $stack = HandlerStack::create(); $stack->push(new RecordHttpTransaction(), ‘whatever-you-wish’); $client = new Client([ ‘base_uri’ => ‘https://httpbin.org’, ‘timeout’ => 10.0, ‘handler’ => $stack, ]); $client->request(‘GET’, ‘/’);
Отслеживание работника очереди
Чтобы отслеживать задачи (jobs), вам необходимо использовать встроенное (Job) middleware всякий раз, когда вы диспатчите новую задачу. Вы можете использовать любое из приведенных ниже:
use AnikElasticApmMiddlewareRecordBackgroundTransaction; use IlluminateContractsQueueShouldQueue; class TestSimpleJob implements ShouldQueue < public function middleware () < return [ new RecordBackgroundTransaction()]; >public function handle () < app(‘log’)->info(‘job is handled’); > >
- В противном случае, при диспатче задачи:
use AnikElasticApmMiddlewareRecordBackgroundTransaction as JM; use AppJobsExampleJob; dispatch((new ExampleJob())->through([new JM()]);
Примечание: Если вы используете php artisan queue:work , то это значит, что задача выполняется достаточно долго. Именно поэтому будет отправлена только одна транзакция. Если не создается процесс, то вы не получите ни транзакции, ни спана. С другой стороны, если вы используете queue:listen , т.е.: php artisan queue:listen – будет использован новый процесс для каждой задачи, поэтому вы получите новую транзакцию и спаны для этой транзакции для каждой задачи.
Отслеживание выполнения запроса
Выполнение запроса обрабатывается автоматически и передается на APM-сервер.
Вот и все. Надеюсь, вам понравилось. Не забудьте поставить этому проекту звезду)
Отслеживание выполнения Redis-запросов
Выполнение Redis-запроса не обрабатывается автоматически. Если вы используете Redis в качестве драйвера кэширования (Cache Driver), вам нужно явно указать, что вы хотите включить Redis Query Logging, добавив ELASTIC_APM_SEND_REDIS=true в ваш .env файл.
А также в целях саморазвития, вот вам docker-compose.yml файл для ES, Kibana и APM (Не используйте в продакшене!)
Источник: habr.com