Неинформативные логи типа «Error!» затрудняют отладку. В проде поиск проблемы занимает часы.
Решение: 6-значная система кодирования
01 01 03
│ │ └─ Тип ошибки
│ └──── Сервис
└─────── Модуль
Первые 2 цифры — модуль:
01 — User
02 — Shipping
03 — Order
04 — Payment
05 — Notification
Средние 2 цифры — сервис:
01 — Database
02 — External API
03 — Payment Gateway
04 — Cache
05 — Queue
Последние 2 цифры — тип:
01 — Configuration
02 — Authentication
03 — Timeout
04 — Validation
05 — Not Found
Уровни серьёзности:
Low — информационные сообщения, не требуют действий
Medium — влияют на UX, требуют исправления
High — нарушают работу функционала
Critical — полный отказ системы, требуют немедленной реакции
Как выглядит лог в Json:
{
code: '010103', // Код ошибки
level: 'Medium', // Уровень
message: 'Clear text', // Описание
timestamp: '2025-10-29T...',
// Контекст
userId: 12345,
requestId: 'req-abc-123',
service: 'UserService',
// Технические детали
stack: error.stack,
duration: 3450
}Минимальный старт
1. Определите 3-5 основных модулей
2. Создайте таблицу кодов
3. Добавьте структурированное логирование в критичные места
4. Настройте алерты на Critical
5. Постепенно расширяйте покрытие
Наши курсы построены по тому же принципу: чёткая структура, конкретные практические примеры, измеримые результаты. 3 дня до конца скидок!
#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🎁 Конкурс от Proglib Academy!
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Fedora выпустила новую версию дистрибутива. Главное изменение для пользователей — установщик Anaconda WebUI теперь работает не только в Workstation.
Для любителей GNOME новость менее радужная: десктоп теперь работает только через Wayland, поддержку X11 полностью убрали.
Под капотом обновили пакетный менеджер до RPM 6.0. Это добавляет возможность подписывать пакеты несколькими ключами одновременно — готовятся к переходу на пост-квантовую криптографию.
Fedora CoreOS изменила схему обновлений: вместо OSTree-репозитория система получает апдейты как OCI-образы. Теперь любой может собрать FCOS через обычный Containerfile с помощью podman, без специальных инструментов.
Для чистой установки доступны все редакции: от классических Workstation и Server до Atomic-десктопов вроде Silverblue. 21 ноября пройдет виртуальная вечеринка в честь релиза.
#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5❤2
Forwarded from Библиотека собеса по DevOps | вопросы с собеседований
Каким образом мы можем управлять вычислительными ресурсами в k8s?
Для эффективного управления ресурсами в кластере k8s используются resources requests / limits. Они могут быть настроены для CPU, памяти и, в последних версиях k8s, для GPU.
Requests используются для определения типичного потребления ресурсов нашим приложением. На основе этих данных Kubernetes scheduler выбирает ноды для запуска PODов (сумма всех request'ов контейнеров во всех PODах не должна превышать доступные ресурсы на ноде).
Limits служат как механизм предотвращения, ограничивая потребление ресурсов контейнером в PODе. При превышении лимита процессорного времени применяется thermal throttling, а при превышении лимита памяти — механизм OOM.
Модель, при которой requests меньше limits, называется burstable QoS, а когда requests равны limits — guaranteed QoS.
Кроме того, можно установить квоты ресурсов на namespace (CPU, память, количество запущенных PODов, размер диска persistent volume) и указать требования к resources requests на PODах в namespace с помощью limit ranges.
Для управления ресурсами приложений также можно использовать автоскейлеры. В k8s доступны HPA (horizontal pod autoscaler), который регулирует количество PODов в зависимости от потребления CPU и/или памяти, и VPA (vertical pod autoscaler), который управляет resources requests / limits.
Существуют также реализации автоскейлеров, которые могут использовать внешние метрики (например, длину очереди), такие как carpenter или KEDA. В облачном окружении можно использовать cluster autoscaler для добавления или удаления нод в зависимости от общей загрузки кластера.
Библиотека собеса по DevOps
Requests используются для определения типичного потребления ресурсов нашим приложением. На основе этих данных Kubernetes scheduler выбирает ноды для запуска PODов (сумма всех request'ов контейнеров во всех PODах не должна превышать доступные ресурсы на ноде).
Limits служат как механизм предотвращения, ограничивая потребление ресурсов контейнером в PODе. При превышении лимита процессорного времени применяется thermal throttling, а при превышении лимита памяти — механизм OOM.
Модель, при которой requests меньше limits, называется burstable QoS, а когда requests равны limits — guaranteed QoS.
Кроме того, можно установить квоты ресурсов на namespace (CPU, память, количество запущенных PODов, размер диска persistent volume) и указать требования к resources requests на PODах в namespace с помощью limit ranges.
Для управления ресурсами приложений также можно использовать автоскейлеры. В k8s доступны HPA (horizontal pod autoscaler), который регулирует количество PODов в зависимости от потребления CPU и/или памяти, и VPA (vertical pod autoscaler), который управляет resources requests / limits.
Существуют также реализации автоскейлеров, которые могут использовать внешние метрики (например, длину очереди), такие как carpenter или KEDA. В облачном окружении можно использовать cluster autoscaler для добавления или удаления нод в зависимости от общей загрузки кластера.
Библиотека собеса по DevOps
Разбираем 14 вопросов, которые лучше не задавать на собеседовании: что не так с каждым из них и как переформулировать, чтобы получить нужную информацию без риска для репутации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
DevSecOps-инженер на удалёнку с ЗП от 300 000 ₽
Junior DevOps Engineer с ЗП до 200 000 ₽
Senior DevOps Engineer для работы на bare-metal от 300 000 ₽
DevOps Engineer с зарплатой, посчитанной до сотен рублей — 337 500 ₽
Бустер — Офис у вас дома.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎃 Хэллоуин в Proglib Academy: скидки, призы и... немного паники
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
Сегодня 31 октября, и это не просто время тыкв и призраков, это ПОСЛЕДНИЙ ДЕНЬ, когда ты можешь выиграть макбук!
→ Купи любой курс со скидкой 40% 💸
→ Начни обучение, чтобы пройти 2 недели к 15 ноября 🎓
→ Напиши куратору #розыгрыш ✍️
Всё! Теперь ты в игре.
👉 Сейчас или никогда!
Праздник — отличный повод немного отвлечься от задач и сменить атмосферу. А вы сегодня кого-нибудь напугали? Даже простой костюм может добавить настроения.
💬 Оставляйте свои впечатления и фото в комментариях 👇
#холиварня
Please open Telegram to view this post
VIEW IN TELEGRAM
Kubernetes не требует указывать requests и limits для CPU и памяти. Поды запускаются и без них. Но когда кластер растёт, начинаются проблемы.
Scheduler не знает, сколько ресурсов нужно поду. Он пихает на одну ноду 20 подов, которые съедают всю память. Результат — OOM killer убивает случайные поды. Или наоборот: один под жрёт все ресурсы, остальные задыхаются.
Как исправить:
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "200m"
Начните с минимальных значений. Запустите под, посмотрите
kubectl top pods. Увидите реальное потребление — скорректируете цифры. Если нагрузка скачет, добавьте HorizontalPodAutoscaler.#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM