JSON-логи Nginx в systemd journal
Настраиваем log_format Nginx для структурированных JSON-логов и отправляем access_log и error_log в systemd journal через syslog. Также разбираем параллельную запись в разные форматы для отладки.
Фото: Freek Wolsink / PexelsCI/CD, инфраструктура, Ansible, пайплайны, рабочие практики и инженерная рутина.
Подборка про рабочие процессы, инфраструктурные решения и инженерные привычки, которые помогают не утонуть в хаосе.
Настраиваем log_format Nginx для структурированных JSON-логов и отправляем access_log и error_log в systemd journal через syslog. Также разбираем параллельную запись в разные форматы для отладки.
Настраиваем выпадающий терминал Quake Mode в Windows Terminal через settings.json. Разбираемся с глобальной клавишей вызова, вкладками, переключением между ними и режимом фокуса.
Почему знание GitLab часто встречается в DevOps-вакансиях и насколько оно переносимо между CI/CD-платформами. Разбираем GitLab Community Edition, пайплайны и важность общей базы вместо привязки к одному инструменту.
Рабочая схема сбора метрик Prometheus с внутренних серверов без белых IP-адресов. Настраиваем DNAT и MASQUERADE на балансировщике и направляем порты к node_exporter.
Рабочая история о коте, оставленном MacBook и неожиданно дорогих последствиях удалённой работы. Напоминание о том, почему технику и домашних животных лучше не оставлять без присмотра.
Настраиваем Nginx так, чтобы обычный трафик шёл в основной upstream, а тестировщики попадали на отдельную ноду по заголовку X-Backend. В конфигурации используются map, upstream, proxy_pass и диагностический X-Upstream.
Авторская схема коротких и понятных имён серверов на примере инфраструктуры в Selectel. Разбираем префиксы проектов, роли инстансов, цифровые индексы и причины не усложнять hostname регионами без необходимости.
Готовим публичный Linux-сервер к техническим работам: блокируем новые входы через /etc/nologin, рассылаем предупреждение командой wall и завершаем пользовательские сессии. Дополнительно рассматриваем write и прямую запись в …
Показываем, как сохранить стандартный вывод cron-задачи в отдельный файл и настроить его ротацию через logrotate. Такой журнал помогает увидеть внутренние ошибки приложения, которые не попадают в системный лог cron.
Ироничный гороскоп для разработчиков, DevOps-инженеров и всех, кто живёт среди коммитов, багов и продакшена. Двенадцать знаков зодиака получают советы о коде, Git, выгорании, автоматизации и пет-проектах.
Создаём шаблон конфигурации nginx и подставляем разные значения для production и stage через envsubst. Сравниваем функцию рендеринга с heredoc и разбираем передачу переменных окружения.
Личный опыт постепенного снижения веса со 130 до 85 килограммов без краткосрочной диеты. Автор рассказывает об изменении питания, размере порций, периодах стабилизации веса и безопасном темпе похудения.
Разбираемся, почему короткий ключ ED25519 не слабее длинного RSA, какие типы SSH-ключей поддерживает OpenSSH и как конвертировать PPK из PuTTYgen. Практические команды для генерации и преобразования ключей.
Личный опыт снижения веса со 130 до 85 килограммов и его дальнейшего контроля. Ежедневное взвешивание, режим питания и сна, физическая нагрузка и наблюдения о колебаниях веса.
Разбираем обработку стрелок, Home, End и F1–F12 в интерактивном Bash-скрипте. Функция GET_KEY переводит многобайтные управляющие последовательности терминала в hexadecimal-коды.
История о смене DevOps-инженеров, усложнении рабочей инфраструктуры и внезапном переходе на Teleport. Почему новые практики нужно согласовывать, а систему — упрощать без потери доступа владельца.
Сравниваем X11 Forwarding и RDP в Docker для удалённой работы с графическими приложениями на Linux-сервере. Разбираем подключение GPU NVIDIA и AMD, необходимые устройства контейнера и безопасный SSH-туннель.
Сравниваем privileged и обычные Docker-контейнеры по capabilities, устройствам, сети и изоляции. Выбираем между --cap-add, --device и полным привилегированным режимом.
Три способа выполнить команду в другом каталоге и вернуться обратно: subshell, pushd/popd и cd -. На наглядных примерах сравниваем поведение рабочего каталога Bash.
MySQL-реплика отстала на три месяца, но Prometheus и Grafana не подняли тревогу. Разбираем самодельный Bash-экспортёр, значение Null в Seconds_Behind_Master и исчезнувшую метрику.
Личный опыт отказа от курения после нескольких неудачных попыток. Автор рассказывает о собственных ошибках, первых тяжёлых месяцах и приёмах, которые использовал в 1998 году.
Создаём cgroup для процесса и запрещаем ему использовать swap, не отключая подкачку для всей системы. Разбираем cgcreate, cgclassify, memory.swap.max, OOM и восстановление настроек через systemd.
Проверяем существование удалённого Git-репозитория и доступ к нему через git ls-remote. Пишем Bash-скрипты для HTTPS и SSH, отключаем интерактивные запросы и возвращаем понятные коды ошибок.
Пишем Bash-скрипт, который проверяет длину очереди RabbitMQ по SSH и перезапускает зависший микросервис при накоплении писем. Разбираем cron, rabbitmqctl, awk и запуск команд от отдельного пользователя.
Привязываем SSH-подключение к bastion-серверу к комбинации Alt+B в Bash через функцию и bind -x. Также разбираем псевдотерминал, reset и вариант конфигурации для Zsh.
Настраиваем автоматическое монтирование NTFS-диска и запуск резервного копирования на сервере без GUI. Связываем правило udev, mount-юнит и systemd-сервис с выводом статуса на tty1.
Используем встроенный хоткей Ctrl+X+E для редактирования многострочной команды в Vim, Nano или другом редакторе. Настраиваем переменную EDITOR и разбираем, как Bash выполняет сохранённый временный файл.
Настраиваем IOMMU и PCI passthrough в Proxmox для передачи физических устройств виртуальным машинам. Разбираем параметры GRUB, модули VFIO, изоляцию GPU и проброс диска по стабильному идентификатору.
Создаём всплывающую шпаргалку прямо в терминале без графической оболочки. Используем tput, read, trap и bind, чтобы показывать альтернативный экран по Ctrl+H и закрывать его после отпускания клавиши.
Сравниваем systemd timers и cron на практическом примере: создаём service и timer, запускаем задачу каждую минуту и включаем автозагрузку. Разбираемся, когда гибкость таймеров оправдана, а когда сотни unit-файлов только усложняют …
Настраиваем автоматическую проверку SMART и RAID-массива с почтовыми уведомлениями. Используем smartmontools, smartd, mdadm и лёгкий SMTP-клиент msmtp для отправки сообщений о сбоях дисков.
Практическая схема резервного копирования с защищённой СХД, внешними дисками и промежуточным сервером. Объясняем чередование носителей, локальные дневные копии и ротацию нумерованных архивов.
Добавляем дату и время к истории команд в Bash через HISTTIMEFORMAT и настраиваем цветные метки. Сравниваем history -E, history -i и fc в Zsh и сохраняем удобные настройки оболочки.
Настраиваем выпадающие списки Variables при ручном запуске GitLab Pipeline. Разбираем options, YAML anchors, rules для stage и production и подключение общего .gitlab-ci.yml из отдельного проекта.
Разбираемся, почему Docker использует MASQUERADE вместо адреса Dummy-интерфейса, и находим скрытую настройку host_ipv4 в исходниках Moby. Создаём bridge-сеть, которая выполняет SNAT контейнеров через нужный публичный IP.
Разбираем Bash-скрипт spr.sh — консольный справочник для поиска записей и фрагментов кода по нескольким тегам. Конфигурация хранится в текстовом файле, а фильтрация реализована однострочником awk.
Показываем, как nip.io преобразует IP-адрес внутри доменного имени и позволяет открывать локальные сервисы без правки /etc/hosts. Проверяем поддомены, порты и выпуск SSL-сертификата для публичного IP.
Etckeeper превращает каталог /etc в Git-репозиторий и помогает отслеживать, фиксировать и откатывать изменения конфигурации Linux. Разбираем установку, удалённый репозиторий, коммиты и автоматизацию через incron.
Прячем ASCII-сообщение в девяти битах прав доступа Linux-файлов. На Bash разбираем сдвиги битов, восьмеричные режимы chmod и кодирование текста последовательностью файлов.
Домашний сервер на Proxmox с 11 LXC-контейнерами: Jellyfin, Sonarr, Radarr, Syncthing, Pi-hole и другие сервисы. Рассказываю, как устроена моя компактная self-hosted инфраструктура на мини-ПК.
Пишем небольшой Bash-парсер, который превращает большой php.ini в компактный шаблон без комментариев и пустых строк. Разбираем чтение файла построчно, continue и регулярные выражения в конструкции [[ =~ ]].
Настраиваем условный запуск systemd-юнитов через ConditionPathExists и другие директивы Condition. Сравниваем пропуск юнита с ошибкой Assert и комбинируем проверки существования и монтирования ресурсов.
Разбираемся, откуда берутся случайные имена Docker-контейнеров и как устроен генератор Moby с пасхалкой для Стива Возняка. В конце собираем похожий генератор на Bash и рассматриваем готовые альтернативы.
Монтируем удалённое хранилище через SSHFS и берём подключение под контроль systemd. Создаём mount-, timer- и service-юниты, которые ждут сеть, проверяют маркерный файл и автоматически перемонтируют шару после сбоя.
Практический разбор подготовки к переговорам: повестка, чувства участников, желаемый результат и заранее подготовленные ответы. Заодно проверяем, нужна ли встреча вообще или вопрос быстрее решить текстом.
Используем пакет PSSH для параллельного запуска команд и копирования файлов на группу Linux-серверов. Настраиваем SSH-ключи и файл инвентаря, работаем с parallel-ssh, parallel-scp, prsync, pnuke и pslurp.
Настраиваем ограничение запросов в Nginx через limit_req_zone, geo и map. Разбираем размер зоны памяти, параметры rate, burst и nodelay, белый список IP-адресов и возврат HTTP 429 вместо стандартной ошибки 503.
Почему df показывает 100% занятого места, а du и ncdu не находят крупные файлы. Разбираю Hidden Space Explorer (hsed) — TUI-утилиту для поиска удалённых, но открытых файлов в Linux, освобождения дискового пространства и …
Почему рекрутер может снять кандидата с вакансии после просьбы перенести собеседование и как рынок труда влияет на процесс найма. Разбираю инсайд от HR-агентства о массовом отклике, жёстком отборе кандидатов и том, как не потерять …
Разбираем безопасность Docker контейнеров на практике. Security_opt, cap_drop, read_only, pids_limit, запуск не от root, ограничения CPU/RAM, seccomp, privileged и network_mode. Показываю, какие параметры Docker Compose реально …
Обычно сеньоры бегут на повышение, а я сделал наоборот. Ко мне пришёл парень с ипотекой, детьми и страхом перемен. Вместо того чтобы дрыгаться в поисках жирного оффера на ту же позицию, мы занизили грейд до мидла. И получили …
Я потыкал Termix, бесплатный аналог Termius. И Termix выигрывает в открытости, поддержке SSH туннелей и возможности управлять файлами из браузера. Минусы – нестабильный VNC, странные анимации панели и наверное необходимость ручных …
У меня на малинке висит целый зоопарк Jellyfin, qBittorrent, Grafana, Prometheus, Uptime Kuma и куча другого. Portainer для таких целей избыточен как космический корабль для поездки в магазин. Да и интерфейс там сделан через жопу …
Мне за 30, я видел много скриптов с дьявольскими отрицаниями, и каждый раз хотелось задушить автора. Поэтому я решил написать пост, в котором покажу как превратить кошмарную конструкцию в простой if-else без единого лишнего знака. …
Я расскажу тебе всю правду про нынешний рынок вакансий без соплей и розовых очков. На моих глазах QA ищут по 2000 резюме за неделю, а сеньоры внезапно становятся джунами в глазах рекрутеров. Разберем, стоит ли прыгать в новую …
Часто слышу, что автоматизировать sftp на Windows XP‑10 невозможно без кучи сторонних утилит. На деле всё проще. Я разобрался, как затащить sftp с ключами на такие системы. Самое смешное — WinSCP пришлось настроить так, чтобы он …
Вместе с Романом Шубиным, СТО и автором канала Bash Days, собрали отдельный мини-курс по Podman. Внутри — восемь материалов, которые помогут освоить инструмент с открытым исходным кодом для работы с контейнерами.
Признавайся, ты тоже копируешь примеры из документации с loop подряд? Я тоже так делал, пока не обжёгся на продакшене. Один таск с установкой пакетов через loop обновлял репозитории 7 раз подряд. Многие считают, что без loop не …
Дружище, если твой Dockerfile начинается с COPY и только потом npm install, то соболезную. Каждая твоя сборка переустанавливает зависимости заново, хотя они сто лет не менялись. Я сам так делал, пока не понял, что кеш Docker …
Как я поймал скрытый SSH трафик с Android и iPhone через opnSense. Люди до сих пор думают, что угрозы это когда хакер в худи ломает Пентагон. На деле твой смартфон сам бодро шатает чужие SSH порты пока ты листаешь мемы. Я проверил …
Мне надоело кормить корпоративных монстров своими данными и ждать пока их джава-скрипты прогрузятся. Gitea встала на мой дохлый сервер как родная и начала летать даже с кривым конфигом. Ты получишь тот же функционал но без слежки …
В прошлый раз я тебе показал как собрать S3 кластер из трех серверов на Garage. Теперь самое время накрутить ему балансировщик и SSL сертификат чтобы всё работало как часы даже если одна из нод ляжет спать. В этой части мы ставим …
Три рандомных сервака, композник и голый opensource — вот мой рецепт собственного S3 облачного хранилища. Garage не просит денег, реплицирует данные на все ноды и переживает падение любого сервера. Инструкция для тех, кто не …
Показываю на реальном примере, как проверить безопасность своего сайта через Mozilla Observatory и почему у тебя, скорее всего, там позорный рейтинг. Разбираем, что означают эти буквы A–F, какие заголовки реально важны и как с …
Разбираем механику DNS Amplification атак и выясняем, почему использование ANY-запросов превращает твой сервер в инструмент для DDoS. Узнай, как работают векторы усиления трафика и как правильно настроить защиту на BIND и Unbound.
Если 1С начинает работать с ошибками и стандартные методы не помогают, причина может быть в повреждённых файлах. В посте показан способ сравнения каталогов с помощью rsync и md5sum. Разбираем, как найти расхождения и подтвердить …
Учимся работать с переменными окружения в Podman удобно, гибко и безопасно. Когда мы запускаем контейнер, в большинстве случаев предварительно нужно указать настройки - порт, пароль, режим работы, адрес базы и т. д. Зачастую такие …
Прикидываемся ветошью и поручаем терминалу со встроенным ИИ сделать почти все за нас. Потыкал я на досуге один из ИИ-терминалов и делюсь этим опытом.
Любишь Kubernetes и Docker, но дебаг — головная боль? Покажу, как тулбоксы с набором утилит помогают быстро диагностировать проблемы и даже внедрять debug-контейнеры прямо в pod. Работает и на обычном докере!
Забудь про постоянные правки git-конфига или скрипты перед пушем! Рассказываю, как настроить git, чтобы он автоматически подставлял разные user.email и user.name для личных и рабочих проектов.
Если не хочется связываться с доменами, но нужен SSL на IP — вот мой опыт и инструкция, как это сделать с помощью Let's Encrypt и acme.sh. Всё просто и понятно!
Часто нужно быстро скачать файл с сервера, а настроить что-то сложное лень? Я расскажу, как с помощью одной команды Python поднять простой веб-сервер и скачать любой файл за пару секунд.
Почему теперь можно использовать просто compose.yaml, а не привычный docker-compose.yaml. Всё стало проще, но если у тебя старая ОС — есть нюансы. Заодно обсудим, зачем вообще был нужен version в файле.
Недавно решил перенести почтовый сервер к себе домой, чтобы сэкономить пару тысяч в месяц. В статье — как настроить прокси с angie и обойти отсутствие белого IP.
Если ты тоже путаешься, что лучше — bind или volume, этот пост для тебя. Покажу основные правила и примеры из жизни, чтобы ты не писал дичь и не ломал себе окружение.
Если ты устал от сложных настроек DNS и хочешь кластер «из коробки», расскажу, как я быстро развернул Technitium DNS с минимальными усилиями.
Обходим проблемы кворума в Proxmox. Забудьте о сбоях при потере одной ноды, кластер остаётся живым, а бэкапы проходят без ошибок. Простой способ сделать домашнюю лабораторию надёжной.
Почему современный инструментарий — это не лень, а прокачка навыков и продуктивности.
Если TrueNAS сломался, а доступ к бекапам нужен срочно — не беда. Покажу, как расшифровать зашифрованные бекапы прямо на своём ПК с помощью rclone и пары паролей.
Почему без чёткого технического задания толку от работы мало. Делюсь простыми советами, как составлять ТЗ, чтобы не заблудиться в проекте.
В этом разборе показываю, как в Proxmox 9.1 работает новая нативная поддержка OCI-образов. На примере nginx:latest скачиваем образ из Docker Hub, превращаем его в LXC-контейнер и запускаем без единой команды Docker. Разбираем, как …
Подробная инструкция по переходу на новую ветку Debian Trixie в Proxmox. Фиксим репы, обновляем ключи, прогоняем pve8to9 и устанавливаем всё, что предлагает система. Даю комментарии по каждому этапу, чтобы апдейт не превратился в …
Я нашёл классный TUI-клиент для Proxmox и забыл про браузер. Теперь всё администрирование — пара тычек в терминале.
Классный инструмент для быстрого запуска Ubuntu виртуалок. Забудь про бесконечные настройки и тормоза VirtualBox!
Выпадающие списки в Gitlab. Многие путаются с options и inputs в GitLab, поэтому делюсь своим опытом и простым решением, которое сработало у меня.
Пошаговый разбор Load Average с примерами и советами, чтобы ты всегда знал, когда пора бежать к серверу, а когда можно спокойно пить пиво.
Каждый месяц я забывал заказать туалетную бумагу, пока не написал Bash-скрипт, который делает это за меня. В этом посте расскажу, как с реверсом API и cron’ом автоматизировал рутину.
После того, как я выполнял terraform apply, где-то в дата-центре, специально обученный мальчик шёл ножками, читал мой yaml манифест, плакал, собирал руками железный сервер и передавал мне в работу. Сейчас этот процесс полностью …
Уроки экономии на технических сервисах. Немного циничный, но честный взгляд на бюджетирование в IT, как не попасть в ловушку «сэкономить и потерять».
Как мы мигрировали minecraft сервер на выделенный сервер и защитились от ботов с помощью Angie, просто и эффективно.
Выбираем и включаем плагин шифрования в Obsidian, чтоб критичные данные нигде не светились.
Неожиданный звонок и разоблачение сотрудника, который решил обмануть систему. Или как айтишная скука переростает в детектив.
Почему контейнер Docker «маскирует» код выхода приложения и как правильно настроить запуск, чтобы видеть настоящий exit code.
Хочешь навести порядок в своих заметках и полезных ссылках? Я покажу, как с помощью топиков в приватной группе Telegram собрать всё важное и поделиться этим с коллегами.
О том, что реально значит метка A+ и почему не стоит бояться новых правил для блогеров. Всё по-честному и без паники.
Делюсь скриптом и лайфхаками, которые помогли нам понять, где именно «тормозит» база и 1С в реальной работе.
Поговорим о том, как язык обучения влияет на стиль кодирования. Почему в одном месте aux, а в другом — temp. Весело и познавательно!
В этом посте я делюсь своим лайфхаком, как без боли и компиляций фильтровать мат в ответах сайта. Используем Angie с Lua-модулем и немного регулярных выражений.
Хочешь понять, как nginx умно распределяет запросы? Сегодня расскажу про «силу двух выборов» и почему это лучше рандомного выбора.
Как один новый менеджер смог за считанные минуты разрушить многолетние отношения с клиентом и что из этого вышло. История на реальных примерах из айти.
Den blbec — так чехи могут называть день, когда всё идёт по п***е: ничего не получается, всё валится из рук, кругом факапы и неприятности.
Если не хочется возиться с systemd timers, вот простой хак для запуска скриптов в cron каждые 30 секунд. Быстро и понятно!
Если ты интроверт, но хочешь расти — тебе придется учиться разговаривать. Даже если это не твое. Делюсь своим опытом и мотивацией.
Разбираемся с ситуацией, когда в корпоративной переписке можно ставить лайк на входящие сообщения, а когда лучше этого не делать.
Настраиваем единый сервер синхронизации для TaskWarrior, смотрим решения, которые предлагает официальная документация, крутим гайки, добиваемся желаемого.
Разбираемся с моделью «вечный сервер», что провайдеры предлагают на самом деле и где скрываются подводные камни.
Устанавливаем на свой сервер аналог Телеграф/Телетайп, разворачиваем свой Imgur, скрещиваем всё это дело со скриншотилкой ShareX.
Мои попытки избавиться от сервера синхронизации и подключить кастомное S3 хранилище от Selectel в качестве базы данных для синхронизации между устройствами.
Готовим taskwarrior к продуктивной работе, избавляемся от лишнего мусора, запиливаем под себя шаблон и алиасы, затачиваем инструмент чисто под себя и свои задачи.
Как настроить автоматический бэкап баз 1С Dump на Windows с PostgreSQL и выгрузку на удалённое FTP-хранилище с использованием rsync без стороннего софта.
Когда лезешь в логи, меняешь конфиги и думаешь, что проблема глобальная, а решается она одной галкой.
Проверяю «вайб-кодинг», экономлю 150к рублей и 2 месяца разработки.
Кухонные посиделки девопс-инженеров и размышления на тему - а что если делегировать всю работу специальной операционной системе с ядром на базе ИИ.
В этой статье я шаг за шагом показываю, как установить SelectOS «с нуля» — прямо из ISO-образа — в облаке Selectel. Рассказываю, с какими трудностями столкнулся (от нехватки памяти до проблем с сетью), и как их обошёл. Подойдёт …
Я решил попробовать поднять GitLab CE на SelectOS без всяких Docker’ов — в лоб, как есть. Завёл раннеры, погонял CI и нагрузку, SelectOS тащит!
Довольно часто сталкиваюсь с вопросом от ребят — вот бы с кем-нибудь пройти интервью/собес... Раньше бы я ответил так — ну дак пройди, накидай откликов, согласуй интервью да и сходи. Делов то.
Проникаемся новой операционной системой SelectOS на базе Debian, тыкаем в реальных условиях, смотрим фишки и фичи. Пробуем установить базовый софт и провести нагрузочное тестирование.
Привет, один из наших подписчиков попросил анонсировать его пепяку. Она уже пролетала в gitgate, но ничего страшного, пусть и тут полежит. Тем более штука маст-хэвная. Если кратко, TENV это консольный менеджер для управления …
Рассказываю, почему стал блокировать экран перед тем, как отойти от консоли. Практика защищает рабочую сессию и снижает риск случайных действий посторонних.
Он считает, сколько строк в файле bar.txt содержат слово foo. Здесь главная проблема — переменная count не изменится вне цикла while, потому что в Bash каждая команда в пайплайне (|) запускается в отдельной оболочке (subshell). То …
Это ошибочный вариант, бэд мать его практика. Команда cd $(dirname "$f") должна вернуть путь к папке, где лежит файл.
Представь: ты работаешь в компании единственным специалистом в своей роли. Ты что-то закоммитил, прод у***лся — с кого спросят и кто должен исправлять последствия?
Вчера после статьи про CrowdSec много ребят обратились с вопросом — мужик, а чё за движок такой у твоего блога? Отвечу сразу всем. Это не движок, это статика. И сделана она при помощи фреймворка MKDocs + Material.
Такс, как и обещал притаранил тебе рабочий пайплайн для авто деплоя mkdocs через gitea. Чтобы всё это заработало, в проекте тебе нужно создать структуру:
Сегодня решил поделиться отрицательным опытом. Код, приведенный в статье лучше не использовать. У меня возникла необходимость распарсить файл типа: