Обновить
512K+

Системное администрирование *

Лишь бы юзер был доволен

666,17
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Стоковый ClickHouse занял 12 ГБ диска при 543 КБ данных: сколько на самом деле ест self-hosted observability

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.3K

Полный self-hosted стек observability (Go-приложение + PostgreSQL + ClickHouse) живёт на VPS с 2 ядрами и 2 ГБ RAM. Но сначала стоковый ClickHouse занял 12 ГБ диска при 543 КБ полезных данных, держал 900 МБ памяти и мержил 11 миллионов строк каждые 30 секунд. Разбор с реальными замерами: куда всё ушло, какая гипотеза не подтвердилась, какая ошибка уронила прод и какие настройки в итоге вернули две трети памяти.

Читать далее

Как одна забытая зависимость уронила прод и привела к появлению Dependency Validator

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели9.5K

Привет, Хабр. Я Матвей Лихота, старший Go-разработчик и DevSecOps. Как это часто бывает с внутренними инструментами, идея этой утилиты появилась уже после того, как у нас упал прод. Во время хотфикса сотрудник забыл обновить в одном из двух сервисов версию библиотеки с контрактами и в результате в зависимостях осталась предыдущая версия. Перед слиянием код собирался и тесты проходили, но после деплоя сервис упал с ошибкой 500: новое поле в структуре запроса не появилось на сервере. Пришлось откатить изменения и даунтайм был ощутимый.

Снова попадать в такую ситуацию никому, конечно, не хотелось. Можно было бы добавить пункт в предрелизный чек-лист, но кто будет заполнять его во время хотфикса? Можно было еще раз напомнить разработчикам про версии, но такие напоминания работают от силы пару недель, а потом об этом снова забывают.

Тогда я решил, что теперь проверять актуальность зависимостей будет CI. Так и появился Dependency Validator.

Читать дальше

Как диагностировать тормоза Linux‑сервера без перезагрузки вслепую

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели8.8K

Сервер отвечает с задержкой, сайт еле открывается, а причина нагрузки неочевидна. В статье разберём пошаговую диагностику Linux‑сервера: как проверить CPU, память и диск с помощью top, free, vmstat, iostat и iotop, найти процесс‑виновник и понять, куда копать дальше.

Читать далее

Расследование по Kubernetes events, которых уже нет

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели6.4K

Высокий уровень observability в наше время — такое же необходимое условие для любого проекта, как и высокая доступность или производительность. Мы стараемся собрать и сохранить максимум метрик, чтобы понимать, в каком состоянии находится наша система и куда это состояние дрейфует. Собираем максимум логов, чтобы понимать, что происходило. Но даже когда логов и метрик настолько много, что для них собираются свои логи и метрики, иногда этого бывает недостаточно. Иногда нужно понимать не ЧТО и КОГДА, а ПОЧЕМУ.

В мире Kubernetes такой источник есть — events: именно они отвечают, почему под перезапустился, почему не смог подняться, почему не встал на ноду. Парадоксально, но эти чрезвычайно важные сведения довольно неудобно извлекать, а по умолчанию через час они уже исчезают. С этим обычно мирятся — ровно до утра, когда нужно объяснить, почему ночью упали сборки. Дальше история одного такого утра: начинается она с двух неудачных пайплайнов, заканчивается часовым окном нестабильности, задевшим 46 namespace'ов, и ни одной улики к моменту расследования в кластере уже не остаётся.

Читать далее

Работа с переменными в Angie

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.4K

Переменные в сервере Angie используются для расширенного управления обработкой запросов, более гибких конфигураций, а также получения подробной информации о клиентах и запросах. Постараемся разобраться со всем спектром возможностей переменных в Angie.

Читать далее

Что видит DPI, если VPN‑трафик зашифрован

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели19K

VPN шифрует содержимое трафика, но это не делает соединение невидимым для сети. IP‑адреса, handshake, размеры пакетов, тайминги и поведение потока могут использоваться для классификации даже без расшифровки данных. Разберемся, что видит DPI, как работают fingerprinting и active probing и какую роль в этой архитектуре играют VLESS, XHTTP и REALITY.

Читать далее

INFOSTART TECH EVENT 2026: первая треть программы уже известна

Время на прочтение2 мин
Охват и читатели6K

Первый тур голосования за доклады INFOSTART TECH EVENT 2026 завершен. После него сформировано около 30% программы конференции. Рассказываем, какие доклады уже прошли в программу, кто набрал больше всего голосов и что происходит дальше.

При отборе учитывались два фактора: голосование участников и экспертная оценка модераторов секций.

Кроме конкурсных заявок, в программу вошли доклады экспертов и модераторов:

Читать далее

Асинхронный I/O в PostgreSQL или история выходного дня

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели7.4K

