Моніторинг продуктивності програми (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...