У меня есть базы данных PostgreSQL. Я хочу проверить живую производительность СУБД.
Я хочу построить график пропускной способности, который будет обновляться каждые 10 секунд.
Как я могу это сделать? Любые предложения по MySQL также будут полезны.
Команда mysql show status like 'Queries'
дает общее количество запросов. Вы можете периодически запускать сценарий, который захватывает это значение и вычисляет частоту запросов для определенного временного интервала, используя разницу.
т.е. если вы запускаете сценарий каждую минуту и получаете изменение общего количества запросов для каждого запуска и делите его на 60, вы получите приблизительную оценку скорости запросов в секунду.
В качестве примера эта команда оболочки просто выдаст значение поля «Запросы». mysql -e "show status like 'Queries'\G" | sed 1,2d | cut -d: -f2
Взгляните на таблицы статистики postgres.
Чтобы получить общее количество коммитов, используйте запрос типа SELECT SUM(xact_commit) FROM pg_stat_database
- этот запрос вернет общее количество успешных коммитов для всех баз данных с момента запуска сервера. Выполнение этого запроса каждые N минут / секунд позволит вам нарисовать красивый график (вычитание предыдущего значения из текущего даст вам количество коммитов, завершенных за N минут).
Я также предлагаю вам использовать для этого какую-нибудь систему мониторинга, и это может быть полезно для других целей. Лично я использую zabbix и поддерживаю небольшую коллекцию шаблонов и пользовательских скриптов, что позволяет мне видеть что-то вроде этого:
Приложение для мониторинга, такое как Munin или Nagios, может удовлетворить ваши потребности.
Munin использует RRDTool и может собирать и отображать статистику из различных источников «из коробки», среди которых есть статистика MySQL (предположительно также Postgresql), такая как пропускная способность.
Nagios - это полноценное приложение для мониторинга сети, но оно также может собирать данные о производительности с определенной конфигурацией.