Про асинхронный ввод-вывод в PostgreSQL за последний год написали многие:

Механизм появился в 18-й версии, в 19-й его докрутили и в релиз-нотах он числится среди главных улучшений производительности.

По ходу чтения релиз-нотов я сам столкнулся с множеством вопросов, поэтому поставил стенд, погонял нагрузку, померил, посмотрел на результаты. Далее, в статье маршрут моего похода выходного дня: где апгрейд на 19 ускоряет и на сколько, где не меняет ничего, где настройкой можно выжать ещё вдвое и где два параметра способны выключить всю фичу целиком.

Осторожно, много букв и цифр...

FinOps: С чего начать?

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели6.3K

Всем привет! Меня зовут Андрей Лапкин. Около года назад я перешёл на роль архитектора ИТ-инфраструктуры в подразделении Эксплуатации музыкального сервиса Звук — и практически сразу мы запустили программу управления облачными расходами.

Облачная инфраструктура стримингового сервиса — это сотни виртуальных машин, десятки кластеров Kubernetes, объектные хранилища, базы данных, балансировщики. Ресурсы создаются под задачи, но далеко не всегда удаляются после их завершения. С ростом инфраструктуры вопрос «сколько стоит конкретный сервис?» потребовал системного ответа”.

За полгода систематической работы мы снизили ежемесячные расходы на инфраструктуру примерно на 22%. Для контекста: до старта программы счёт органически рос на 1–2% в месяц. Расскажу, как мы к этому пришли: какую методологию взяли за основу, какие принципы заложили в фундамент и как выглядит дорожная карта. Фокус статьи — на стратегии, процессах и культуре, а не на готовых шаблонах развёртывания.

Читать далее

Что изучить во второй половине августа: 39 открытых уроков для IT‑специалистов

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.7K

Когда нужно прокачать конкретный навык, проще всего начать с практической задачи. В этом дайджесте собрали 39 открытых уроков августа для IT-специалистов: от asyncio, Kafka и PostgreSQL до системного дизайна, DevSecOps и локальных AI-моделей — с разбором инструментов и подходов, которые применяются в реальных проектах.

Перейти к подборке

CI — это не Jenkins. Зачем, как, чем — и цена отказа

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.7K

Пайплайн у вас есть. Он есть у всех: CI перестал быть предметом споров примерно тогда же, когда Docker перестал быть новостью. Именно поэтому разговор пора вести другой - не “зачем вам CI”, а можно ли верить вашему зелёному пайплайну, сколько он стоит и кто им владеет. Разбор в формате “зачем - как - чем - цена отказа” - пилот рубрики: дальше в ней будут другие практики, формат останется.

Читать далее

WireGuard не хранит AllowedIPs у пира

Уровень сложностиСложный
Время на прочтение14 мин
Охват и читатели11K

Добавляете нового пира на сервер WireGuard — и у соседнего в wg show вместо префикса появляется allowed ips: (none). Команда отработала успешно, dmesg пуст, wg-quick промолчал, туннель up, handshake свежий. А если бы у нового пира маска была /32 вместо /24, ничего бы не произошло.

Это ловят снова и снова: в трекере VyOS с 2020-го (закрыто как Invalid — «так делает ядро»), в OPNsense в 2025-м, на форуме OpenWrt каждый раз, когда к серверу добавляют второй телефон.

Разбор по drivers/net/wireguard/ мейнлайна, тег v6.12: почему AllowedIPs вообще не хранится у пира, что делает list_move_tail в allowedips.c:201, почему симптом «пропало у одних пиров, но не у всех» объясняется одной строкой parent->cidr == cidr, и откуда берётся ping: sendmsg: Required key not available, если вы его когда-нибудь видели и решили, что это про ключи шифрования.

И заодно: то же самое лежит в FreeBSD, OpenBSD, BoringTun, wireguard-go и в драйвере под Windows — шесть кодовых баз, пять разных структур данных, один и тот же молчаливый контракт. А MikroTik, который запрет прямо задокументировал, сам его не проверяет: на CHR оба пира показывают префикс, трафик идёт одному, и вернуть его второму можно только записью того же самого значения обратно.

Плюс способ проверить самому: настоящий allowedips.c из ядра, собранный в userspace одним gcc. Без модуля и без root.

Читать далее

Почему DevOps-инженеров ищут месяцами: взгляд со стороны рекрутера и инженеров

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.5K

На первый взгляд задача кажется вполне понятной. Есть вакансия, есть требования, есть рынок? осталось только найти подходящего специалиста. Но на практике именно DevOps-позиции регулярно оказываются среди самых сложных для закрытия, даже крупные компании могут искать одного инженера несколько месяцев, несмотря на помощь внутренних HR-команд и агентств.

