Alerting система в контексте Lighthouse представляет собой механизм мониторинга и уведомления о событиях, происходящих в приложении или на веб-странице, с целью своевременного реагирования на проблемы производительности, доступности или других критических показателей. Lighthouse предоставляет API для интеграции с внешними системами оповещения и позволяет настраивать детальные правила срабатывания алертов.
Lighthouse использует объект конфигурации для управления поведением алертов. Основные поля конфигурации:
const alertConfig = {
thresholds: {
performance: 0.9,
accessibility: 0.95,
seo: 0.8
},
notifications: {
email: ['admin@example.com'],
webhook: 'https://example.com/alert'
},
frequency: 'daily'
};
Ключевые параметры:
immediate, hourly,
daily).Для гибкой настройки алертов можно использовать JavaScript API Lighthouse. Например, создание алерта при падении показателя производительности ниже 80%:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
async function runLighthouse(url) {
const chrome = await chromeLauncher.launch({chromeFlags: ['--headless']});
const options = {port: chrome.port, output: 'json'};
const runnerResult = await lighthouse(url, options);
const performanceScore = runnerResult.lhr.categories.performance.score;
if (performanceScore < 0.8) {
sendAlert(`Performance score dropped below 80%: ${performanceScore}`);
}
await chrome.kill();
}
function sendAlert(message) {
console.log('ALERT:', message);
// интеграция с внешними системами уведомлений
}
Особенности подхода:
runnerResult) содержит детальные
метрики всех категорий.Alerting система Lighthouse может быть связана с любыми внешними сервисами через вебхуки или API. Например, отправка уведомлений в Slack:
const fetch = require('node-fetch');
function sendSlackAlert(message) {
const payload = {text: message};
fetch('https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(payload)
});
}
text.Для регулярного анализа веб-страниц и автоматической генерации
алертов используется планировщик задач (cron или node-schedule). Пример
с node-schedule:
const schedule = require('node-schedule');
schedule.scheduleJob('0 * * * *', () => { // запуск каждый час
runLighthouse('https://example.com');
});
'0 * * * *' соответствует ежечасному
запуску.Lighthouse позволяет создавать отдельные алерты для каждой категории метрик:
Пример условного разделения алертов:
function evaluateAlerts(scores) {
if (scores.performance < 0.85) sendAlert('Performance is low');
if (scores.accessibility < 0.9) sendAlert('Accessibility issues detected');
if (scores.seo < 0.75) sendAlert('SEO score critical');
}
Для анализа работы Alerting системы рекомендуется хранить историю срабатываний алертов. Можно использовать простую запись в JSON файл или базу данных:
const fs = require('fs');
function logAlert(alert) {
const log = {timestamp: new Date().toISOString(), alert};
fs.appendFileSync('alerts.log', JSON.stringify(log) + '\n');
}
Lighthouse Alerting поддерживает уровни приоритетов:
Фильтры позволяют исключить повторяющиеся уведомления или уведомлять только при превышении критических порогов.