DevOps by REBRAIN
28.8K subscribers
544 photos
14 videos
4 files
1.13K links
Открытые практикумы по DevOps, Linux, Golang, Networks, Security

Мы на связи:
info@rebrainme.com
+7 (499) 116-34-68

https://rebrainme.com/

Зарегистрированы в РКН: https://knd.gov.ru/license?id=674db558d793bc0b0b8845ff&registryType=bloggersPermission
Download Telegram
Сегодня в 19:00: Wi-Fi из одной точки через CAPWAP

Когда точек доступа в офисе два десятка, каждая живёт со своим конфигом. Сменить SSID или пароль значит обойти их все. CAPWAP переносит управление на контроллер: точки сами находят его и забирают настройки.

Программа вебинара:
🟢 CAPWAP: основные теоретические сведения;
🟢 методы обнаружения контроллера точками доступа;
🟢 базовая настройка контроллера Huawei AC.

Ведёт Андрей Шабалин — тренер Cisco / Huawei, инструктор академии Eltex и Астра-Университета.

Участие бесплатное, начало в 19:00 по МСК, регистрация по кнопке под постом.

Сетевое оборудование и беспроводные сети по порядку разбираем в курсе Networks.
Поменяли что-то руками в кластере? Argo CD откатит
Kubernetes, серия 2 из 3

Ночью кто-то сделал kubectl edit, чтобы потушить пожар. Утром в Git одно, в кластере другое: следующий деплой молча перетрёт правку, или она проживёт полгода, и никто не вспомнит, откуда она взялась. Это называется дрифт.

В GitOps источник правды — Git. Argo CD сравнивает его с кластером и приводит кластер к Git.

🟢 Helm-чарт описывает приложение, values для прода лежат в репозитории.
🟢 Application говорит Argo CD, что и куда разворачивать:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: shop
namespace: argocd
spec:
project: default
source:
repoURL: https://git.example.com/team/shop.git
targetRevision: main
path: charts/shop
destination:
server: https://kubernetes.default.svc
namespace: shop
syncPolicy:
automated:
selfHeal: true
prune: true

🟢 selfHeal возвращает ресурс к состоянию из Git, если его поменяли руками. prune удаляет из кластера то, что убрали из Git.

Проверить можно за минуту:
kubectl -n shop scale deploy shop --replicas=5
argocd app get shop # OutOfSync, через несколько секунд снова Synced
kubectl -n shop get deploy shop # реплик снова столько, сколько в Git

Новый коммит Argo CD по умолчанию подтягивает из Git в течение трёх минут, а ручную правку selfHeal откатывает почти сразу.

Оговорка: во время инцидента selfHeal откатит и ваш хотфикс. Хотфикс делайте коммитом в Git или на время отключайте автосинк у приложения.

Application, политики синхронизации, App of Apps, ApplicationSets и секреты в GitOps разбираем в курсе Argo CD, чарты — в курсе Helm. Первые задания обоих курсов открыты бесплатно.

В следующей серии: production-контур целиком, от git push до алерта.
👍9🔥1
Сегодня в 20:00: GlusterFS, распределённая файловая система

Один файловый сервер — одна точка отказа, и отказывает она обычно в пятницу вечером. На открытом практикуме Андрей Буранов покажет, как собрать хранилище из нескольких серверов на GlusterFS и чем этот подход отличается от DRBD.

Программа:
🟢 чем GlusterFS отличается от DRBD
🟢 типы томов GlusterFS
🟢 настраиваем GlusterFS

Ведёт Андрей Буранов — системный администратор в департаменте VK Play, 10+ лет работает с Linux, 8+ лет преподаёт и входит в топ-3 преподавателей образовательных порталов.

Участие бесплатное, начало в 20:00 по МСК.
↘️ Зарегистрироваться

Распределённое хранение и виртуализацию на практике разбираем в курсе Proxmox.
🔥9❤1👍1
PostgreSQL тормозит, а CPU в норме: ищем медленные запросы

Жалоба «база тормозит», а на графиках CPU 30% и памяти хватает. Чаще всего виноват не сервер, а пара запросов, которые читают таблицу целиком. Найти их можно за несколько минут.

🟢 Включите статистику запросов. Расширение pg_stat_statements копит время выполнения по каждому запросу. В postgresql.conf:
shared_preload_libraries = 'pg_stat_statements'
После перезапуска в нужной базе:
CREATE EXTENSION pg_stat_statements;
🟢 Найдите самые дорогие запросы. Сортируйте по суммарному времени, а не по самому долгому запросу: короткий запрос, вызванный миллион раз, нагружает базу сильнее.
SELECT calls,
round(total_exec_time) AS total_ms,
round(mean_exec_time, 1) AS avg_ms,
left(query, 80) AS query
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 5;

🟢 Посмотрите план запроса:
EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM orders WHERE customer_id = 42;

