Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проект №3 #8

Merged
merged 6 commits into from
Dec 12, 2023
Merged

Проект №3 #8

merged 6 commits into from
Dec 12, 2023

Conversation

arhostcode
Copy link
Owner

Проект №3

Сделан проект №3

Реализовано

  • Парсинг аргументов командной строки --path, --format(optional), --to(optional), --date(optional)
  • Сбор логов локально по шаблону и по URL
  • Парсинг логов в формате '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'
  • Фильтр логов по метке времени
  • Коллекторы логов
  • Рендеринг метрик

Коллекторы логов

  1. Подсчитывает общее количество запросов (по заданию)
  2. Определяет наиболее часто запрашиваемые ресурсы (по заданию)
  3. Определяет наиболее часто встречающиеся коды ответа (по заданию)
  4. Рассчитывает средний размер ответа сервера (по заданию)
  5. Определяет наиболее частые источники запросов (IP адреса) (дополнительно)
  6. Рассчитывает наиболее частые периоды дня по количеству запросов (дополнительно)
  7. Определяет наиболее объёмные ответы на запросы (дополнительно)

Рендеринг

Были реализованы два формата рендеринг

  1. Markdown (по умолчанию)
  2. Adoc

Пример формата Markdown

Пример формата Adoc

Кратко о структуре проекта

  1. В качестве точки входа рассматривается класс NginxLogAnalyticsApp
  2. В качестве основного класса, занимающегося сборкой метрик рассматривается NginxLogManager
    2.1. Этот класс принимает LogFilter, занимающийся фильтрацией логов (например по дате) и MetricCollector занимающийся сборкой метрик
  3. Единица лога - NginxLog
  4. Единица метрики - Metric - состоит из MetricComponent, которые могут быть отрендерены в RenderedComponent
В Pull Request включены изменения файла pom и дополнительная папка logs/, использующаяся для тестов

Copy link

github-actions bot commented Nov 4, 2023

Code Coverage

Overall Project 95.26% -1.73% 🍏
Files changed 95.28% 🍏

File Coverage
BaseNginxLogParser.java 100% 🍏
HeaderAdoc.java 100% 🍏
AdocRenderer.java 100% 🍏
TableAdoc.java 100% 🍏
MetricComponentsUtils.java 100% 🍏
RenderTableUtils.java 100% 🍏
Arguments.java 100% 🍏
Argument.java 100% 🍏
Metric.java 100% 🍏
MetadataMetricCollector.java 100% 🍏
TopMetricCollector.java 100% 🍏
ResponseCodesMetricCollector.java 100% 🍏
IPsMetricCollector.java 100% 🍏
TopResourcesMetricCollector.java 100% 🍏
ResponseSizesMetricCollector.java 100% 🍏
TimeOfDayMetricCollector.java 100% 🍏
DateFilter.java 100% 🍏
HeaderMarkdown.java 100% 🍏
TableMarkdown.java 100% 🍏
MarkdownRenderer.java 100% 🍏
LogsMetadata.java 100% 🍏
LogsContainer.java 100% 🍏
RenderFactory.java 100% 🍏
NginxLogManager.java 100% 🍏
HttpStatusCode.java 97.23% -2.77% 🍏
MetricTable.java 96.72% -3.28% 🍏
BasicConfigurationParser.java 94.96% -5.04% 🍏
NginxLogAnalyticsApp.java 88.28% -11.72% 🍏
LocalFilesLogSource.java 85.71% -14.29% 🍏
Response.java 85% -15% 🍏
Request.java 84.38% -15.63% 🍏
NginxLog.java 81.32% -18.68% 🍏
UrlLogSource.java 81.25% -18.75% 🍏
BasicConfiguration.java 80% -20% 🍏
MetricHeader.java 69.23% -30.77% 🍏
ConsoleMetricsWriter.java 0%

@arhostcode arhostcode added the project Project task label Nov 4, 2023
@arhostcode arhostcode merged commit 58d48e8 into main Dec 12, 2023
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
project Project task
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant