Metrics — це пакет, створений Стіва Баумана, який пропонує простий та елегантний спосіб ведення обліку та запитів до метрик у вашій Laravel аплікації. Легко відстежуйте перегляди сторінок, API запити, реєстрацію користувачів або будь-які інші підрахункові події.
Для встановлення цього пакету використайте Composer, а потім опублікуйте та запустіть міграції:
composer require directorytree/metrics
php artisan vendor:publish --tag="metrics-migrations"
php artisan migrate
Після цього ви можете почати відстежувати метрики, використовуючи фасад Metric:
use DirectoryTree\Metrics\MetricData;
use DirectoryTree\Metrics\Facades\Metrics;
Metrics::record(new MetricData('signups'));
Або скористайтеся допоміжним методом metric:
metric('signups')->record();
Ви також можете організувати свої метрики за категоріями:
// Відстежуйте помилки за ступенем
metric('errors')->category('critical')->record();
metric('errors')->category('warning')->record();
Ваші метрики можна асоціювати з вашими моделями Eloquent за допомогою трейту HasMetrics:
use DirectoryTree\Metrics\HasMetrics;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasMetrics;
}
$user = User::find(1);
// Відстежуйте входи в систему для кожного користувача
metric('logins')->measurable($user)->record();
Якщо вам потрібно записати кілька метрик, є можливість обробити їх пакетно в пам'яті, а потім комітити.
use DirectoryTree\Metrics\Facades\Metrics;
Metrics::capture();
// Запишіть кілька метрик
metric('signups')->record();
metric('emails_sent')->category('welcome')->record();
metric('signups')->record();
// Комітьте всі зафіксовані метрики одразу
Metrics::commit();
Ще одна зручна функція цього пакету — можливість запитувати метрики за допомогою конструктора запитів із фільтрами дат:
use DirectoryTree\Metrics\Metric;
// Отримайте метрики за сьогодні
$metrics = Metric::today()->get();
// Отримайте метрики за цей тиждень
$metrics = Metric::thisWeek()->get();
// Отримайте кількість реєстрацій за сьогодні
$signups = Metric::today()
->where('name', 'signups')
->sum('value');
Стів справді створив корисний пакет. Дізнайтеся більше про нього та перегляньте вихідний код на GitHub