From 11af3b7369eb6cd6ca51377c6665f2659c87b793 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Thu, 15 May 2025 18:31:15 +0400 Subject: [PATCH 01/50] Update README.md --- README.md | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/README.md b/README.md index 64ef33813a..f5904f0d7c 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,4 @@ -# Домашнее задание к занятию "`Название занятия`" - `Фамилия и имя студента` - - -### Инструкция по выполнению домашнего задания - - 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. [Руководство по оформлению Markdown файлов](https://gist.github.com/Jekins/2bf2d0638163f1294637#Code) +# Домашнее задание к занятию "DevOps. CI/CD" - `Хамуро Илья` --- From d2d8877399b0b2b5486adc62a18dc7c2165c0ef0 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Thu, 15 May 2025 23:47:19 +0400 Subject: [PATCH 02/50] Update README.md --- README.md | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index f5904f0d7c..5ada8a5bd2 100644 --- a/README.md +++ b/README.md @@ -3,26 +3,14 @@ --- ### Задание 1 +Выполнил задание с использованием docker, без vagrant, делал работу на вм в Яндекс облаке -`Приведите ответ в свободной форме........` +![Снимок экрана 2025-05-15 234540](https://github.com/user-attachments/assets/321af4b4-eeef-45bb-9da4-2714b3068b87) +![Снимок экрана 2025-05-15 234258](https://github.com/user-attachments/assets/d562a653-a616-4760-b853-65bffc412352) +![Снимок экрана 2025-05-15 234226](https://github.com/user-attachments/assets/26168e79-80b8-4fa7-823d-fe25140ab640) +![Снимок экрана 2025-05-15 234231](https://github.com/user-attachments/assets/c32f86c4-9011-4dce-bc5c-81f9eab62246) +![Снимок экрана 2025-05-15 234236](https://github.com/user-attachments/assets/6d1287e5-d2f4-4291-93e0-467143adc809) -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. - -``` -Поле для вставки кода... -.... -.... -.... -.... -``` - -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 1](ссылка на скриншот 1)` --- From 56fd71bc23ab0aa0d90153792bf41ab148e2c41f Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 16 May 2025 00:07:20 +0400 Subject: [PATCH 03/50] Update README.md --- README.md | 118 +++++++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 5ada8a5bd2..37ba57d42f 100644 --- a/README.md +++ b/README.md @@ -17,69 +17,61 @@ ### Задание 2 -`Приведите ответ в свободной форме........` +pipeline { + agent any + + environment { + REPO_URL = "https://github.com/IlyaKham/sdvps-materials.git" + REGISTRY = "158.160.23.101:8082" + IMAGE = "${REGISTRY}/hello-world" + VERSION = "v${BUILD_NUMBER}" + } + + stages { + stage('Checkout') { + steps { + echo '📥 Клонируем репозиторий...' + git url: "${REPO_URL}", branch: 'main' + } + } + + stage('Go Test') { + steps { + echo '🧪 Запускаем go test...' + sh '/usr/bin/go test .' + } + } + + stage('Docker Build') { + steps { + echo '🐳 Собираем Docker-образ...' + sh 'docker build -t ${IMAGE}:${VERSION} .' + } + } + + stage('Docker Push') { + steps { + echo '📦 Публикуем в Nexus...' + sh ''' + docker login ${REGISTRY} -u admin -p zaq123 + docker push ${IMAGE}:${VERSION} + docker logout ${REGISTRY} + ''' + } + } + } + + post { + success { + echo "✅ Успешно загружено в Nexus: ${IMAGE}:${VERSION}" + } + failure { + echo "❌ Ошибка в пайплайне." + } + } +} + +![Снимок экрана 2025-05-16 000653](https://github.com/user-attachments/assets/e188e4d0-fae0-4592-bd4e-0cae72e9f2c2) -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. -``` -Поле для вставки кода... -.... -.... -.... -.... -``` -`При необходимости прикрепитe сюда скриншоты -![Название скриншота 2](ссылка на скриншот 2)` - - ---- - -### Задание 3 - -`Приведите ответ в свободной форме........` - -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. - -``` -Поле для вставки кода... -.... -.... -.... -.... -``` - -`При необходимости прикрепитe сюда скриншоты -![Название скриншота](ссылка на скриншот)` - -### Задание 4 - -`Приведите ответ в свободной форме........` - -1. `Заполните здесь этапы выполнения, если требуется ....` -2. `Заполните здесь этапы выполнения, если требуется ....` -3. `Заполните здесь этапы выполнения, если требуется ....` -4. `Заполните здесь этапы выполнения, если требуется ....` -5. `Заполните здесь этапы выполнения, если требуется ....` -6. - -``` -Поле для вставки кода... -.... -.... -.... -.... -``` - -`При необходимости прикрепитe сюда скриншоты -![Название скриншота](ссылка на скриншот)` From 28e75252524901048e91840c412141beeef4a4b4 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 17 May 2025 20:48:19 +0400 Subject: [PATCH 04/50] Rename README.md to Jenkins.md --- README.md => Jenkins.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename README.md => Jenkins.md (100%) diff --git a/README.md b/Jenkins.md similarity index 100% rename from README.md rename to Jenkins.md From 013b86d222d288385b0f7aff0e389cf3294930b7 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 17 May 2025 20:48:47 +0400 Subject: [PATCH 05/50] Create GitLab --- GitLab | 1 + 1 file changed, 1 insertion(+) create mode 100644 GitLab diff --git a/GitLab b/GitLab new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/GitLab @@ -0,0 +1 @@ + From 071b58e5eec08e78637874cf90e211065eee6df9 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Wed, 21 May 2025 22:52:26 +0400 Subject: [PATCH 06/50] Create GitLab.md --- GitLab.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 GitLab.md diff --git a/GitLab.md b/GitLab.md new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/GitLab.md @@ -0,0 +1 @@ + From 45de671e0d7f3e4ae99f9ef9e2a085dd26692b91 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Wed, 21 May 2025 22:58:08 +0400 Subject: [PATCH 07/50] Update GitLab.md --- GitLab.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/GitLab.md b/GitLab.md index 8b13789179..0305497aa4 100644 --- a/GitLab.md +++ b/GitLab.md @@ -1 +1,13 @@ +# Домашнее задание к занятию "`GitLab`" - `Хамуро Илья` + +### Задание 1 +Я выполнял задание через готовый образ GitLab в ЯндексCloud. Не понял как это делать это через Vargrant, так как этого в лекции не было. +![Снимок экрана 2025-05-21 210601](https://github.com/user-attachments/assets/9ca14971-2806-46b7-8e9a-ff95bf5dc383) +![Снимок экрана 2025-05-21 210607](https://github.com/user-attachments/assets/19adf6d0-7562-47c3-9ab3-68546aeff32b) + +### Задание 2 +Тут я вообще не понял в чес проблема, билд постоянно падал на последней стадии, пытался перенастраивать, но всё тщетно( +![Снимок экрана 2025-05-21 212158](https://github.com/user-attachments/assets/ff536f55-7420-4490-9f43-8d34e4fc2f25) + +![Снимок экрана 2025-05-21 223325](https://github.com/user-attachments/assets/793fc1d4-af7f-4cb5-b356-b5371e25135f) From 90aa425aa7cb3a0f46e99d6dc38f6f86dfcd5dcb Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Thu, 29 May 2025 01:16:44 +0700 Subject: [PATCH 08/50] Update GitLab.md --- GitLab.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/GitLab.md b/GitLab.md index 0305497aa4..8268d7fa42 100644 --- a/GitLab.md +++ b/GitLab.md @@ -1,13 +1,14 @@ # Домашнее задание к занятию "`GitLab`" - `Хамуро Илья` ### Задание 1 -Я выполнял задание через готовый образ GitLab в ЯндексCloud. Не понял как это делать это через Vargrant, так как этого в лекции не было. -![Снимок экрана 2025-05-21 210601](https://github.com/user-attachments/assets/9ca14971-2806-46b7-8e9a-ff95bf5dc383) -![Снимок экрана 2025-05-21 210607](https://github.com/user-attachments/assets/19adf6d0-7562-47c3-9ab3-68546aeff32b) +Я выполнял задание через готовый образ GitLab в ЯндексCloud. +![Снимок экрана 2025-05-29 003834](https://github.com/user-attachments/assets/7d3fe91a-1816-4138-849c-022975ad1ee7) +![Снимок экрана 2025-05-29 005054](https://github.com/user-attachments/assets/05fc97ac-d58c-4bab-b6d6-236bd2c71b79) -### Задание 2 -Тут я вообще не понял в чес проблема, билд постоянно падал на последней стадии, пытался перенастраивать, но всё тщетно( -![Снимок экрана 2025-05-21 212158](https://github.com/user-attachments/assets/ff536f55-7420-4490-9f43-8d34e4fc2f25) -![Снимок экрана 2025-05-21 223325](https://github.com/user-attachments/assets/793fc1d4-af7f-4cb5-b356-b5371e25135f) +### Задание 2 +![Снимок экрана 2025-05-29 011352](https://github.com/user-attachments/assets/095c4121-7154-4595-9796-f79dcd47818d) +![Снимок экрана 2025-05-29 011052](https://github.com/user-attachments/assets/0e1c7dde-ef5a-499f-a61b-94825dbe6785) +![Снимок экрана 2025-05-29 011127](https://github.com/user-attachments/assets/68747297-e17b-425f-a315-7ccb8c6683e9) +![Снимок экрана 2025-05-29 011309](https://github.com/user-attachments/assets/2f4f6ae1-6bdf-4416-932a-fe61c40d679b) From 23f934400c2df22e9cf517453f3db8ad4248f361 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 14:47:51 +0700 Subject: [PATCH 09/50] Create Zabbix_Part1 --- Zabbix_Part1 | 1 + 1 file changed, 1 insertion(+) create mode 100644 Zabbix_Part1 diff --git a/Zabbix_Part1 b/Zabbix_Part1 new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Zabbix_Part1 @@ -0,0 +1 @@ + From 874ba5218e4df1fc8fda27a5a050edb36a94a36d Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 14:50:10 +0700 Subject: [PATCH 10/50] Update and rename Zabbix_Part1 to Zabbix_Part1.md --- Zabbix_Part1 | 1 - Zabbix_Part1.md | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 Zabbix_Part1 create mode 100644 Zabbix_Part1.md diff --git a/Zabbix_Part1 b/Zabbix_Part1 deleted file mode 100644 index 8b13789179..0000000000 --- a/Zabbix_Part1 +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md new file mode 100644 index 0000000000..3b9cf1c10e --- /dev/null +++ b/Zabbix_Part1.md @@ -0,0 +1 @@ +#Домашнее задание к занятию «Система мониторинга Zabbix» From 8b3e6256517d479dfeb3f01f8d60d2af109dae9a Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 14:50:31 +0700 Subject: [PATCH 11/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index 3b9cf1c10e..b1c9200707 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -1 +1 @@ -#Домашнее задание к занятию «Система мониторинга Zabbix» +Домашнее задание к занятию «Система мониторинга Zabbix» From 6f49ef7327fd806340391f7dcc3019af2440e405 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 14:53:33 +0700 Subject: [PATCH 12/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index b1c9200707..04b9254cf0 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -1 +1,29 @@ -Домашнее задание к занятию «Система мониторинга Zabbix» +Домашнее задание к занятию "Система мониторинга Zabbix" - Хамуро Илья + +Задание 1 +Установите Zabbix Server с веб-интерфейсом. + +Процесс выполнения +Выполняя ДЗ, сверяйтесь с процессом отражённым в записи лекции. +Установите PostgreSQL. Для установки достаточна та версия, что есть в системном репозитороии Debian 11. +Пользуясь конфигуратором команд с официального сайта, составьте набор команд для установки последней версии Zabbix с поддержкой PostgreSQL и Apache. +Выполните все необходимые команды для установки Zabbix Server и Zabbix Web Server. +Требования к результатам +Прикрепите в файл README.md скриншот авторизации в админке. +Приложите в файл README.md текст использованных команд в GitHub. + + +Задание 2 +Установите Zabbix Agent на два хоста. + +Процесс выполнения +Выполняя ДЗ, сверяйтесь с процессом отражённым в записи лекции. +Установите Zabbix Agent на 2 вирт.машины, одной из них может быть ваш Zabbix Server. +Добавьте Zabbix Server в список разрешенных серверов ваших Zabbix Agentов. +Добавьте Zabbix Agentов в раздел Configuration > Hosts вашего Zabbix Servera. +Проверьте, что в разделе Latest Data начали появляться данные с добавленных агентов. +Требования к результатам +Приложите в файл README.md скриншот раздела Configuration > Hosts, где видно, что агенты подключены к серверу +Приложите в файл README.md скриншот лога zabbix agent, где видно, что он работает с сервером +Приложите в файл README.md скриншот раздела Monitoring > Latest data для обоих хостов, где видны поступающие от агентов данные. +Приложите в файл README.md текст использованных команд в GitHub From 8ef0348fbe143874d7122802a647af5d1ee6902c Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 14:54:28 +0700 Subject: [PATCH 13/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index 04b9254cf0..5b0a76a3ec 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -1,6 +1,7 @@ -Домашнее задание к занятию "Система мониторинга Zabbix" - Хамуро Илья +#Домашнее задание к занятию "Система мониторинга Zabbix" - Хамуро Илья + +###Задание 1 -Задание 1 Установите Zabbix Server с веб-интерфейсом. Процесс выполнения @@ -13,7 +14,8 @@ Приложите в файл README.md текст использованных команд в GitHub. -Задание 2 +###Задание 2 + Установите Zabbix Agent на два хоста. Процесс выполнения From 1c18b6629054d543367c089851d1368e0c5fa470 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 14:55:06 +0700 Subject: [PATCH 14/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index 5b0a76a3ec..069fe2f347 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -1,6 +1,6 @@ -#Домашнее задание к занятию "Система мониторинга Zabbix" - Хамуро Илья +# Домашнее задание к занятию "Система мониторинга Zabbix" - Хамуро Илья -###Задание 1 +### Задание 1 Установите Zabbix Server с веб-интерфейсом. @@ -14,7 +14,7 @@ Приложите в файл README.md текст использованных команд в GitHub. -###Задание 2 +### Задание 2 Установите Zabbix Agent на два хоста. From d2bba8765cc36edb02e0d23f00647695538f4010 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 15:54:49 +0700 Subject: [PATCH 15/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index 069fe2f347..7b91e48fac 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -3,15 +3,19 @@ ### Задание 1 Установите Zabbix Server с веб-интерфейсом. +Команды: +$ sudo -s +$ wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb +$ dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb +$ apt update +$ apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent +$ sudo -u postgres createuser --pwprompt zabbix +$ sudo -u postgres createdb -O zabbix zabbix +$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix +$ systemctl restart zabbix-server zabbix-agent apache2 +$ systemctl enable zabbix-server zabbix-agent apache2 -Процесс выполнения -Выполняя ДЗ, сверяйтесь с процессом отражённым в записи лекции. -Установите PostgreSQL. Для установки достаточна та версия, что есть в системном репозитороии Debian 11. -Пользуясь конфигуратором команд с официального сайта, составьте набор команд для установки последней версии Zabbix с поддержкой PostgreSQL и Apache. -Выполните все необходимые команды для установки Zabbix Server и Zabbix Web Server. -Требования к результатам -Прикрепите в файл README.md скриншот авторизации в админке. -Приложите в файл README.md текст использованных команд в GitHub. +![Снимок экрана 2025-06-08 155100](https://github.com/user-attachments/assets/6fa7f33c-c100-4c9d-a88e-830a30450ff6) ### Задание 2 From ff3a8a1097a93cb2233ebe0924b2e8902c827497 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 15:56:20 +0700 Subject: [PATCH 16/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index 7b91e48fac..11b458ea35 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -2,18 +2,18 @@ ### Задание 1 -Установите Zabbix Server с веб-интерфейсом. -Команды: -$ sudo -s -$ wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb -$ dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb -$ apt update -$ apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent -$ sudo -u postgres createuser --pwprompt zabbix -$ sudo -u postgres createdb -O zabbix zabbix -$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix -$ systemctl restart zabbix-server zabbix-agent apache2 -$ systemctl enable zabbix-server zabbix-agent apache2 +Установите Zabbix Server с веб-интерфейсом.\ +Команды:\ +$ sudo -s \ +$ wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb\ +$ dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb\ +$ apt update\ +$ apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent\ +$ sudo -u postgres createuser --pwprompt zabbix\ +$ sudo -u postgres createdb -O zabbix zabbix\ +$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix\ +$ systemctl restart zabbix-server zabbix-agent apache2\ +$ systemctl enable zabbix-server zabbix-agent apache2\ ![Снимок экрана 2025-06-08 155100](https://github.com/user-attachments/assets/6fa7f33c-c100-4c9d-a88e-830a30450ff6) From e56748b0c6122c4e87d84b40ed1717fd7970eed7 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 17:40:20 +0700 Subject: [PATCH 17/50] Update Zabbix_Part1.md --- Zabbix_Part1.md | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/Zabbix_Part1.md b/Zabbix_Part1.md index 11b458ea35..27a34da456 100644 --- a/Zabbix_Part1.md +++ b/Zabbix_Part1.md @@ -16,20 +16,25 @@ $ systemctl restart zabbix-server zabbix-agent apache2\ $ systemctl enable zabbix-server zabbix-agent apache2\ ![Снимок экрана 2025-06-08 155100](https://github.com/user-attachments/assets/6fa7f33c-c100-4c9d-a88e-830a30450ff6) +![Снимок экрана 2025-06-08 160706](https://github.com/user-attachments/assets/d0ed0153-dd4f-455b-9f5e-3cc8931e285a) ### Задание 2 -Установите Zabbix Agent на два хоста. - -Процесс выполнения -Выполняя ДЗ, сверяйтесь с процессом отражённым в записи лекции. -Установите Zabbix Agent на 2 вирт.машины, одной из них может быть ваш Zabbix Server. -Добавьте Zabbix Server в список разрешенных серверов ваших Zabbix Agentов. -Добавьте Zabbix Agentов в раздел Configuration > Hosts вашего Zabbix Servera. -Проверьте, что в разделе Latest Data начали появляться данные с добавленных агентов. -Требования к результатам -Приложите в файл README.md скриншот раздела Configuration > Hosts, где видно, что агенты подключены к серверу -Приложите в файл README.md скриншот лога zabbix agent, где видно, что он работает с сервером -Приложите в файл README.md скриншот раздела Monitoring > Latest data для обоих хостов, где видны поступающие от агентов данные. -Приложите в файл README.md текст использованных команд в GitHub +Установите Zabbix Agent на два хоста.\ +Команды\ +$ sudo -s +$ wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb +$ dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb +$ apt update +$ apt install zabbix-agent +$ systemctl restart zabbix-agent +$ systemctl enable zabbix-agent +![Снимок экрана 2025-06-08 173312](https://github.com/user-attachments/assets/52b201d8-6837-49ad-9cb0-3fd48fa1527e) + +![Снимок экрана 2025-06-08 173716](https://github.com/user-attachments/assets/d002ad77-cd2c-445f-9c8d-67c797a679c5) + +![Снимок экрана 2025-06-08 173820](https://github.com/user-attachments/assets/b231d319-7e0b-4038-9553-d7225462cb4f) + +![Снимок экрана 2025-06-08 173905](https://github.com/user-attachments/assets/35d0a06f-3871-496e-ab6d-630930dd0702) + From 18743766cc3fa3426f50460cd3cb37878e4ee164 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 20:07:04 +0700 Subject: [PATCH 18/50] Create Zabbix_Part2.md --- Zabbix_Part2.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Zabbix_Part2.md diff --git a/Zabbix_Part2.md b/Zabbix_Part2.md new file mode 100644 index 0000000000..e5b1db7c4e --- /dev/null +++ b/Zabbix_Part2.md @@ -0,0 +1,23 @@ +# Домашнее задание к занятию «Система мониторинга Zabbix. Часть 2» + +### Задание 1 +\ +Создайте свой шаблон, в котором будут элементы данных, мониторящие загрузку CPU и RAM хоста.\ +\ +![Снимок экрана 2025-06-08 195404](https://github.com/user-attachments/assets/2566cc57-6d5b-4882-8eb3-3df3cc6cdceb) + +### Задание 2 +Добавьте в Zabbix два хоста и задайте им имена <фамилия и инициалы-1> и <фамилия и инициалы-2>. Например: ivanovii-1 и ivanovii-2. + +![Снимок экрана 2025-06-08 190512](https://github.com/user-attachments/assets/41b94541-8ee6-400b-821a-ccfb54468f7c) + +### Задание 3 +Привяжите созданный шаблон к двум хостам. Также привяжите к обоим хостам шаблон Linux by Zabbix Agent.\ +![Снимок экрана 2025-06-08 192321](https://github.com/user-attachments/assets/55236eea-fbb5-4e37-822d-3ccbaff1894f) + +![Снимок экрана 2025-06-08 195452](https://github.com/user-attachments/assets/38463b8d-1f38-4dfb-917f-723e16608b8a) + +### Задание 4 +Создайте свой кастомный дашборд.\ +![Снимок экрана 2025-06-08 200640](https://github.com/user-attachments/assets/277fc004-20c1-412d-b3c6-a01ed50ff9e9) + From ca4501ace58f5b26f8ca9b6b75b1f7e70d5cc805 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 8 Jun 2025 23:59:39 +0700 Subject: [PATCH 19/50] Update Zabbix_Part2.md --- Zabbix_Part2.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Zabbix_Part2.md b/Zabbix_Part2.md index e5b1db7c4e..4b4b1e3293 100644 --- a/Zabbix_Part2.md +++ b/Zabbix_Part2.md @@ -4,7 +4,8 @@ \ Создайте свой шаблон, в котором будут элементы данных, мониторящие загрузку CPU и RAM хоста.\ \ -![Снимок экрана 2025-06-08 195404](https://github.com/user-attachments/assets/2566cc57-6d5b-4882-8eb3-3df3cc6cdceb) +![Снимок экрана 2025-06-08 235811](https://github.com/user-attachments/assets/7d03a554-9267-4a8c-b4fe-0a1a2ddf8233) + ### Задание 2 Добавьте в Zabbix два хоста и задайте им имена <фамилия и инициалы-1> и <фамилия и инициалы-2>. Например: ivanovii-1 и ivanovii-2. @@ -13,11 +14,14 @@ ### Задание 3 Привяжите созданный шаблон к двум хостам. Также привяжите к обоим хостам шаблон Linux by Zabbix Agent.\ +![Снимок экрана 2025-06-08 235811](https://github.com/user-attachments/assets/196a9715-eb1c-462a-9d60-0e0ffcabb85a) + ![Снимок экрана 2025-06-08 192321](https://github.com/user-attachments/assets/55236eea-fbb5-4e37-822d-3ccbaff1894f) ![Снимок экрана 2025-06-08 195452](https://github.com/user-attachments/assets/38463b8d-1f38-4dfb-917f-723e16608b8a) ### Задание 4 Создайте свой кастомный дашборд.\ -![Снимок экрана 2025-06-08 200640](https://github.com/user-attachments/assets/277fc004-20c1-412d-b3c6-a01ed50ff9e9) +![Снимок экрана 2025-06-08 235436](https://github.com/user-attachments/assets/89e6a8e0-8605-4d07-826f-c42754570099) + From ce4f02392b1fbe47ce7b92ff7832eb7b473bc4c5 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Mon, 9 Jun 2025 00:00:15 +0700 Subject: [PATCH 20/50] Update Zabbix_Part2.md --- Zabbix_Part2.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/Zabbix_Part2.md b/Zabbix_Part2.md index 4b4b1e3293..4425b79b57 100644 --- a/Zabbix_Part2.md +++ b/Zabbix_Part2.md @@ -16,8 +16,6 @@ Привяжите созданный шаблон к двум хостам. Также привяжите к обоим хостам шаблон Linux by Zabbix Agent.\ ![Снимок экрана 2025-06-08 235811](https://github.com/user-attachments/assets/196a9715-eb1c-462a-9d60-0e0ffcabb85a) -![Снимок экрана 2025-06-08 192321](https://github.com/user-attachments/assets/55236eea-fbb5-4e37-822d-3ccbaff1894f) - ![Снимок экрана 2025-06-08 195452](https://github.com/user-attachments/assets/38463b8d-1f38-4dfb-917f-723e16608b8a) ### Задание 4 From 6ef9ac979e581008ce997eb1b58ac47c42da4283 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 20 Jun 2025 22:57:22 +0400 Subject: [PATCH 21/50] Create Disaster Recovery --- Disaster Recovery | 1 + 1 file changed, 1 insertion(+) create mode 100644 Disaster Recovery diff --git a/Disaster Recovery b/Disaster Recovery new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/Disaster Recovery @@ -0,0 +1 @@ + From eb892b6c15340f7123d303698b3fdf6e2fea0162 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 20 Jun 2025 22:58:22 +0400 Subject: [PATCH 22/50] Create example --- example | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 example diff --git a/example b/example new file mode 100644 index 0000000000..d998343cb3 --- /dev/null +++ b/example @@ -0,0 +1,60 @@ +#!/bin/bash + +PORT=80 +FILE="/var/www/html/index.html" + +nc -z 127.0.0.1 $PORT +if [ $? -ne 0 ]; then + exit 1 +fi + +if [ ! -f "$FILE" ]; then + exit 1 +fi + +exit 0 + +vrrp_script chk_web { + script "/usr/local/bin/check_web.sh" + interval 3 + weight -20 +} + +vrrp_instance VI_1 { + state MASTER + interface ens33 + virtual_router_id 15 + priority 150 + advert_int 1 + + virtual_ipaddress { + 192.168.1.15/24 + } + + track_script { + chk_web + } +} + + +vrrp_script chk_web { + script "/usr/local/bin/check_web.sh" + interval 3 + weight -20 +} + +vrrp_instance VI_1 { + state BACKUP + interface ens33 + virtual_router_id 15 + priority 100 + advert_int 1 + + virtual_ipaddress { + 192.168.1.15/24 + } + + track_script { + chk_web + } +} From 19de3dc3f5fe56c145dfa9a948098850052f6819 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 20 Jun 2025 23:37:53 +0400 Subject: [PATCH 23/50] Update example --- example | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/example b/example index d998343cb3..eefb59d031 100644 --- a/example +++ b/example @@ -1,13 +1,15 @@ #!/bin/bash -PORT=80 -FILE="/var/www/html/index.html" +URL="http://127.0.0.1" +FILE="/var/www/html/index.nginx-debian.html" -nc -z 127.0.0.1 $PORT +# Проверка HTTP-ответа от nginx +curl -s --head $URL | grep "200 OK" > /dev/null if [ $? -ne 0 ]; then exit 1 fi +# Проверка наличия файла if [ ! -f "$FILE" ]; then exit 1 fi From 0608495a173e8eb5b36979820da526d909efd953 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 21 Jun 2025 00:09:25 +0400 Subject: [PATCH 24/50] Update Disaster Recovery --- Disaster Recovery | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Disaster Recovery b/Disaster Recovery index 8b13789179..77ceebfd86 100644 --- a/Disaster Recovery +++ b/Disaster Recovery @@ -1 +1,4 @@ +# Домашнее задание к занятию "`Disaster Recovery. FHRP и Keepalived`" - `Хамуро Илья` + +### Задание 2 From 7406f013db46bfcf0879302f009d09a701d01f60 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 21 Jun 2025 00:10:56 +0400 Subject: [PATCH 25/50] Rename Disaster Recovery to Disaster_Recovery --- Disaster Recovery => Disaster_Recovery | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Disaster Recovery => Disaster_Recovery (100%) diff --git a/Disaster Recovery b/Disaster_Recovery similarity index 100% rename from Disaster Recovery rename to Disaster_Recovery From 0759194c111f8856fc5d64e45b9a825d39cc8d58 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 21 Jun 2025 00:12:52 +0400 Subject: [PATCH 26/50] Rename Disaster_Recovery to Disaster_Recovery.md --- Disaster_Recovery => Disaster_Recovery.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Disaster_Recovery => Disaster_Recovery.md (100%) diff --git a/Disaster_Recovery b/Disaster_Recovery.md similarity index 100% rename from Disaster_Recovery rename to Disaster_Recovery.md From 0895226d7b008f6659d4ffc6451fc304d8213eca Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 21 Jun 2025 00:13:28 +0400 Subject: [PATCH 27/50] Update Disaster_Recovery.md --- Disaster_Recovery.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Disaster_Recovery.md b/Disaster_Recovery.md index 77ceebfd86..b241538aa8 100644 --- a/Disaster_Recovery.md +++ b/Disaster_Recovery.md @@ -2,3 +2,11 @@ ### Задание 2 +![Снимок экрана 2025-06-21 000020](https://github.com/user-attachments/assets/d1fe9176-3e31-4299-988c-0d3e3e7b4629) +![Снимок экрана 2025-06-21 000031](https://github.com/user-attachments/assets/aba4d9ca-6163-48a9-be12-8f6c50164b11) +![Снимок экрана 2025-06-21 000054](https://github.com/user-attachments/assets/4ff50220-d3dc-4144-89a1-965f3535999d) +![Снимок экрана 2025-06-21 000112](https://github.com/user-attachments/assets/a05ddab8-87c1-42b3-9083-09f0501f1e83) + +![Снимок экрана 2025-06-21 000158](https://github.com/user-attachments/assets/8ff8c77f-3275-48de-b0c0-074e1c77d8f6) + + From afc3d139155f4d94ec186ba9089293ba6737de3e Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 24 Jun 2025 19:59:39 +0400 Subject: [PATCH 28/50] Create haproxy.md --- haproxy.md | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 haproxy.md diff --git a/haproxy.md b/haproxy.md new file mode 100644 index 0000000000..25a00c4bf0 --- /dev/null +++ b/haproxy.md @@ -0,0 +1,53 @@ +# Домашнее задание к занятию "`Кластеризация и балансировка нагрузки" - `Хамуро И.А.` + +### Задание 1 +global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners + stats timeout 30s + user haproxy + group haproxy + daemon + + # Default SSL material locations + ca-base /etc/ssl/certs + crt-base /etc/ssl/private + + # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate + ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 + ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 + ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets + +defaults + log global + mode tcp + option tcplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + +listen stats # веб-страница со статистикой + bind :888 + mode http + stats enable + stats uri /stats + stats refresh 5s + stats realm Haproxy\ Statistics + +listen web_tcp # балансировка на 4 уровне (TCP) + bind :1325 + mode tcp + balance roundrobin + server s1 127.0.0.1:8888 check inter 3s + server s2 127.0.0.1:9999 check inter 3s + From d63e2bb6613baf859fc5e911c246e65265527d3a Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 24 Jun 2025 20:09:30 +0400 Subject: [PATCH 29/50] Update haproxy.md --- haproxy.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/haproxy.md b/haproxy.md index 25a00c4bf0..e2776baa5e 100644 --- a/haproxy.md +++ b/haproxy.md @@ -51,3 +51,5 @@ listen web_tcp # балансировка на 4 уровне (TCP) server s1 127.0.0.1:8888 check inter 3s server s2 127.0.0.1:9999 check inter 3s +![Снимок экрана 2025-06-24 200438](https://github.com/user-attachments/assets/2ae48d51-9e75-4f93-9520-4e25ce29fa54) + From 0d3bcbd82c0bc7530abe8a398cc3c60322fd2088 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 24 Jun 2025 20:14:01 +0400 Subject: [PATCH 30/50] Update haproxy.md --- haproxy.md | 98 +++++++++++++++++++++++++++--------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/haproxy.md b/haproxy.md index e2776baa5e..e56a46240f 100644 --- a/haproxy.md +++ b/haproxy.md @@ -1,55 +1,55 @@ # Домашнее задание к занятию "`Кластеризация и балансировка нагрузки" - `Хамуро И.А.` ### Задание 1 -global - log /dev/log local0 - log /dev/log local1 notice - chroot /var/lib/haproxy - stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners - stats timeout 30s - user haproxy - group haproxy - daemon - - # Default SSL material locations - ca-base /etc/ssl/certs - crt-base /etc/ssl/private - - # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate - ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 - ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 - ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets - -defaults - log global - mode tcp - option tcplog - option dontlognull - timeout connect 5000 - timeout client 50000 - timeout server 50000 - errorfile 400 /etc/haproxy/errors/400.http - errorfile 403 /etc/haproxy/errors/403.http - errorfile 408 /etc/haproxy/errors/408.http - errorfile 500 /etc/haproxy/errors/500.http - errorfile 502 /etc/haproxy/errors/502.http - errorfile 503 /etc/haproxy/errors/503.http - errorfile 504 /etc/haproxy/errors/504.http - -listen stats # веб-страница со статистикой - bind :888 - mode http - stats enable - stats uri /stats - stats refresh 5s - stats realm Haproxy\ Statistics - -listen web_tcp # балансировка на 4 уровне (TCP) - bind :1325 - mode tcp - balance roundrobin - server s1 127.0.0.1:8888 check inter 3s - server s2 127.0.0.1:9999 check inter 3s + global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners + stats timeout 30s + user haproxy + group haproxy + daemon + + # Default SSL material locations + ca-base /etc/ssl/certs + crt-base /etc/ssl/private + + # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate + ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 + ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 + ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets + + defaults + log global + mode tcp + option tcplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + + listen stats # веб-страница со статистикой + bind :888 + mode http + stats enable + stats uri /stats + stats refresh 5s + stats realm Haproxy\ Statistics + + listen web_tcp # балансировка на 4 уровне (TCP) + bind :1325 + mode tcp + balance roundrobin + server s1 127.0.0.1:8888 check inter 3s + server s2 127.0.0.1:9999 check inter 3s ![Снимок экрана 2025-06-24 200438](https://github.com/user-attachments/assets/2ae48d51-9e75-4f93-9520-4e25ce29fa54) From 9c68e9944a4aaa64cd38c0934887f88581ab7dae Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 24 Jun 2025 20:31:42 +0400 Subject: [PATCH 31/50] Update haproxy.md --- haproxy.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/haproxy.md b/haproxy.md index e56a46240f..3d55a17098 100644 --- a/haproxy.md +++ b/haproxy.md @@ -53,3 +53,63 @@ ![Снимок экрана 2025-06-24 200438](https://github.com/user-attachments/assets/2ae48d51-9e75-4f93-9520-4e25ce29fa54) + +### Задание 2 + global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners + stats timeout 30s + user haproxy + group haproxy + daemon + + ca-base /etc/ssl/certs + crt-base /etc/ssl/private + + ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 + ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 + ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets + + defaults + log global + mode http + option httplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + + listen stats + bind :888 + mode http + stats enable + stats uri /stats + stats refresh 5s + stats realm Haproxy\ Statistics + + frontend http_front + bind :8080 + mode http + acl is_example_local hdr(host) -i example.local + use_backend web_servers if is_example_local + default_backend no_match + + backend web_servers + mode http + balance roundrobin + server s1 127.0.0.1:8001 weight 2 check + server s2 127.0.0.1:8002 weight 3 check + server s3 127.0.0.1:8003 weight 4 check + + backend no_match + mode http + http-request deny deny_status 403 From 58f2c23ca9f135c5f1ed33773f61e10ec4587d63 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 24 Jun 2025 20:43:45 +0400 Subject: [PATCH 32/50] Update haproxy.md --- haproxy.md | 116 ++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/haproxy.md b/haproxy.md index 3d55a17098..7bc7fb323a 100644 --- a/haproxy.md +++ b/haproxy.md @@ -55,61 +55,61 @@ ### Задание 2 - global - log /dev/log local0 - log /dev/log local1 notice - chroot /var/lib/haproxy - stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners - stats timeout 30s - user haproxy - group haproxy - daemon - - ca-base /etc/ssl/certs - crt-base /etc/ssl/private - - ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 - ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 - ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets - - defaults - log global - mode http - option httplog - option dontlognull - timeout connect 5000 - timeout client 50000 - timeout server 50000 - errorfile 400 /etc/haproxy/errors/400.http - errorfile 403 /etc/haproxy/errors/403.http - errorfile 408 /etc/haproxy/errors/408.http - errorfile 500 /etc/haproxy/errors/500.http - errorfile 502 /etc/haproxy/errors/502.http - errorfile 503 /etc/haproxy/errors/503.http - errorfile 504 /etc/haproxy/errors/504.http - - listen stats - bind :888 - mode http - stats enable - stats uri /stats - stats refresh 5s - stats realm Haproxy\ Statistics - - frontend http_front - bind :8080 - mode http - acl is_example_local hdr(host) -i example.local - use_backend web_servers if is_example_local - default_backend no_match - - backend web_servers - mode http - balance roundrobin - server s1 127.0.0.1:8001 weight 2 check - server s2 127.0.0.1:8002 weight 3 check - server s3 127.0.0.1:8003 weight 4 check - - backend no_match - mode http - http-request deny deny_status 403 +global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners + stats timeout 30s + user haproxy + group haproxy + daemon + + ca-base /etc/ssl/certs + crt-base /etc/ssl/private + + ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 + ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 + ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets + +defaults + log global + mode http + option httplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + +listen stats + bind :888 + mode http + stats enable + stats uri /stats + stats refresh 5s + stats realm Haproxy\ Statistics + +frontend http_front + bind :8080 + mode http + acl is_example_local hdr(host) -i example.local + use_backend web_servers if is_example_local + default_backend no_match + +backend web_servers + mode http + balance roundrobin + server s1 127.0.0.1:8888 weight 2 check + server s2 127.0.0.1:9999 weight 3 check + server s3 127.0.0.1:7777 weight 4 check + +backend no_match + mode http + http-request deny deny_status 403 From 996a2e81a6f92076459fbc268def3e3160b3e54a Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 24 Jun 2025 20:50:44 +0400 Subject: [PATCH 33/50] Update haproxy.md --- haproxy.md | 117 ++++++++++++++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 56 deletions(-) diff --git a/haproxy.md b/haproxy.md index 7bc7fb323a..58c03f72b3 100644 --- a/haproxy.md +++ b/haproxy.md @@ -55,61 +55,66 @@ ### Задание 2 -global - log /dev/log local0 - log /dev/log local1 notice - chroot /var/lib/haproxy - stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners - stats timeout 30s - user haproxy - group haproxy - daemon - - ca-base /etc/ssl/certs - crt-base /etc/ssl/private - - ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 - ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 - ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets - -defaults - log global - mode http - option httplog - option dontlognull - timeout connect 5000 - timeout client 50000 - timeout server 50000 - errorfile 400 /etc/haproxy/errors/400.http - errorfile 403 /etc/haproxy/errors/403.http - errorfile 408 /etc/haproxy/errors/408.http - errorfile 500 /etc/haproxy/errors/500.http - errorfile 502 /etc/haproxy/errors/502.http - errorfile 503 /etc/haproxy/errors/503.http - errorfile 504 /etc/haproxy/errors/504.http - -listen stats - bind :888 - mode http - stats enable - stats uri /stats - stats refresh 5s - stats realm Haproxy\ Statistics - -frontend http_front - bind :8080 - mode http - acl is_example_local hdr(host) -i example.local - use_backend web_servers if is_example_local - default_backend no_match + global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners + stats timeout 30s + user haproxy + group haproxy + daemon + + # Default SSL material locations + ca-base /etc/ssl/certs + crt-base /etc/ssl/private + + # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate + ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 + ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 + ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets + + defaults + log global + mode http + option httplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + + listen stats + bind :888 + mode http + stats enable + stats uri /stats + stats refresh 5s + stats realm Haproxy\ Statistics + + frontend http_front + bind :8080 + mode http + acl is_example_local hdr(host) -i example.local + use_backend web_servers if is_example_local + default_backend no_match + + backend web_servers + mode http + balance roundrobin + server s1 127.0.0.1:8888 weight 2 check + server s2 127.0.0.1:9999 weight 3 check + server s3 127.0.0.1:7777 weight 4 check + + backend no_match + mode http + http-request deny deny_status 403 -backend web_servers - mode http - balance roundrobin - server s1 127.0.0.1:8888 weight 2 check - server s2 127.0.0.1:9999 weight 3 check - server s3 127.0.0.1:7777 weight 4 check +![Снимок экрана 2025-06-24 204846](https://github.com/user-attachments/assets/d3b47632-42ef-45ae-8e04-829be0a239c2) -backend no_match - mode http - http-request deny deny_status 403 From 1a4bb9f3ab2a36f4ded75e65355158b49285a127 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Wed, 25 Jun 2025 13:21:21 +0400 Subject: [PATCH 34/50] Update example --- example | 79 ++++++++++++++++++--------------------------------------- 1 file changed, 25 insertions(+), 54 deletions(-) diff --git a/example b/example index eefb59d031..0361abe643 100644 --- a/example +++ b/example @@ -1,62 +1,33 @@ #!/bin/bash -URL="http://127.0.0.1" -FILE="/var/www/html/index.nginx-debian.html" - -# Проверка HTTP-ответа от nginx -curl -s --head $URL | grep "200 OK" > /dev/null -if [ $? -ne 0 ]; then - exit 1 -fi - -# Проверка наличия файла -if [ ! -f "$FILE" ]; then - exit 1 -fi - -exit 0 - -vrrp_script chk_web { - script "/usr/local/bin/check_web.sh" - interval 3 - weight -20 +# Директория для бэкапа +BACKUP_DIR="/tmp/backup" +# Исходная директория (домашняя) +SOURCE_DIR="$HOME/" +# Лог-файл +LOG_FILE="/var/log/backup_home.log" + +# Проверяем, существует ли директория для бэкапа +mkdir -p "$BACKUP_DIR" || { + logger -t "home-backup" "Ошибка: не удалось создать $BACKUP_DIR" + exit 1 } -vrrp_instance VI_1 { - state MASTER - interface ens33 - virtual_router_id 15 - priority 150 - advert_int 1 - - virtual_ipaddress { - 192.168.1.15/24 - } +# Выполняем синхронизацию с rsync +rsync -avh --delete --checksum --exclude='.*/' "$SOURCE_DIR" "$BACKUP_DIR" &>> "$LOG_FILE" - track_script { - chk_web - } -} - - -vrrp_script chk_web { - script "/usr/local/bin/check_web.sh" - interval 3 - weight -20 -} +# Проверяем код завершения rsync +if [ $? -eq 0 ]; then + logger -t "home-backup" "Резервное копирование завершено успешно" +else + logger -t "home-backup" "Ошибка резервного копирования (код $?)" +fi -vrrp_instance VI_1 { - state BACKUP - interface ens33 - virtual_router_id 15 - priority 100 - advert_int 1 +sudo chmod +x /usr/local/bin/backup_home.sh +crontab -e +0 3 * * * /usr/local/bin/backup_home.sh - virtual_ipaddress { - 192.168.1.15/24 - } +cat /var/log/backup_home.log - track_script { - chk_web - } -} +journalctl -t "home-backup" # (systemd) +grep "home-backup" /var/log/syslog # (syslog) From fbc870c878c9672eb60c7453ed938081dbeff22d Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Wed, 25 Jun 2025 14:00:49 +0400 Subject: [PATCH 35/50] Update example --- example | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/example b/example index 0361abe643..990527d2ad 100644 --- a/example +++ b/example @@ -1,33 +1,31 @@ #!/bin/bash -# Директория для бэкапа -BACKUP_DIR="/tmp/backup" -# Исходная директория (домашняя) -SOURCE_DIR="$HOME/" -# Лог-файл -LOG_FILE="/var/log/backup_home.log" - -# Проверяем, существует ли директория для бэкапа -mkdir -p "$BACKUP_DIR" || { - logger -t "home-backup" "Ошибка: не удалось создать $BACKUP_DIR" - exit 1 -} - -# Выполняем синхронизацию с rsync -rsync -avh --delete --checksum --exclude='.*/' "$SOURCE_DIR" "$BACKUP_DIR" &>> "$LOG_FILE" - -# Проверяем код завершения rsync +# Параметры +SRC="$HOME/" +DEST="/tmp/backup/" +LOGFILE="/var/log/backup_home.log" + +# Создание директории назначения при необходимости +mkdir -p "$DEST" + +# Выполнение зеркального резервного копирования +rsync -a --delete "$SRC" "$DEST" >> "$LOGFILE" 2>&1 + +# Проверка статуса завершения и логгирование if [ $? -eq 0 ]; then - logger -t "home-backup" "Резервное копирование завершено успешно" + logger "Backup completed successfully" + echo "$(date): Backup completed successfully" >> "$LOGFILE" else - logger -t "home-backup" "Ошибка резервного копирования (код $?)" + logger "Backup failed" + echo "$(date): Backup failed" >> "$LOGFILE" fi -sudo chmod +x /usr/local/bin/backup_home.sh +chmod +x ~/backup_home.sh + crontab -e -0 3 * * * /usr/local/bin/backup_home.sh -cat /var/log/backup_home.log +0 2 * * * /home/USERNAME/backup_home.sh + +/home/USERNAME/backup_home.sh -journalctl -t "home-backup" # (systemd) -grep "home-backup" /var/log/syslog # (syslog) +tail /var/log/backup_home.log From e055e37cdc06800b884476e9819021d402961375 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Wed, 25 Jun 2025 14:12:35 +0400 Subject: [PATCH 36/50] Create rsync.md --- rsync.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 rsync.md diff --git a/rsync.md b/rsync.md new file mode 100644 index 0000000000..9b6c126037 --- /dev/null +++ b/rsync.md @@ -0,0 +1,14 @@ +# Домашнее задание к занятию "Резервное копирование" - `Хамуро И.А.` + +### Задание 1 + +![Снимок экрана 2025-06-25 131328](https://github.com/user-attachments/assets/e924623a-6a97-42b0-ab27-fafca5c99709) + + +### Задание 2 +![Снимок экрана 2025-06-25 140209](https://github.com/user-attachments/assets/530140f0-8096-45f0-b3f7-2826e4451d40) + +![Снимок экрана 2025-06-25 140725](https://github.com/user-attachments/assets/aaf9e060-c757-46d0-a722-28e8b1ea115b) + +![Снимок экрана 2025-06-25 140920](https://github.com/user-attachments/assets/6f57377a-4f62-4af5-bd42-f3164674f46c) + From 6770411fd01ce946fa19fc6e3d32a50322cf4538 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 20 Jul 2025 22:43:17 +0400 Subject: [PATCH 37/50] Create Database-and-theseTypes --- DB/Database-and-theseTypes | 82 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 DB/Database-and-theseTypes diff --git a/DB/Database-and-theseTypes b/DB/Database-and-theseTypes new file mode 100644 index 0000000000..b801e5f7e4 --- /dev/null +++ b/DB/Database-and-theseTypes @@ -0,0 +1,82 @@ +# Домашнее задание к занятию "Базы данных и их типы" - `Хамуро Илья` + +### Задание 1 +Кейс +Крупная строительная компания, которая также занимается проектированием и девелопментом, решила создать правильную архитектуру для работы с данными. Ниже представлены задачи, которые необходимо решить для каждой предметной области. + +Какие типы СУБД, на ваш взгляд, лучше всего подойдут для решения этих задач и почему? + +1.1. Бюджетирование проектов с дальнейшим формированием финансовых аналитических отчётов и прогнозирования рисков. СУБД должна гарантировать целостность и чёткую структуру данных. + +Рекомендуемая СУБД: Реляционная (PostgreSQL, Microsoft SQL Server, Oracle) +Почему? + +- Требуется строгая структура, ACID-гарантии, сложные JOIN-запросы для аналитики. + +- Поддержка транзакций критична для финансовых данных. + +- Возможность интеграции с BI-инструментами (Power BI, Tableau). + +1.1.* Хеширование стало занимать длительно время, какое API можно использовать для ускорения работы? + +API: Можно использовать Redis API (кеширование промежуточных результатов) или специализированные библиотеки (например, Google CityHash для быстрого хеширования). + +1.2. Под каждый девелоперский проект создаётся отдельный лендинг, и все данные по лидам стекаются в CRM к маркетологам и менеджерам по продажам. Какой тип СУБД лучше использовать для лендингов и для CRM? СУБД должны быть гибкими и быстрыми. + +Рекомендуемые СУБД: + +Лендинги: Документоориентированная (MongoDB, Firebase) – гибкость, быстрое чтение/запись. + +CRM: Реляционная (PostgreSQL) или гибрид (MongoDB + SQL для аналитики). + +1.2.* Можно ли эту задачу закрыть одной СУБД? И если да, то какой именно СУБД и какой реализацией? + +Да, если: Использовать PostgreSQL с JSONB (гибкость для лендингов + структура для CRM). + +Альтернатива – MongoDB (если CRM не требует сложных JOIN). + +1.3. Отдел контроля качества решил создать базу по корпоративным нормам и правилам, обучающему материалу и так далее, сформированную согласно структуре компании. СУБД должна иметь простую и понятную структуру. + +Рекомендуемая СУБД: Графовая (Neo4j) или реляционная (PostgreSQL). +Почему? + +Если данные иерархичны (например, дерево документов), подойдёт PostgreSQL с рекурсивными запросами. + +Если важны связи (например, правила → отделы → проекты), лучше Neo4j. + +1.3.* Можно ли под эту задачу использовать уже существующую СУБД из задач выше и если да, то как лучше это реализовать? + +Да, если: Взять PostgreSQL из 1.1 или 1.2 и добавить таблицы для документов. + +1.4. Департамент логистики нуждается в решении задач по быстрому формированию маршрутов доставки материалов по объектам и распределению курьеров по маршрутам с доставкой документов. СУБД должна уметь быстро работать со связями. + +Рекомендуемая СУБД: Графовая (Neo4j) или реляционная с гео-расширениями (PostgreSQL + PostGIS). +Почему? + +Графы идеальны для маршрутизации (поиск кратчайшего пути). + +PostGIS удобен для работы с координатами. + +1.4.* Можно ли к этой СУБД подключить отдел закупок или для них лучше сформировать свою СУБД в связке с СУБД логистов? + +Да, если: Использовать PostgreSQL (логистика + закупки в одной схеме). + +Нет, если: Закупкам нужна специализированная система (например, ERP-модуль). + +1.5.* Можно ли все перечисленные выше задачи решить, используя одну СУБД? Если да, то какую именно? + +PostgreSQL (с JSONB, PostGIS, рекурсивными запросами) покрывает 90% задач: + +Финансы (1.1) – транзакции. + +CRM (1.2) – гибкость через JSONB. + +База знаний (1.3) – иерархии. + +Логистика (1.4) – PostGIS. + +Исключение: Для сложной маршрутизации лучше добавить Neo4j. + +Альтернатива: + +MongoDB + PostgreSQL + Redis (оптимально для масштабирования). From a0e5a981d6a72858b86f648a1fe5e608b3463735 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 20 Jul 2025 22:57:13 +0400 Subject: [PATCH 38/50] Update Database-and-theseTypes --- DB/Database-and-theseTypes | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/DB/Database-and-theseTypes b/DB/Database-and-theseTypes index b801e5f7e4..7951c98004 100644 --- a/DB/Database-and-theseTypes +++ b/DB/Database-and-theseTypes @@ -80,3 +80,82 @@ CRM (1.2) – гибкость через JSONB. Альтернатива: MongoDB + PostgreSQL + Redis (оптимально для масштабирования). + +### Задание 2 Транзакции + +2.1. Пользователь пополняет баланс счёта телефона, распишите пошагово, какие действия должны произойти для того, чтобы транзакция завершилась успешно. Ориентируйтесь на шесть действий. + +1) Старт транзакции – СУБД начинает транзакцию, блокируя необходимые данные (баланс пользователя). + +2) Проверка реквизитов – Система проверяет, существует ли указанный номер телефона и доступен ли для пополнения. + +3) Списание средств с плательщика – Если пополнение идёт с карты/кошелька, списывается сумма. + +4) Зачисление средств на счёт телефона – Баланс номера увеличивается на указанную сумму. + +5) Фиксация операции в логе – Запись о транзакции сохраняется в историю (для отката при ошибке). + +6) Фиксация транзакции (COMMIT) – Если все шаги успешны, транзакция завершается, изменения сохраняются. + +2.1.* Какие действия должны произойти, если пополнение счёта телефона происходило бы через автоплатёж? + +1) Проверка подписки на автоплатёж – Система проверяет, активен ли автоплатёж для данного номера. + +2) Проверка лимитов – Если у пользователя установлен лимит (например, "не более 1000 руб./месяц"), система проверяет, не превышен ли он. + +3) Автоматическое списание – Средства списываются с привязанной карты/кошелька без запроса подтверждения. + +4) Уведомление пользователя – После успешного пополнения отправляется SMS/email-уведомление. + +### Задание 3 SQL NoSQL + +3.1. Пять преимуществ SQL-систем перед NoSQL +Гарантии ACID – Полная поддержка транзакций (атомарность, согласованность, изолированность, долговечность), что критично для финансовых и бизнес-приложений. + +Строгая схема данных – Чёткая структура таблиц, типы данных, внешние ключи. Упрощает валидацию и уменьшает риск ошибок. + +Мощные JOIN-запросы – Возможность сложных связей между таблицами без дублирования данных (нормализация). + +Зрелость и экосистема – Большой выбор инструментов (BI, ETL, ORM), обширная документация и сообщество. + +Универсальность – Одна СУБД (например, PostgreSQL) может закрывать задачи аналитики, транзакций и даже частично NoSQL-сценарии (через JSONB). + +3.1. Преимущества NewSQL перед SQL и NoSQL* + +NewSQL (CockroachDB, Google Spanner, YugabyteDB) – гибрид, сочетающий плюсы SQL и NoSQL: + +1) Перед классическим SQL: + +Горизонтальная масштабируемость – Распределённые кластеры без потери ACID (в отличие от шардинга в SQL). + +Высокая отказоустойчивость – Автоматическое восстановление при падении узлов. + +2) Перед NoSQL: + +Полная поддержка SQL-синтаксиса – JOIN, транзакции, сложные запросы без ограничений NoSQL. + +Гибридные модели данных – Можно использовать как реляционные таблицы, так и документы (как в MongoDB). + +### Задание 4. Кластеры + +Критерии выбора СУБД: + +1) Горизонтальная масштабируемость – Система должна эффективно распределять нагрузку на 1000 узлов без деградации производительности. + +2) Поддержка распределённых транзакций – Если нужны ACID-гарантии (например, для финансовых расчётов). + +3) Тип рабочих нагрузок: + + OLTP (много коротких транзакций) → NewSQL (CockroachDB, YugabyteDB). + OLAP (аналитика, сложные агрегации) → Колоночные СУБД (ClickHouse, Apache Druid). +Гибридные задачи → Greenplum, Vertica. + +4) Отказоустойчивость – Автоматическое восстановление при падении узлов. + +5) Скорость обработки запросов – Минимизация задержек при работе с большими данными. + +Если нужна аналитика → ClickHouse (MPP) – максимальная скорость агрегаций. + +Если нужны транзакции + масштабируемость → CockroachDB (NewSQL, Shared-Nothing). + +Если данные смешанные (OLTP + OLAP) → TiDB (гибридный подход). From 39b57b0b50d345d6448fb9ab2fc4ebfefa9f9120 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 20 Jul 2025 22:58:31 +0400 Subject: [PATCH 39/50] Rename Database-and-theseTypes to Database-and-theseTypes.md --- DB/{Database-and-theseTypes => Database-and-theseTypes.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename DB/{Database-and-theseTypes => Database-and-theseTypes.md} (100%) diff --git a/DB/Database-and-theseTypes b/DB/Database-and-theseTypes.md similarity index 100% rename from DB/Database-and-theseTypes rename to DB/Database-and-theseTypes.md From 0c263cb0bb18b43e1114ce27032f1ff24744b298 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 20 Jul 2025 23:32:30 +0400 Subject: [PATCH 40/50] Create Redis_and_memcached.md --- DB/Redis_and_memcached.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 DB/Redis_and_memcached.md diff --git a/DB/Redis_and_memcached.md b/DB/Redis_and_memcached.md new file mode 100644 index 0000000000..b395d38b11 --- /dev/null +++ b/DB/Redis_and_memcached.md @@ -0,0 +1,22 @@ +# Домашнее задание к занятию "Кеширование Redis/memcached" - `Хамуро Илья` + +### Задание 1 Кеширование +1. Ускорение доступа к данным +Проблема: Частые запросы к медленным источникам (базам данных, диску, API) замедляют работу приложения. +Решение: Кеширование часто запрашиваемых данных в оперативной памяти (например, Redis, Memcached) ускоряет их получение. + +2. Снижение нагрузки на сервер +Проблема: Высоконагруженный сервер (например, веб-сайт) может не справляться с большим количеством запросов. +Решение: Кеширование страниц (например, через CDN или Nginx) снижает количество обращений к бэкенду. + +3. Уменьшение задержек в распределённых системах +Проблема: Запросы к удалённым серверам (например, внешним API) могут выполняться долго. +Решение: Локальный кеш результатов уменьшает зависимость от внешних сервисов. + +4. Оптимизация вычислений +Проблема: Сложные вычисления (например, агрегация статистики) требуют много ресурсов. +Решение: Кеширование результатов (например, в виде предварительно рассчитанных отчётов) ускоряет их получение. + +### Задание 2. Memcached + +Снимок экрана 2025-07-20 232545 From 70a88eaec4e23d9bbcc514a46b892d478d037945 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sun, 20 Jul 2025 23:54:31 +0400 Subject: [PATCH 41/50] Update Redis_and_memcached.md --- DB/Redis_and_memcached.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DB/Redis_and_memcached.md b/DB/Redis_and_memcached.md index b395d38b11..42f5f197d6 100644 --- a/DB/Redis_and_memcached.md +++ b/DB/Redis_and_memcached.md @@ -20,3 +20,5 @@ ### Задание 2. Memcached Снимок экрана 2025-07-20 232545 + +### Задание 3. Удаление по TTL в Memcached From bb12403dcd6756e03a761587008b6709f427086f Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 22 Jul 2025 23:49:41 +0400 Subject: [PATCH 42/50] Update Redis_and_memcached.md --- DB/Redis_and_memcached.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DB/Redis_and_memcached.md b/DB/Redis_and_memcached.md index 42f5f197d6..ddc034854f 100644 --- a/DB/Redis_and_memcached.md +++ b/DB/Redis_and_memcached.md @@ -22,3 +22,7 @@ Снимок экрана 2025-07-20 232545 ### Задание 3. Удаление по TTL в Memcached +Решил выполнить задание с помощью пайтон) +Снимок экрана 2025-07-22 223928 + +Снимок экрана 2025-07-22 223940 From b96d54cf01eb72d84ec4518525f510c110587eed Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Tue, 22 Jul 2025 23:57:13 +0400 Subject: [PATCH 43/50] Update Redis_and_memcached.md --- DB/Redis_and_memcached.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/DB/Redis_and_memcached.md b/DB/Redis_and_memcached.md index ddc034854f..ffb2e6dd21 100644 --- a/DB/Redis_and_memcached.md +++ b/DB/Redis_and_memcached.md @@ -26,3 +26,7 @@ Снимок экрана 2025-07-22 223928 Снимок экрана 2025-07-22 223940 + +### Задание 4. Запись данных в Redis + +Снимок экрана 2025-07-22 235551 From 819e602a7977666d9e7ae060e3934b28e6f33a99 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 25 Jul 2025 22:06:40 +0400 Subject: [PATCH 44/50] Update example --- example | 39 ++++++++------------------------------- 1 file changed, 8 insertions(+), 31 deletions(-) diff --git a/example b/example index 990527d2ad..685e3f1fe1 100644 --- a/example +++ b/example @@ -1,31 +1,8 @@ -#!/bin/bash - -# Параметры -SRC="$HOME/" -DEST="/tmp/backup/" -LOGFILE="/var/log/backup_home.log" - -# Создание директории назначения при необходимости -mkdir -p "$DEST" - -# Выполнение зеркального резервного копирования -rsync -a --delete "$SRC" "$DEST" >> "$LOGFILE" 2>&1 - -# Проверка статуса завершения и логгирование -if [ $? -eq 0 ]; then - logger "Backup completed successfully" - echo "$(date): Backup completed successfully" >> "$LOGFILE" -else - logger "Backup failed" - echo "$(date): Backup failed" >> "$LOGFILE" -fi - -chmod +x ~/backup_home.sh - -crontab -e - -0 2 * * * /home/USERNAME/backup_home.sh - -/home/USERNAME/backup_home.sh - -tail /var/log/backup_home.log +#wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - +#sudo apt-get install apt-transport-https +#echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list +#sudo apt-get update && sudo apt-get install elasticsearch +#sudo systemctl start elasticsearch +#sudo systemctl enable elasticsearch +#sudo nano /etc/elasticsearch/elasticsearch.yml +#curl -X GET 'localhost:9200/_cluster/health?pretty' From 0ffa14c8bfc402ac1c40bf00f85cad5c7ef758e7 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 25 Jul 2025 22:20:55 +0400 Subject: [PATCH 45/50] Update example --- example | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/example b/example index 685e3f1fe1..465742e289 100644 --- a/example +++ b/example @@ -1,8 +1,3 @@ -#wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - -#sudo apt-get install apt-transport-https -#echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list -#sudo apt-get update && sudo apt-get install elasticsearch -#sudo systemctl start elasticsearch -#sudo systemctl enable elasticsearch -#sudo nano /etc/elasticsearch/elasticsearch.yml +#docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e "cluster.name=my_random_cluster_12345" elasticsearch:8.12.0 + #curl -X GET 'localhost:9200/_cluster/health?pretty' From 8b995b465729810d29a4fee4f90c5732f9c5e225 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 25 Jul 2025 22:42:58 +0400 Subject: [PATCH 46/50] Update example --- example | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/example b/example index 465742e289..0f5b271c13 100644 --- a/example +++ b/example @@ -1,3 +1,58 @@ -#docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e "cluster.name=my_random_cluster_12345" elasticsearch:8.12.0 +version: '3.8' -#curl -X GET 'localhost:9200/_cluster/health?pretty' +services: + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 + container_name: elasticsearch + environment: + - discovery.type=single-node + - cluster.name=my_random_cluster_12345 # Замените на свой cluster_name + - xpack.security.enabled=false # Отключаем security для упрощения + ports: + - "9200:9200" + volumes: + - es_data:/usr/share/elasticsearch/data + networks: + - elk_net + + kibana: + image: docker.elastic.co/kibana/kibana:8.12.0 + container_name: kibana + depends_on: + - elasticsearch + ports: + - "5601:5601" + environment: + - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 + networks: + - elk_net + + logstash: + image: docker.elastic.co/logstash/logstash:8.12.0 + container_name: logstash + depends_on: + - elasticsearch + volumes: + - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf + - /var/log/nginx:/var/log/nginx # Монтируем логи Nginx + environment: + - LS_JAVA_OPTS=-Xmx256m -Xms256m + networks: + - elk_net + + nginx: + image: nginx:latest + container_name: nginx + ports: + - "80:80" + volumes: + - /var/log/nginx:/var/log/nginx # Логи Nginx + networks: + - elk_net + +volumes: + es_data: + +networks: + elk_net: + driver: bridge From a907aa6f23667107d50a07bec4b96e4fd6d6bfda Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Fri, 25 Jul 2025 22:45:13 +0400 Subject: [PATCH 47/50] Update example --- example | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/example b/example index 0f5b271c13..d84705276d 100644 --- a/example +++ b/example @@ -56,3 +56,23 @@ volumes: networks: elk_net: driver: bridge + + +logstash.conf + +input { + file { + path => "/var/log/nginx/access.log" + start_position => "beginning" + sincedb_path => "/dev/null" + } +} + +output { + elasticsearch { + hosts => ["http://elasticsearch:9200"] + index => "nginx-access-logs-%{+YYYY.MM.dd}" + } + stdout { codec => rubydebug } +} + From 36d4771ddabdb9ac493bd7676970782f53eab467 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 26 Jul 2025 20:47:09 +0400 Subject: [PATCH 48/50] Create ELK.md --- DB/ELK.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 DB/ELK.md diff --git a/DB/ELK.md b/DB/ELK.md new file mode 100644 index 0000000000..3fa3f39b0b --- /dev/null +++ b/DB/ELK.md @@ -0,0 +1,12 @@ +# Домашнее задание к занятию "ELK" - `Хамуро Илья` + +### Задание 1 +Снимок экрана 2025-07-26 200548 + +### Задание 2 + +Снимок экрана 2025-07-26 203115 + +### Задание 3 + + From 3557475b00f2adf8c4c74ac252d7bcdcd75005a3 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 26 Jul 2025 20:47:20 +0400 Subject: [PATCH 49/50] Update example --- example | 80 ++++----------------------------------------------------- 1 file changed, 5 insertions(+), 75 deletions(-) diff --git a/example b/example index d84705276d..d04032d247 100644 --- a/example +++ b/example @@ -1,78 +1,8 @@ -version: '3.8' - -services: - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 - container_name: elasticsearch - environment: - - discovery.type=single-node - - cluster.name=my_random_cluster_12345 # Замените на свой cluster_name - - xpack.security.enabled=false # Отключаем security для упрощения - ports: - - "9200:9200" - volumes: - - es_data:/usr/share/elasticsearch/data - networks: - - elk_net - - kibana: - image: docker.elastic.co/kibana/kibana:8.12.0 - container_name: kibana - depends_on: - - elasticsearch - ports: - - "5601:5601" - environment: - - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - networks: - - elk_net - - logstash: - image: docker.elastic.co/logstash/logstash:8.12.0 - container_name: logstash - depends_on: - - elasticsearch - volumes: - - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf - - /var/log/nginx:/var/log/nginx # Монтируем логи Nginx - environment: - - LS_JAVA_OPTS=-Xmx256m -Xms256m - networks: - - elk_net - - nginx: - image: nginx:latest - container_name: nginx - ports: - - "80:80" - volumes: - - /var/log/nginx:/var/log/nginx # Логи Nginx - networks: - - elk_net - -volumes: - es_data: - -networks: - elk_net: - driver: bridge - - -logstash.conf - -input { - file { - path => "/var/log/nginx/access.log" - start_position => "beginning" - sincedb_path => "/dev/null" +filter { + grok { + match => { "message" => "%{COMBINEDAPACHELOG}" } } -} - -output { - elasticsearch { - hosts => ["http://elasticsearch:9200"] - index => "nginx-access-logs-%{+YYYY.MM.dd}" + date { + match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] } - stdout { codec => rubydebug } } - From 430aaecc9bcb36c0cedd3817c21dc485843dc9e2 Mon Sep 17 00:00:00 2001 From: IlyaKham Date: Sat, 26 Jul 2025 21:48:34 +0400 Subject: [PATCH 50/50] Update example --- example | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/example b/example index d04032d247..c08c273a6e 100644 --- a/example +++ b/example @@ -1,8 +1,38 @@ +input { + file { + path => "/var/log/nginx/access.log" + start_position => "beginning" + sincedb_path => "/dev/null" + } +} + filter { grok { - match => { "message" => "%{COMBINEDAPACHELOG}" } + match => { "message" => '%{IPORHOST:client_ip} - - \[%{HTTPDATE:timestamp}\] "%{WORD:http_method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response_code:int} %{NUMBER:bytes_sent:int} "%{GREEDYDATA:referrer}" "%{GREEDYDATA:user_agent}" "%{GREEDYDATA:other}"' } } + date { - match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ] + match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"] + target => "@timestamp" + } + + useragent { + source => "user_agent" + target => "user_agent_details" } } + + + +output { + stdout { + } + elasticsearch { + hosts => [ "http://elasticsearch:9200" ] + index => "logs_app_gen%-%{+YYYY.MM.dd}" + } +} + + + +