CLIЗавершён2024
Website Accessibility Monitor
Высокопроизводительный асинхронный сервис непрерывного мониторинга доступности веб-сайтов и серверов на Rust (HTTP/HTTPS, ICMP-пинг без Root/Admin, Telegram-алерты).
WebsiteAccessibilityMonitor (WAM) — высокопроизводительный асинхронный сервис непрерывного мониторинга доступности веб-ресурсов и серверов на языке Rust.
Программа выполняет параллельную проверку сотен хостов в секунду по протоколам HTTP/HTTPS и ICMP-пинг без необходимости запуска от имени администратора на Windows.
Ключевые возможности: - Параллельный опрос сотен ресурсов: асинхронный конвейер на базе Tokio и пула соединений Reqwest. - ICMP Ping без Root/Admin: использование нативного Windows IcmpSendEcho API для отправки ICMP эхо-запросов без raw socket привилегий. - Детальная метрика производительности: фиксация DNS lookup time, TCP connect time, TLS handshake, TTFB и общего времени ответа. - Оповещения в реальном времени: мгновенная отправка алертов о падениях и восстановлении сайтов в Telegram-боты и вебхуки. - Логирование и отчёты: экспорт структурированных отчётов в JSON и CSV с подсчётом процента аптайма (SLA 99.9%).
Главное
- Параллельный опрос сотен ресурсов в секунду на базе Tokio и Reqwest
- ICMP Ping без Root/Admin прав через нативный Windows IcmpSendEcho API
- Детальные сетевые метрики: DNS lookup, TCP connect, TLS handshake, TTFB
- Мгновенные Telegram-оповещения об инцидентах и восстановлении сайтов
- Экспорт структурированных отчетов в JSON/CSV и подсчет SLA аптайма (99.9%)
Технический обзор
Архитектура и ключевые особенности
WebsiteAccessibilityMonitor (WAM) — высокопроизводительный сервис непрерывного мониторинга доступности веб-ресурсов и серверов на языке Rust.
Сервис решает задачу мониторинга SLA и быстрого обнаружения инцидентов для инфраструктурных сервисов и веб-сайтов. Благодаря многопоточному асинхронному рантайму Tokio достигается параллельный опрос сотен ресурсов в секунду при минимальном потреблении оперативной памяти и процессорного времени.
Отличительной особенностью является нативный ICMP-пинг без административных прав в Windows через специализированные системные вызовы Win32 IcmpSendEcho.
Спецификация и характеристики
- Язык программирования
- Rust 2024 (1.80+)
- Асинхронный рантайм
- Tokio 1.38+
- Сетевой стек
- Reqwest 0.12 (Connection Pooling, Keep-Alive, HTTP/2)
- ICMP Драйвер
- WinPing / Native Windows IcmpSendEcho API (No Root/Admin)
- Метрики задержки
- DNS lookup, TCP connect, TLS handshake, TTFB, Total Duration
- Оповещения
- Telegram Bot API, HTTP Webhooks
- Форматы отчетов
- JSON, CSV, расчёт SLA (99.9% аптайм)
- Поддерживаемые ОС
- Windows x64 / Linux / macOS
- Лицензия
- MIT
Конфигурация (config.json)
config.json
{
"check_interval_seconds": 30,
"timeout_seconds": 5,
"retry_count": 2,
"telegram_alerts": {
"enabled": true,
"bot_token": "YOUR_BOT_TOKEN",
"chat_id": "YOUR_CHAT_ID"
},
"targets": [
{
"name": "PortalSHVK Main",
"url": "https://порталшвк.рф",
"expected_status": 200,
"ping_enabled": true
}
]
}Сборка и запуск
Terminal
# Клонирование и сборка релиза
git clone https://github.com/ServChan/WebsiteAccessibilityMonitor.git
cd WebsiteAccessibilityMonitor
cargo build --release
# Запуск на Windows через готовый батник
.\Start.bat