Причина далеко не всегда в количестве специалистов, проблема начинается гораздо раньше — с самого понимания того, кто такой DevOps-инженер.

Сделать шаг к успешному найму

Ближайшие события

Policy Based Routing (Linux + Juniper)

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели7.6K

В статье мы рассмотрим настройку маршрутизации на основе политик (Policy Based Routing, PBR) для управления трафиком от сервера в Интернет в зависимости от IP-адреса источника. Опишем шаги по конфигурации PBR на сервере c Ubuntu и маршрутизаторах Juniper MX.

Читать далее

Цена, которой не существовало: две недели поиска бага, который не видел мониторинг

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7K

Есть класс ошибок, которые невозможно найти простой сверкой. Не потому, что данные хорошо спрятаны, а потому, что искомого состояния нет ни в одной системе. Оно собирается на лету из двух правильных половинок, каждая из которых по отдельности абсолютно валидна.

Хочу рассказать про случай, где в одном стартапе мы искали причину две недели, но при этом мониторинг всё это время показывал, что всё в порядке, и формально он был прав.

Читать далее

Как мы добавили Global Orchestration в IncidentRelay: маршрутизация алертов до создания инцидента

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.8K

Когда система мониторинга отправляет алерт, он редко выглядит так, как хотелось бы дежурному инженеру.

Один источник пишет critical, другой — disaster, третий передаёт severity: 5. В одном payload сервис называется checkout, в другом — payments-api, а в третьем его приходится угадывать по namespace.

Если все эти события приходят через общий Alertmanager или webhook, одной статической настройки маршрута быстро становится недостаточно.

Обычно проблему решают одним из трёх способов:

Читать далее

У nginx сжатие заголовков одностороннее

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели10K

Стенд: один nginx, одно HTTP/3-соединение, четыре одинаковых запроса подряд. Меряем размер сжатого блока заголовков в обе стороны.

Ответ (nginx → клиент): 131, 131, 131, 131 байт. Запрос (клиент → nginx): 246, 8, 8, 8.

Ответ — константа: сколько запросов ни повтори, столько же байт. Запрос со второго раза схлопывается в тридцать раз. В HTTP/2 к тому же серверу — та же константа.

Между тем динамическая таблица HPACK и QPACK и есть половина смысла обоих протоколов: повторяющийся заголовок отправляется один раз, дальше идут ссылки на номер. Клиент ей пользуется. Сервер не пользуется ни в одном из двух — в HTTP/2 выставляет её размер в ноль, в HTTP/3 не открывает encoder-поток вовсе.

Разбор по фиксированным тегам: nginx 1.31.3, quic-go, Cloudflare quiche, ls-qpack, Google QUICHE. Две реализации из пяти таблицу всё-таки ведут. И приёмная половина — та, которой сервер сам не пользуется, но обязан обслуживать, — в мае принесла nginx use-after-free с оценкой 9.2.

Читать далее

Выбор платформы виртуализации для малых инсталляций

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.2K

Сегодня даже для небольшого бизнеса или образовательного учреждения «сервер» редко представляет собой одну физическую машину. Чаще в эту сущность упаковывают понятийно сразу несколько сервисов: файловое хранилище, веб‑сервер, базу данных и пр. Потому что запускать каждую службу на отдельном «железе» дорого, неэффективно и сложно в обслуживании. В этом случае на помощь приходит виртуализация — технология, позволяющая создать несколько изолированных виртуальных машин (ВМ) на одном физическом сервере.

Как выбрать правильную платформу, особенно когда у вас нет отдельного штата ИТ‑инженеров и огромного бюджета?

В нашей статье мы разберём ключевые критерии, на которые стоит обратить внимание при выборе системы виртуализации.

Читать далее

Один DNS‑запрос породил 329 запросов. Я полез разбираться, куда они все ушли

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.9K

Один DNS‑запрос. Пустой кеш. И 329 исходящих запросов вслед за ним.

Сначала я решил, что где‑то неправильно понял цифры. Потом полез разбираться и выяснил, что recursive resolver внутри делает намного больше работы, чем видно по обычному dig.

Разбираю, откуда берутся эти сотни запросов, при чём здесь CNAME, glue, DNSSEC, IPv6 PTR и почему разные версии BIND на одном и том же запросе могут отличаться почти в три раза.

Читать далее

От десктопа к Android и в роутеры

Время на прочтение8 мин
Охват и читатели9.8K

MASQUE — туннель, неотличимый от обычного HTTPS-трафика к Cloudflare, постквантовый VLESS, AmneziaWG, дотянутый до эталона. Всё это теперь не только в телефоне, но и прямо на роутере: отдельный Wi-Fi, весь трафик которого уходит в туннель. Рассказываю, как мое ядро sing-box-lx до этого доросло

Читать далее