Seq Scan on orders и тысячи страниц в Buffers: shared read значат, что таблица читается целиком.
🟢 Добавьте индекс и проверьте план ещё раз:
CREATE INDEX CONCURRENTLY idx_orders_customer ON orders (customer_id);
CONCURRENTLY строит индекс без блокировки записи в таблицу, на проде это важно. В плане должен появиться Index Scan.

Сегодня в 19:00 Николай Лавлинский покажет PMM: он собирает такую статистику по PostgreSQL и MySQL в дашборды, чтобы не ходить в каждую базу с SQL. Участие бесплатное, регистрация по кнопке под постом.

EXPLAIN, индексы, VACUUM, репликацию и мониторинг разбираем в курсе PostgreSQL, отказоустойчивый кластер — в курсе Patroni.
👍7
🗓️ Расписание вебинаров на сегодня

⏰ 19:00 МСК - Мониторинг MySQL и PostgreSQL c PMM
🔗 Регистрация и программа

О вебинаре напомним за 5 минут до начала на этом канале.
Также вы сможете зайти через личный кабинет.

🔥 Задать вопросы и обсудить детали можно в нашем чате
❤1🔥1
Новый курс: Highload: Monitoring & Observability

Алерт пришёл, дашборд красный, а чтобы найти запрос, который тормозит, приходится открывать три системы и сверять время на глаз. На курсе вы связываете метрики, логи и трассы через trace_id и exemplars, чтобы от алерта до первопричины было несколько переходов.

Что внутри:
🟢 Prometheus 3.x, Alertmanager и Grafana с дашбордами как кодом;
🟢 OpenTelemetry Collector, Jaeger и tail sampling: 100% трасс с ошибками и 10% остальных;
🟢 Fluent Bit, кластер Elasticsearch из трёх узлов с ILM и Graylog для сравнения;
🟢 Zabbix с LLD, Proxy и TimescaleDB.

18 уроков и 5 тренажёров с инцидентами, в среднем 42 часа на прохождение курса. В финале собираете контур наблюдаемости для микросервисного приложения, который запускается из репозитория одной командой, и разбираете подброшенный инцидент от алерта до первопричины в отчёте rca.md.

Для кого: администраторы, которые растут в DevOps или SRE, и DevOps-инженеры.

Что нужно для прохождения: знания Linux в консоли, Docker Compose, основы сетей и первый опыт с Kubernetes: kubectl, Deployment, Service.

До 20 октября включительно скидка 5 000 ₽.


↘️ на практикум

↘️ на практикум+тренажеры
👍3
Обновили курс Kubernetes Admin

Собрали всю обратную свзяь от вас и приняли решение выпустить новую версию курса. В новой версии задания на актуальных версиях: обновление кластера с 1.34 до 1.35 через kubeadm, Kubespray 2.29, etcd 3.5.26, cert-manager 1.19.

Курс можно купить вместе с записью интенсива от василия Озерова: 12 занятий от Kubernetes the hard way и TLS до CNI вручную, Flannel, Calico и Cilium, MetalLB и CSI.

32 урока в двух модулях, в среднем 82 часа. Финальный проект: production-ready HA-кластер из трёх мастер-нод с внешним балансировщиком, мониторингом, логированием, автоматическим выпуском сертификатов и квотами для команд разработки.

Если вы учитесь на прошлой версии, то сможете бесплатно обновить версию до новой через нашу поддержку. Для этого пишите на почту info@rebrainme.com.

Для кого: DevOps-инженеры, которые переходят с managed-кластеров на self-hosted, и системные администраторы. Нужны уверенный Linux (bash, systemd, сеть), основы контейнеров и базовый Ansible. Если Kubernetes для вас новый, начните с Kubernetes Base.

До 20 октября включительно скидка 7 000 ₽. Первые задания можно пройти бесплатно в демо.

↘️ Подробнее о курсе
👍7🔥4❤3
Обновили курс Redis: теперь на Redis 8 и с тренажёрами

В Redis 8 в ядро вошли Query Engine, JSON и векторный поиск, а наш курс был собран под прошлые версии. Мы пересобрали его целиком.

Что внутри новой версии:
🟢 протокол RESP3 и сборка Redis 8 из исходников;
🟢 паттерны кэширования, распределённые блокировки на SET NX EX и Redlock, Client-Side Caching;
🟢 Streams с Consumer Groups и XAUTOCLAIM для упавших воркеров;
🟢 Query Engine, JSON и Vector Sets: гибридный поиск в одном запросе;
🟢 RDB и Multi-Part AOF, политики вытеснения, Sentinel, Redis Cluster с TLS и ACL;
🟢 диагностика: SLOWLOG, LATENCY HISTOGRAM, --bigkeys и --hotkeys.

15 уроков и 5 тренажёров с инцидентами, в среднем 36 часов. Финальный проект: отказоустойчивая система обработки файлов на Python или Go поверх Redis Cluster с TLS и ACL.

Скрипты на Python или Go в курсе остались: на них проверяются блокировки, очереди и финальный проект. Если вы совсем не пишете код, будет тяжело.

