---
title: "PostgreSQL Monitoring and Schema Linting для Laravel з пакетом Vacuum"
url: https://laravelukraine.com/blog/postgresql-monitoring-and-schema-linting-dlia-laravel-z-paketom-vacuum
date: 2026-09-15
source: https://laravel-news.com/vacuum-laravel-postgresql-monitoring?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed%3A+laravelnews
---

# PostgreSQL Monitoring and Schema Linting для Laravel з пакетом Vacuum

**Vacuum** - це пакет для моніторингу PostgreSQL у Laravel-застосунках, створений [Rati Rukhadze](https://github.com/Heyosseus). Пакет зчитує статистику, яку PostgreSQL уже збирає у вбудованих view таких як `pg_stat_user_tables`, `pg_stat_activity` та `pg_stat_statements`, після чого складає список виявлених проблем разом із SQL-командами для їх виправлення.

## Основні можливості

Vacuum пропонує широкий набір інструментів для моніторингу та аналізу бази даних:

- **13 правил-радників (advisor rules)**: виявлення wraparound, bloat, dead tuples, невикористовуваних індексів, повільних запитів та інших проблем
- **Health score**: оцінка здоров'я бази даних за 100-бальною шкалою на основі виявлених проблем
- **Підтримка Blade та Filament**: готова панель за адресою `/vacuum` або плагін для Filament 4 чи 5
- **Команда `vacuum:check`**: може провалити білд у CI/CD при виявленні критичних проблем
- **Команда `vacuum:lint`**: виявляє проблеми зі схемою бази даних, такі як непроіндексовані зовнішні ключі
- **Історія**: відстеження трендів та прогнозування на основі запланованих знімків (snapshots)
- **Уроки (Lessons)**: 13 пояснень щодо PostgreSQL, які використовують ваші власні таблиці як приклади
- І багато іншого

## Dashboard та правила аналізу

Кожна виявлена проблема має рівень серйозності (severity) та оцінку (grade), що в сукупності формує загальний health score із 100 балів.

Детальніше про правила можна дізнатися з [readme пакета](https://github.com/Heyosseus/vacuum#what-it-tells-you). Окрім того, пакет надає ендпоінт `/learn`, який пояснює, чому певні проблеми існують у вашій базі даних, використовуючи ваші власні таблиці як робочі приклади - наприклад, для пояснення [N+1 запитів](https://laravel-news.com/how-to-detect-n1-queries-in-php).

## Робота з термінала

Ті самі правила можна запускати через командний рядок:

```bash
php artisan vacuum:check
php artisan vacuum:check --fail-on=warning   # critical, warning, info, or never
php artisan vacuum:check --format=json       # score, grade, deductions, findings
```

Використовуючи заплановану задачу (scheduled job) на staging-оточенні, ви можете налаштувати провал білду, коли freeze age таблиці перевищить критичний поріг. Кожне правило зчитує свої ліміти з конфігураційного файлу `config/vacuum.php`, зокрема `dead_tuple_ratio` (0.20) та `slow_query_milliseconds` (500).

## Встановлення

Vacuum версії 1.2.0 вимагає PostgreSQL 14 та Laravel 11+. Розширення `pg_stat_statements` є опціональним - без нього dashboard просто повідомить про відсутність розширення.

```bash
composer require heyosseus/vacuum
php artisan vacuum:install
```

## Налаштування доступу

За замовчуванням dashboard доступний лише в `local`-оточенні. Щоб відкрити доступ в інших середовищах, можна використати callback через метод `Vacuum::auth()`:

```php
use Heyosseus\Vacuum\Vacuum;

Vacuum::auth(fn (Request $request) => $request->user()?->isAdmin() === true);
```

Дізнатися більше про пакет, отримати повні інструкції зі встановлення та переглянути [вихідний код](https://github.com/Heyosseus/vacuum) можна на GitHub.
