Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
175 changes: 87 additions & 88 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,117 +1,116 @@
# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента`
# Домашнее задание к занятию "13.Системы мониторинга" - `Молоствов Андрей`

### Задание 1

### Инструкция по выполнению домашнего задания
Учитывая описание (платформа HTTP, вычисления с отчетами на диск, ЦПУ интенсивно используется), я бы выделил следующие четыре категории минимальных метрик:

1. Сделайте `fork` данного репозитория к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/git-hw или https://github.com/имя-вашего-репозитория/7-1-ansible-hw).
2. Выполните клонирование данного репозитория к себе на ПК с помощью команды `git clone`.
3. Выполните домашнее задание и заполните у себя локально этот файл README.md:
- впишите вверху название занятия и вашу фамилию и имя
- в каждом задании добавьте решение в требуемом виде (текст/код/скриншоты/ссылка)
- для корректного добавления скриншотов воспользуйтесь [инструкцией "Как вставить скриншот в шаблон с решением](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md)
- при оформлении используйте возможности языка разметки md (коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md))
4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`);
5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
6. Любые вопросы по выполнению заданий спрашивайте в чате учебной группы и/или в разделе “Вопросы по заданию” в личном кабинете.

Желаем успехов в выполнении домашнего задания!

### Дополнительные материалы, которые могут быть полезны для выполнения задания
1) Бизнес-метрики (качество сервиса):

1. [Руководство по оформлению Markdown файлов](https://gist.github.com/Jekins/2bf2d0638163f1294637#Code)
*HTTP запросы: Общее количество, по методам (GET/POST), по эндпоинтам.

---
*HTTP коды ответа: Группировка по классам (2xx, 3xx, 4xx, 5xx), особенно rate ошибок 5xx и 4xx. Это прямой индикатор доступности и корректности работы API.

### Задание 1
*Задержка (Latency) запросов: Процентили времени ответа (p50, p95, p99). Показывает, насколько отзывчив сервис для пользователей.

2) Метрики ресурсов (инфраструктура):

*ЦПУ (CPU): Утилизация на ядро и в целом, время ожидания (steal, iowait если есть), load average (CPU la). Это критично, так как вычисления нагружают процессор.

*Оперативная память (RAM): Общее использование, свободная память, использование кэша, процент использования. Позволяет избежать OOM (Out-Of-Memory) убийств процессов.

`Приведите ответ в свободной форме........`
*Диск (Disk): Свободное место на разделах, где сохраняются отчеты и где работает приложение. I/O утилизация (чтение/запись) и latency. Если отчеты пишутся на диск, его перегрузка может стать узким местом.

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.
*Inodes (иноды): Свободные иноды на диске с отчетами. Если приложение создает множество мелких файлов (отчетов, логов), их может закончиться даже при свободном месте.

```
Поле для вставки кода...
....
....
....
....
```
3) Метрики приложения (логика работы):

`При необходимости прикрепитe сюда скриншоты
![Название скриншота 1](ссылка на скриншот 1)`
*Количество активных/обрабатываемых вычислительных задач.

*Среднее время генерации отчета.

---
*Очередь задач (если есть).

4) Метрики доступности:

*Простое «up/down» сервиса по HTTP-проверке (например, запрос на /health).

### Задание 2

`Приведите ответ в свободной форме........`
1) Доступность (Availability) сервиса: «Сервис доступен 99.9% времени». Измеряется как доля успешных HTTP-запросов от общего числа.

2) Скорость работы (Performance): «95% всех отчетов формируются менее чем за 10 секунд».

3) Качество результатов (Correctness): Можно ввести метрику «количество жалоб на некорректные отчеты» (ручной ввод) или мониторить долю запросов, которые завершились ошибкой логики приложения

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.
4) Нагрузка (Volume): «Мы обрабатываем в среднем 5000 задач в час».

```
Поле для вставки кода...
....
....
....
....
```
5) Визуализация: Создать единый Service Level Dashboard с понятными виджетами:

`При необходимости прикрепитe сюда скриншоты
![Название скриншота 2](ссылка на скриншот 2)`
* Зеленая/красная лампочка «Сервис доступен».

* График «Время формирования отчета» с целевой линией (например, 10 сек).

---
* Индикатор «Выполнение SLA за месяц: 99.7%».

* Счетчик «Отчетов сгенерировано сегодня».

Как итог: нужно договориться с менеджером о цифровых целевых показателях (SLO) по доступности, скорости и объему, а затем настроить мониторинг именно под них.

### Задание 3

`Приведите ответ в свободной форме........`
1) Использование стека ELK/EFK на своих мощностях

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.
2) Отправка логов ошибок напрямую разработчикам

```
Поле для вставки кода...
....
....
....
....
```
3) Использование облачных «бесплатных» квот

`При необходимости прикрепитe сюда скриншоты
![Название скриншота](ссылка на скриншот)`
Начать с Sentry для ошибок приложений, а параллельно в тестовом окружении развернуть минимальный стек EFK (Elasticsearch, Fluent Bit, Kibana) для оценки трудозатрат.

### Задание 4

`Приведите ответ в свободной форме........`

1. `Заполните здесь этапы выполнения, если требуется ....`
2. `Заполните здесь этапы выполнения, если требуется ....`
3. `Заполните здесь этапы выполнения, если требуется ....`
4. `Заполните здесь этапы выполнения, если требуется ....`
5. `Заполните здесь этапы выполнения, если требуется ....`
6.

```
Поле для вставки кода...
....
....
....
....
```

`При необходимости прикрепитe сюда скриншоты
![Название скриншота](ссылка на скриншот)`
Ошибка в формуле. Если в системе нет 4xx и 5xx, но есть, например, 3xx (редиректы) и возможно 1xx (информационные) коды, то они входят в знаменатель (summ_all_requests), но не являются «успешными» в контексте завершенных пользовательских операций.

### Задание 5

### PULL модель:
* Центр управления знает всех агентов. Легко увидеть, что пропало.

* Центр ходит к агентам. Нужен доступ из сети мониторинга к приложениям.

* Проблемы с сетью (файрволлы, NAT) на стороне центра.

* Центр может стать узким местом. Нужно планировать нагрузку.

* Центр решает, когда опрашивать. Может быть задержка в обнаружении.

* Сложнее. Нужно заранее знать цели.

* При падении центра данные за период простоя теряются.

* Prometheus, Nagios

### PUSH модель:

* Агенты независимы. Центр не знает, кто должен отправить данные.

* Агенты ходят к центру. Можно проще ограничить входящие соединения к центру.

* Проблемы с сетью на стороне агентов.

* Центр принимает данные. Масштабируется проще (через балансировку).

* Агент отправляет данные сразу. Более оперативное оповещение.

* Проще. Новый сервис может сам зарегистрироваться в системе мониторинга.

* Агенты могут буферизовать и отправить данные позже.

* StatsD, Graphite, InfluxDB

### Задание 6

Чистый Push: TICK.

Чистый Pull: Nagios (в базовом виде).

Гибридные: Prometheus, Zabbix, VictoriaMetrics.
Binary file added img/1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.