Для кого: DevOps, SRE и администраторы, которые отвечают за Redis в проде, и бэкенд-разработчики.

Если вы учитесь на прошлой версии, то сможете бесплатно обновить версию до новой через нашу поддержку. Для этого пишите на почту info@rebrainme.com.

До 20 октября включительно скидка. Первые уроки можно пройти бесплатно в демо, подробнее о курсе на странице.
👍9❤4
Как оплатить обучение за счёт компании: шаблон письма руководителю

«Курс зашёл, кубер развёрнут, работодатель счастлив» — так студент REBRAIN описал итог курса. Задача у него была рабочая: за два месяца перевести микросервисы в Kubernetes от вендора в частное облако.

Такое обучение часто оплачивает компания. Руководитель быстрее согласует курс, когда в запросе есть задача команды, результат после курса и стоимость. Вот шаблон, который можно отправить сегодня:
Тема: обучение по курсу «[название]» за счёт компании

[Имя], добрый день.

В ближайшие [N] месяцев команде нужно [задача: перевести сервисы в Kubernetes / настроить мониторинг / собрать CI/CD].
Предлагаю пройти практикум REBRAIN «[название]»: задания на реальных стендах, без отрыва от работы.
После курса смогу [что сделаю сам] без привлечения подрядчика.
Стоимость — [сумма] ₽, REBRAIN работает с юрлицами по договору и счёту.

Готов обсудить, когда вам удобно.


Для оформления даём договор, счёт на юрлицо и закрывающие документы.

В конце года многие компании распределяют остаток бюджета на обучение, поэтому письмо лучше отправить сейчас. Счёт и договор подготовит менеджер — кнопка под постом.
👍6
🟡 Анонс бесплатных вебинаров на следующую неделю

—————————

1️⃣ Networks: Безопасное удалённое управление средствами протокола SSH на маршрутизаторах Eltex

📅 20 октября 2026, вторник, 19:00 по МСК

Программа вебинара:
🟢SSH: основные теоретические сведения;
🟢Базовая настройка SSH-сервера на маршрутизаторах ESR;
🟢Настройка аутентификации пользователей по паролю и открытому ключу.

Кто ведёт?
Андрей Шабалин — тренер Cisco / Huawei, инструктор академии Eltex и Астра-Университета

↘️ Регистрация

—————————

2️⃣ Linux: Восстановление данных

📅 21 октября 2026, среда, 20:00 по МСК

Программа вебинара:
🟢Таблицы разделов;
🟢Восстановление LVM;
🟢Восстановление суперблока ФС.

Кто ведёт?
Андрей Буранов — специалист по UNIX-системам в VK, 13+ лет работает с Linux, 11+ лет преподаёт

↘️ Регистрация

—————————

3️⃣ DevOps: Загруженность сервера 100% по CPU. Кто виноват и что делать?

📅 22 октября 2026, четверг, 20:00 по МСК

Программа вебинара:
🟢Первые команды: top (заглянуть в P), htop, atop — какой инструмент когда;
🟢Ищем процесс-виновник: pidstat, strace -p;
🟢Анализ: это утечка памяти, бесконечный цикл или DDoS?

Кто ведёт?
Илья Сачков — DevOps-инженер в «Аптеки — Плюс», автор и ментор курса «Linux Basics» в REBRAIN

↘️ Регистрация

—————————

Не успеваете вживую? Записи эфиров есть в подписке REBRAIN.
👍6❤1👏1
Диск забит на 100%, а du показывает половину

df -h говорит, что корень заполнен, du насчитывает на 40 ГБ меньше, логи уже почистили, а места не прибавилось. Типичная причина: файл удалили, но процесс всё ещё держит его открытым. Пока дескриптор открыт, место на диске не освобождается.

🟢 Сравните цифры:
df -h /
sudo du -xsh / 2>/dev/null

Если df показывает заметно больше, чем du, ищите удалённые, но открытые файлы.
🟢 Найдите, кто их держит:
sudo lsof -nP +L1 | grep deleted
В выводе будут процесс, PID, номер дескриптора (FD) и размер. Чаще всего это лог, который удалили через rm вместо ротации.
🟢 Освободите место. Самый чистый путь — перезапустить сервис или попросить его переоткрыть логи:
sudo systemctl restart nginx
Если перезапускать сейчас нельзя, обнулите файл через дескриптор процесса. PID и FD берите из вывода lsof, здесь для примера 1234 и 7:
sudo truncate -s 0 /proc/1234/fd/7
🟢 Чтобы не повторилось, удаляйте логи через logrotate, а не rm. Для сервисов, которые не умеют переоткрывать файл, в конфиге ротации есть опция copytruncate.

Если df и du сходятся, а места всё равно нет, проверьте inode: df -i. Миллион мелких файлов сессий или кеша съедает их раньше, чем гигабайты.

Процессы, файловые дескрипторы, диски и systemd разбираем на практике в курсе Linux Basics. Первые задания открыты бесплатно — по кнопке под постом.
👍18🔥6❤1