Моніторинг продуктивності програми (Application Performance Monitoring або APM)
Драйвер MongoDB містить API передплатника подій, який дозволяє програмам відстежувати команди та внутрішню активність, що стосується » Специфікації виявлення та моніторингу серверів. У цьому посібнику буде продемонстровано моніторинг команд за допомогою інтерфейсу MongoDB\Driver\Monitoring\CommandSubscriber
Інтерфейс MongoDB\Driver\Monitoring\CommandSubscriberопределяет три метода:commandStarted
commandSucceeded
иcommandFailed
. Кожен із них приймає один параметр event
класу, що відповідає потрібній події. Наприклад, commandSucceeded
принимает аргумент$event
классаMongoDB\Driver\Monitoring\CommandSucceededEvent
У цьому посібнику ви реалізуємо передплатника, який створює список профілювань усіх запитів та середнього часу їх виконання.
Клас передплатник Scaffolding
Ми почнемо з шаблону для нашого передплатника:
Loading...
Реєстрація передплатника
Як тільки об'єкт передплатник створено, необхідно його зареєструвати в драйвері системи моніторингу. Реєстрація здійснюється методом MongoDB\Driver\Monitoring\addSubscriber() або MongoDB\Driver\Manager::addSubscriber() для реєстрації передплатника глобально або за допомогою певного класу Manager відповідно.
Loading...
Реалізуємо логіку
Тепер займемося реалізацією логіки класу передплатника. Для порівняння двох подій, що належать до успішно виконаної команди (commandStarted and commandSucceeded), кожен об'єкт події надає поле requestId
Для запису середнього часу виконання запиту ми почнемо з відстеження команди find
у події підтримуєтьсяпідпис. Ми будемо додавати елемент до масиву pendingCommands
з індексом відповідним requestId
та значенням, що відповідає запиту.
Коли ми отримаємо відповідну подію commandSucceeded з відповідним requestId
, ми додамо час виконання (з durationMicros
) до загального часу та збільшимо лічильник операцій.
Якщо ми отримаємо подію commandFailed, ми просто видалимо відповідний запис з pendingCommands
Loading...