Как понять, сколько запросов система обрабатывает в секунду? Как долго обрабатывает запрос? Какие очереди забиваются?

На эти вопросы вы можете ответить, если обложите ваше приложение метриками - счетчиками, таймерами и т.п., которые будут отправляться в какое-нибудь хранилище. А уже из него можно их читать, строить статистику, визуализировать и мастрячить дашборды. Или алерты, когда какая-то метрика отклоняется от нормы.

Вообще тема довольно широкая и "в минутку" ее тяжело уложить.

У нас в отделе для этих целей раньше использовалась ganglia + graphite, сейчас - TICK-stack. Серьезные ребята с нагрузкой побольше могут использовать Prometheus, если ближе к железу/сисадминству - то это Zabbix. Можно еще подобные шутки построить в elastic-стеке, а вообще штук для мониторинга - пруд пруди.

TICK-stack у нас с задачей справляется, хотя он довольно молод, еще не так стабилен, как хотелось бы и к нему есть претензии. Например, если в influx забился диск, он это честно обнаруживает и пишет в логи, но потом даже при свободном месте он ничего не делает и продолжает якобы нормально работать (вместо того, чтобы обнаружить новое место и продолжить писать). Приходится рестартить.