Лог-файлы являются важной частью работы любого сервера, так как они содержат информацию о запросах, ошибках и действиях. Для автоматизации анализа логов напишем программу-анализатор NGINX логов.
Программа должна:
- Принимать путь к одному или нескольким лог-файлам (локальный шаблон или URL).
- Поддерживать опциональные параметры:
fromиtoдля анализа записей в заданном временном диапазоне (ISO8601).- Формат вывода:
markdownилиadoc.
- Выполнять следующие задачи:
- Подсчитывать общее количество запросов.
- Определять наиболее часто запрашиваемые ресурсы.
- Определять наиболее часто встречающиеся коды ответа.
- Рассчитывать средний размер ответа сервера.
- Рассчитывать 95% перцентиль размера ответа сервера.
- Эффективность обработки: Программа должна работать потоково, не загружая весь файл в память.
- Кодирование: Код должен быть структурированным и соответствовать стандартам.
- Обработка ошибок: Логика обработки ошибок должна быть четкой и понятной.
- Человекочитаемый вывод: Результат должен быть легко интерпретируемым.
- Путь к лог-файлам: локальный путь (с поддержкой glob) или URL.
- Временные параметры:
fromиto(ISO8601, опционально). - Формат вывода:
markdownилиadoc(опционально).
Текстовый отчет в выбранном формате с анализом логов.
Пример вывода:
| Метрика | Значение |
|---|---|
| Файл(-ы) | access.log |
| Начальная дата | 31.08.2024 |
| Конечная дата | - |
| Количество запросов | 10_000 |
| Средний размер ответа | 500b |
| 95p размера ответа | 950b |
| Ресурс | Количество |
|---|---|
/index.html |
5_000 |
/about.html |
2_000 |
/contact.html |
1_000 |
| Код | Имя | Количество |
|---|---|---|
| 200 | OK | 8000 |
| 404 | Not Found | 1000 |
| 500 | Internal Server Error | 500 |
--path logs/2024* --from 2024-08-31 --format markdown
--path https://raw.githubusercontent.com/elastic/examples/master/Common%20Data%20Formats/nginx_logs/nginx_logs --format adoc
--path logs/**/2024-08-31.txt