ServerAdmin.ru
26.6K subscribers
197 photos
24 videos
8 files
2.47K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
Я тут словил реальное удивление, разочарование и радость одновременно. Как обычно просматривал сабреддит Sysadminhumor и увидел вот эту картинку.

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

Я каждый раз открывал диспетчер, делал сортировку по имени, чтобы список не прыгал, мотал куда-то вниз, чтобы поймать rphost, посмотреть, сколько он памяти сожрал или прибить.

Судя по всему я такой не один, раз эта картинка нашла своё место в разделе юмор. Получилось и смешно, и грустно одновременно. Теперь вы тоже это знаете и умеете. А могли и дальше пребывать в неведении.

#мем
​​🎓 У компании RedHat есть большое количество бесплатного обучающего материала в том числе в виде интерактивных уроков, где они воспроизводят полностью рабочую среду разработчика или devops инженера. Живёт всё это тут:

https://developers.redhat.com/learn

Интерактивные уроки в самом низу страницы (All interactive lessons). Для прохождения достаточно обычной учётной записи. Я, вроде бы, как developer зарегистрирован. Уже не помню точно, давно дело было. Никаких санкций и ограничений RedHat не вводил. У меня и учётка жива, хотя там указано, что я живу в Москве, и все бесплатные лицензии, что они дают, активны.

Напомню, что они всем выдают 16 лицензий на RHEL. Я одну систему погонял на тесте и удалил за ненадобностью. Очевидно, что пользоваться сейчас этой лицензией плохая идея. Но если вам хочется посмотреть, что это за система, у которой столько форков, то никаких проблем. Регистрируйтесь, получайте лицензии, устанавливайте и смотрите. Единственное, что особенно понравилось - там красивое брендирование оболочки, если будете её ставить. Стильно выглядит окружение.

Я прошёл один из уроков под названием DevOps and CI/CD with automation controller. Сделано прикольно. Для вас готовят отдельный стенд в браузере, где в виде отдельных вкладок реализован интерфейс VSCode, Jenkins, Gitea, Ansible Automation controller. И вам по шагам предлагают выполнить деплой условного приложения, работая в этих системах.

Обучением это можно назвать с натяжкой, потому что думать не надо. Все шаги расписаны и показаны, вам надо повторить. Так что это скорее развлечение и возможность посмотреть настоящее рабочее окружение для решения какой-то задачи.

Уроков там много, разбиты на категории (Devops, Linux, GitOps и т.д.) Вот пример некоторых уроков по Devops:
DevOps and CI/CD with automation controller
Build applications into container images
Installing Software using Package Managers
Linux commands for beginners
Run your first Ansible Playbook
Deploy containers with Podman
и т.д.

#обучение #бесплатно
Хочу ещё раз вернуться к теме здоровья и удобного рабочего места. Наткнулся на очень интересный и качественный канал одного разработчика. Обратил внимание, что давно не было свежих выпусков. Потом понял причину, когда посмотрел один из последних его роликов:

Чего не стоит делать ПРОГРАММИСТУ?! Как надо ПРАВИЛЬНО!

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

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

Чем раньше вы это поймёте, даже если у вас пока нет видимых проблем, тем лучше будет качество вашей жизни в будущем. Здоровье у всех после 30-ти лет идёт в минус. В зависимости от генетики и заботы о нём, проблемы каждый заметит в разное время, но то, что заметит, это 100%.

В видео автор хорошо описал причины проблем, хотя симптомы у всех будут разные. У меня лично совсем другой спектр проблем. У него головокружение, онемение, туман в голове. У меня это головные боли, зажимы нервов, гипертонус некоторых мышц шеи. Как только начинаю лениться в тренировках или много работать, сразу же приходят головные боли, которые не проходят, пока не начнёшь регулярно заниматься.

Единственное, на что особенно обращу внимание. Не слушайте ни чьих конкретных советов и рекомендаций по поводу решения своих проблем, если они уже есть. Типа идти в качалку или на плавание. Кому-то это пойдёт на пользу, а кому-то нет. Это всё очень индивидуально. Если где-то в спине заболело, то нельзя начинать хаотично что-то пробовать. Делаем сразу МРТ всего позвоночника. Ищем специалиста и идём к нему на приём. Если специалист смотрит только описание снимков и что-то рекомендует, то уходим от него и ищем следующего. Адекватное лечение сможет назначить только тот, кто лично посмотрит ваши снимки и оценит ваше состояние. По описанию это делать нельзя, так как там могут быть ошибки, неточности и т.д. Хороший специалист всегда сам посмотрит ваши снимки.

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

Сейчас в целом в стабильном состоянии, потому что знаю, что надо делать, чтобы было всё ОК. Мне необходимо 2-3 раза в неделю заниматься специально подобранным комплексом упражнений. Если не ленишься, то в целом нормально живёшь и не особо обращаешь внимание на проблемы.

В конце автор даёт хороший посыл, обращая внимание на то, что человек чувствует себя счастливым, когда у него всё хорошо в трёх сферах жизни: здоровье, семья, деньги. Если где-то просадка, то качество жизни падает. Я согласен с ним на 100%. Причём здоровье на первом месте, а деньги на последнем.

#разное #здоровье
​​Я много раз видел упоминание сервиса Netmaker, который служит для организации overlay сетей с помощью Wireguard. Это open source продукт, который можно развернуть у себя, либо воспользоваться облачным сервисом по подписке. Сразу скажу на кого он похож, чтобы было понятно о чём пойдёт речь: Nebula, Tailscale, ZeroTier.

Netmaker среди этих продуктов едва ли не самый популярный. Я последнее время много о нём слышал упоминаний. Его можно использовать и как для построения Site-to-Site соединений, так и для Mesh сетей.

Попробовать его можно в рамках бесплатного тарифного плана в SaaS сервисе. Там дают возможность добавить одну сеть и соединить с её помощью до 30-ти устройств. А если понравится, можно и у себя развернуть. Ставится автоматически с помощью готового bash скрипта.

Netmaker представляет из себя веб интерфейс, где вы добавляете хосты, формируете для них ключи, с помощью которых они объединяются в VPN сети. Настройками хостов и сетями управляете там же, в веб интерфейсе. Сервис полностью управляется через него. В консоль нужно будет лазить только на хостах, когда их будете подключать.

Перечислю несколько задач, которые можно будет решить с помощью Netmaker:

🔹У вас есть закрытая сеть с ограниченным доступом из интернета. На один из хостов ставится клиент Netmaker. С помощью настроек вы открываете доступ к закрытой сети через этот хост для какого-то набора остальных клиентов.

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

🔹С помощью Netmaker организуется Mesh VPN, где клиенты взаимодействуют друг с другом напрямую, а не через управляющий сервер, как, к примеру, в классическом openvpn.

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

Помимо этих примеров, в Netmaker есть следующая функциональность:
Мониторинг состояния сетей и хостов
Списки доступа к хостам и сетям
Управление пользователями и их правами на основе модели RBAC

Продукт известный, функциональный. В сети много руководств и роликов с описанием возможностей и настройки.

Сайт / Исходники

#vpn
​​У меня давно в рекомендациях записан сервис для заметок yonote.ru. Я откладывал знакомство с ним, как и с другими подобными сервисами, потому что надоело пытаться найти что-то новое. Это занимает много времени, а когда для тебя это инструмент не так уж критичен, тратить это время не хочется.

На текущий момент я для заметок использую локальный Joplin, для календаря связку Trello+Planyway, для дел сервис Todoist. Мне не нравится, что во-первых, всё это разные инструменты, во-вторых, последние два могут заблокировать. В идеале, хотелось бы получить одну программу, где всё это будет в одном месте. Но пока такую не нашёл.

В этом плане Yonote мне понравился. Это российский сервис. Разработчики прямо заявляют, что позиционируют свой продукт как замену Notion. Собственно, он на него сильно похож. Есть бесплатный тарифный план, которого для одиночного использования будет достаточно, если не хранить медиафайлы в сервисе.

Я вчера потратил вечер, чтобы попробовать его. Внешне вопросов никаких нет. Выглядит всё аккуратно, плюс-минус, как у всех подобных сервисов. Мне понравилось, как в Yonote можно организовать информацию с помощью таблиц и календарей. Думаю, что календарь Planyway смогу им заменить. К тому же Trello давно обещает заблокировать пользователей из РФ. Так что лучше до блокировки подобрать какую-то замену.

А в Yonote календарь неплохо реализован: есть разноцветные метки, чекбоксы, общий вид сразу на месяц, настраиваемые статусы для событий. Удобные и наглядные календари мало где есть. Я пробовал сервис календарей от Яндекса и очень сильно пытался переехать на локальный календарь Thunderbird. В итоге не понравилось ни то, ни другое.

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

В целом от Yonote у меня хорошие впечатления. Вполне состоявшийся и зрелый продукт. Есть API, импорт данных, интеграция с кучей сервисов (в том числе telegram и вебхуки), хорошая функциональность, командная работа. Если подбираете себе с нуля что-то или планируете переезд с иностранных сервисов, то посмотрите. В базовых возможностях ничем не хуже остальных, а более продвинутые я не проверял.

#заметки #отечественное
​​Предлагаю вашему вниманию любопытную утилиту, которую мне давно посоветовали посмотреть в контексте обсуждения темы Port knocking. На практике она может пригодиться в очень широком диапазоне костылей.

Речь пойдёт про программу updater. Она слушает запросы на специальный url и выполняет заданные действия, если запрос легитимный. То есть курлом можно дёрнуть какой-то урл и на сервере выполнится определённое действие. Например, iptables создаст разрешающее правила для подключения по ssh. Урлы можно выбирать любые, в том числе те, что не поддаются подбору. А также наличие аутентификации через токен, делают этот инструмент замаскированным и относительно безопасным. Можно посадить его за прокси, чтобы совсем спрятать.

У автора в репозитории примеры сразу в составе с docker-compose с использованием reproxy в качестве reversed proxy. Если хотите просто погонять утилиту и посмотреть, как работает, может приспособить для своих простых задач, то можете просто запустить в одиночном контейнере:

# docker run -p 8080:8080 -e LISTEN=0.0.0.0:8080 \
-e KEY=super-secret-password \
-e CONF=/srv/etc/updater.yml \
--name=updater -v ./etc:/srv/etc \
ghcr.io/umputun/updater:master

Создаёте директорию etc там, откуда будете запускать команду. В неё положите конфиг updater.yml для простейшего задания с echo:

tasks:

 - name: echo-test
  command: |
   echo "Test updater work"

Формат yaml, так что будьте аккуратны с пробелами. Теперь проверяем, как работает:

# curl 172.17.196.25:8080/update/echo-test/super-secret-password
{"task":"echo-test","updated":"ok"}

Думаю, принцип понятен. Автор пишет, что написал этот софт для использования в CI/CD без необходимости работы по SSH, а следовательно передачи паролей или ключей. По его задумке с помощью updater можно выполнять обновление и перезапуск docker контейнеров. Для этого в составе его контейнера есть docker client и туда пробрасывается docker.sock.

Кстати, его идею я сразу понял, так как в простых случаях я именно так и костылил в Teamcity. Заходил по SSH, обновлял и перезапускал контейнер консольными командами. В целом, это не очень хорошая практика, но задачу решает быстро и в лоб. Для небольших проектов нормальная тема. До этого разработчики руками это делали. Потом попросили настроить что-нибудь для автоматизации. Я воткнул бесплатный Teamcity и автоматизировал в лоб все их действия. Они были довольны.

Для работы на хосте updater нужно вытащить из контейнера и запустить напрямую. Это не трудно сделать, так как updater обычное приложение на GO, состоящее из одного бинарника. Ключи описаны автором в репозитории.

# docker cp f41a990d84c0:/srv/updater updater

Теперь можно запускать локально. Полезная небольшая утилита. Рекомендую запомнить её. Напомню, что есть похожая программа, про которую я пару раз писал и использую сам - labean.

Исходники

#security #cicd #devops
​​Сегодня вышло крупное обновление веб сервера Angie 1.3.0. Кто не читал, посмотрите две мои предыдущие заметки про него (1, 2). Изменения затронули open source версию, так что попробовать и оценить их сможет каждый.

Перечислю наиболее заметные нововведения.

1️⃣ В конфигурации location теперь можно использовать одновременно несколько шаблонов uri. Это упрощает конфигурацию location с одинаковыми настройками. То есть можно сделать примерно вот так:

location =~/.git
~*^/(\.ht|xmlrpc\.php)$
{
return 404;
}

Сейчас у меня то же самое записано вот так:

location ~ /.git {
return 404;
}

location ~* ^/(\.ht|xmlrpc\.php)$ {
return 404;
}

Там есть нюанс, что между модификатором и uri не допускается пробел. Немного синтаксис другой получается, не как у одиночных шаблонов. Я возможно что-то с синтаксисом напутал, но идею, думаю, вы поняли. Чуть позже обновится документация и можно будет уже точно смотреть, как это настраивается.

2️⃣ Angie научился самостоятельно экспортировать свою статистику в формате Prometheus, что явно упростит настройку мониторинга. Не нужен отдельный exporter для этих целей. Было бы неплохо сразу и шаблон для Zabbix сделать, не дожидаясь, пока кто-то из энтузиастов это реализует. Достаточно распарсить вывод для Prometheus.

3️⃣ Отдельной настройкой можно включить возможность экспорта содержимого конфигурационных файлов запущенной версии веб сервера через API.

Остальные изменения:
детальная информация и метрики по группам проксируемых stream-серверов в интерфейсе статистики, предоставляемом директивой "api"
опция "resolve" директивы "server" в блоке "upstream" модуля "stream", позволяющая отслеживать изменения списка IP-адресов, соответствующего доменному имени, и автоматически обновлять его без перезагрузки конфигурации
опция "service" директивы "server" в блоке "upstream" модуля "stream", позволяющая получать списки адресов из DNS-записей SRV, с базовой поддержкой приоритета
отображение номера поколения конфигурации в именах процессов, что позволяет с помощью утилиты "ps" отслеживать успех перезагрузок конфигурации и количество поколений рабочих процессов с предыдущими версиями конфигурации.

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

#webserver #angie
В Telegram огромное количество всевозможных ботов в том числе IT тематики. Я мало их знаю и использую, но кое-что есть. Поделюсь с вами тем, что использую сам, а также очень рассчитываю на то, что кто-то поделится чем-то полезным, что использует он. Тогда можно будет составить более полный список.

📌 Два качественных бота от @kiriharu:
@unicheckbot - пинговалка ip адресов, сайтов, whois, а также проверялка TCP портов.
@boxtoolbot - полный набор всевозможных проверок: информация об IP адресе, информация о технологиях, используемых на сайте, информация по MAC адресу и многое другое, в том числе не относящееся к IT.

📌 @SiteKnockerBot - мониторинг доступности сайтов. Долго им пользовался как одним из резервных мониторингов, но в какой-то момент было много ложных срабатываний, отключил.

📌 @VirusTotalAV_bot - проверяет файлы на вирусы через virustotal. Надоедает рекламой, поэтому постоянно пользоваться на основном аккаунте невозможно, но лучше вариант не нашёл.

📌 @DrWebBot - проверка на вирусы от DrWeb. Тут никакой рекламы и спама.

📌 @SaveYoutubeBot - этот бот качает видео с ютуба. Привык им пользоваться вместо vanced, который умер. С аналогами не захотелось связываться. С ботом в целом удобно скачать и слушать в фоне. Бот показывает много рекламы, так что на основном акке пользоваться не получится, задолбает.

📌 @creationdatebot - бот показывает дату создания аккакунта в Telegram. Иногда бывает полезно посмотреть, с кем общаешься.

📌 @GmailBot - очень давно пользуюсь для второстепенных ящиков. Это самый простой способ получить уведомления от мониторинга в Telegram. Настраиваем его на почтовый ящик и подключаем бота.

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

Кстати, написание бота — отличный способ начать изучение Python. Я одно время занимался этим, даже бота в итоге написал, который работал. Но всё забросил, потому что нет времени осваивать ещё одно направление. Для изучения программирования нужно прилично погружаться в тематику. Но в целом, там ничего сложно. С помощью небольшого бесплатного курса я оказался в состоянии сам программировать простейшие вещи. А дальше уже дело техники, главное начать и увлечься. У Python порог входа очень низкий.

#подборка #tg_bots
▶️ Посмотрел на днях видео, которое меня привлекло в первую очередь своим названием:

Голосовое управление оборудованием Mikrotik: от фантазий к реальности

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

А подвинулись они до такой степени, что сейчас практически любой, кто умеет работать с Linux, может настроить распознавание голосовых команд и выполнять какие-то действия. Это в случае использования чьих-то наработок. Если строить свою логику, то придётся немного программировать на одном из популярных языков программирования. Bash тоже сойдёт, если что.

В выступлении автор рассказывает, как он с помощью колонки Алиса, сервиса Яндекса (если я правильно понял, то он бесплатен, если у тебя колонка) настроил выполнение некоторых команд на домашнем Mikrotik: включение гостевой wifi сети, отключение интернета детям и другие штуки.

В данном случае Микротик здесь постольку-поскольку, потому что реально выполняется подключение по SSH и выполняется заскриптованная команда. То есть это универсальный вариант запуска любых команд по SSH.

Я сам не фанат какой-то автоматизации в доме. Ничего умнее термостата тёплого пола и gsm модуля для управления котлом у меня нет. Все кнопки физические, везде протянуты провода. Я даже wifi не планирую использовать, так как у всех и так море интернета в смартфонах, а все рабочие места проводные. Пока необходимости в wifi в новом доме не возникло ни разу.

С использованием описанной технологии Яндекса вы умный дом можете себе настроить самостоятельно. Причём довольно просто. Берём колонку, некий контроллер, который можно дёргать удалёнными командами и реализуем свои фантазии. Главное, не забыть продублировать всё физически, чтобы при отсутствии интернета дом не превратился в тыкву.

#видео #mikrotik
​​На одном из почтовых серверов попросили увеличить лимит на размер вложений. Сказали, что 10 Мб им не хватает. Немного удивился, потому что по умолчанию ставлю лимит на размер письма 20 Мб. Считаю это универсальным размером. Разрешение пересылки больших файлов без квот на почтовые ящики очень быстро приводит к разрастанию почтовой базы. Особенно, когда кто-то начинает макеты, презентации и прочие большие файлы по почте ежедневно гонять.

Сходил, проверил. Ограничение действительно стояло 20 Мб. Смысл тут в том, что итоговый размер письма может быть существенно больше, чем объём вложения. Всё дело в кодировании вложений для пересылки в письме. Они передаются как часть письма в виде печатных символов стандартной кодовой таблицы ASCII.

Для кодирования вложений в электронной почте обычно используют методы base64 и quoted-printable, описанные в стандарте MIME. Их там больше представлено, но насколько я знаю, в современной почте используют именно эти два. При кодировании по методу base64, а чаще всего используется именно он, получается в среднем увеличение размера вложения в 1,3 раза. Но бывает и значительно больше. Это зависит от особенностей исходного файла и метода кодирования. При использовании quoted-printable увеличение размера может доходить до 3-х раз.

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

Mime-Version: 1.0
Content-Type: application/pdf; name="file_credit50198.pdf"
Content-Transfer-Encoding: Base64
Content-Disposition: attachment; filename="file_credit50198.pdf"

Это кодированный pdf файл, который в исходном тексте письма представлен в виде ASCII символов.

Так что когда ставите ограничение на размер письма, имейте ввиду, что этот размер может существенно отличаться от итогового размера вложения, которое сможет пролезть в этот лимит.

#mailserver
​​Один подписчик поделился полезным сервисом, про который я ранее не слышал:

https://cmdgenerator.phphe.com.

С его помощью можно подготовить итоговую команду для популярных утилит командной строки Linux с набором параметров. Сделано добротно и удобно. Это такая продвинутая замена man, которая позволяет быстрее сформировать нужные параметры. Единственное, заметил, что некоторые ключи не совпадают с ключами этой утилиты в том же Debian. Не понятно, для какой версии они актуальны. Стоило бы указать.

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

https://explainshell.com

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

find-command-generator

Он тоже неплохо сделан и может существенно помочь. У find куча параметров, которые невозможно запомнить. Надо либо готовые команды записывать, либо открывать man и искать нужное. Этот помощник может сэкономить время. Для cron ещё полно похожих сервисов.

#bash #terminal
​​Для бэкапа баз PostgreSQL существует много различных подходов и решений. Я вам хочу предложить ещё одно, отметив его особенности и преимущества. Да и в целом это одна из самых известных программ для этих целей. А в конце приведу список того, чем ещё можно бэкапить PostgreSQL.

Сейчас речь пойдёт об open source продукте pgBackRest. Сразу перечислю основные возможности:
умеет бэкапить как локально, так и удалённо, подключаясь по SSH
умеет параллелить свою работу и сжимать на ходу с помощью lz4 и zstd, что обеспечивает максимальное быстродействие
умеет полные, инкрементные, разностные бэкапы
поддерживает локальное и удалённое (в том числе S3) размещение архивов с разными политиками хранения
умеет проверять консистентность данных
может докачивать бэкапы на том месте, где остановился, а не начинать заново при разрывах связи

Несмотря на то, что продукт довольно старый (написан на C и Perl), он активно поддерживается и обновляется. Плохо только то, что в репозитории нет ни бинарников, ни пакетов. Только исходники, которые предлагается собрать самостоятельно. В целом, это не проблема, так как в Debian и Ubuntu есть уже собранные пакеты в репозиториях, но не самых свежих версий. Свежие придётся самим собирать.

# apt install pgbackrest

Дальше настройка стандартная для подобных приложений. Рисуете конфиг, где описываете хранилища, указываете объекты для бэкапа, параметры бэкапа и куда складывать логи. Они информативные, можно анализировать при желании.

Подробное описание работы pgBackRest, а так же подходы к созданию резервных копий PostgreSQL и их проверке подробно описаны в ▶️ выступлении Дэвид Стили на PGConf.Online.

Чем ещё можно бэкапить PostgreSQL?

🔹pg_dump - встроенная утилита для создания логической копии базы. Подходит только для небольших малонагруженных баз

🔹pg_basebackup - встроенная утилита для создания бинарных бэкапов на уровне файлов всего сервера или кластера. Нельзя делать выборочный бэкап отдельных баз или таблиц.

🔹Barman - наиболее известный продукт для бэкапа PostgreSQL. Тут я могу ошибаться, но по моим представлениям это большой продукт для крупных компаний и нагруженных серверов. Barman размещают на отдельное железо и бэкапаят весь парк своих кластеров. Его часто сравнивают с pgBackrest и выбирают, что лучше.

🔹WAL-G - более молодой продукт по сравнению с Barman и pgBackrest. Написан на GO и поддерживает в том числе MySQL/MariaDB и MS SQL Server. Возможности сопоставимы с первыми двумя, но есть и свои особенности.

Если перед вами стоит задача по бэкапу PostgreSQL, а вы не знаете с чего начать, так как для вас это новая тема, посмотрите выступление с HighLoad++:
▶️ Инструменты создания бэкапов PostgreSQL / Андрей Сальников (Data Egret)

#backup #postgresql
Вспомнился старый мем с колонками. Дело в том, что у меня примерно такие же работают до сих пор. Даже не знаю, сколько им лет. 20 примерно, работают исправно.

И вот в какой-то момент они начали трещать. У меня прям флешбэки из прошлого пошли. Не хватало только треска модема. Долго не мог понять, почему колонки снова стали трещать. А потом нашёл объяснение.

Сыну купил часы-браслет с возможностью звонить через них, чтобы он в школе был на связи без смартфона. А браслет этот работает только через 2G. Пришлось купить симку не Tele2, которым вся семья пользуется, так как он в Москве не поддерживает 2G.

Если положить этот браслет рядом, начинают трещать колонки в момент обмена информацией с базовыми станциями. Современные сотовые телефоны на 4G такого эффекта не дают.

Кстати, браслет - удобная шутка. Хороший вариант для младшеклассников оставаться на связи без смартфона, который им в школе не нужен.

#мем
​​Давно не затрагивал игровые или детские темы. Решил немного посмотреть, не появилось ли чего-то нового. А оно появилось. Я уже рассказывал про компанию Luden.io, у которой очень классные игры для детей на русском языке с уклоном в обучение программированию. Да и не только для детей. Игры реально классные, красочные, увлекательные. Прочитайте мою заметку, там много информации.

У них появилась новая игра Craftomation 101. Она ещё не полностью доделана, но вполне играбельна. Можно бесплатно скачать и поиграть. По ссылке в конце дистрибутив под Windows, Linux, Mac. На винду установка не требуется. Просто скачиваете и играете. Можно выбрать русский язык в настройках. Перевод качественный, так как создатели русскоязычные.

Я немного поиграл, примерно час. Дошёл до появления роботов и их программирования. Запрограммировал их на выполнения некоторых действий. Игра реально красивая и увлекательная. Интересно и самому поиграть. Показал сыну (9 лет), сразу заинтересовался. Поиграл немного, научился роботов программировать. Сразу всех задействовал, автоматизировал рутину. В общем, ничего так игра, рекомендую.

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

#игра #обучение #дети
​​🎓 На днях на хабре был анонс на вид очень неплохого учебника для тестировщика под названием "The 100-Year QA-Textbook". Он собрал много просмотров, так что возможно многие из вас про него уже знают. К тому же предварительный релиз этого обучающего материала был давно, а сейчас вышло очередное обновление.

Вот информация о курсе от создателей:

Зачем появился бесплатный интерактивный «100-Year QA-textbook» на 700+ страниц для обучающихся тестированию

Полный релиз бесплатного интерактивного 700-страничного учебника по тестированию

На вид материал выглядит качественным. Несмотря на то, что он анонсирован для тестировщиков, 2/3 курса это база, которая подойдёт для любой специальности в IT. Судя по содержанию это так и есть, потому что там разбирают:
СУБД и SQL запросы
База по ОС Linux (файловые системы, пользователи, процессы и т.д.)
Работа с сетью
Архитектура серверного ПО
Rest API, HTTP
Docker, GIT

К сожалению, не смог посмотреть раздел по Linux, потому что курс даёт возможность проходить материал последовательно. Пока не пройдёшь тест за предыдущий раздел, к следующему доступа нет.

Как я понял, курс сделан на базе онлайн школы тестировщиков. У меня есть любопытная история на этот счёт и общее мнение насчёт тестировщиков. Но чтобы не смешивать тематику, это будет вечером в отдельной публикации.

#обучение #бесплатно
​​История насчёт тестировщика. Есть у меня знакомый дальнобойщик. Ну как знакомый. Я с ним специально не общаюсь, но иногда пересекался на одном объекте. Он молодой мужчина лет 30-ти. И вот он мне как-то раз сказал, что решил стать тестировщиком, чем очень меня удивил. Я попросил подробностей.

Оказалось, есть какой-то человек, который собирает группу людей, вообще не связанных с IT, и по какой-то специальной программе обучает людей некой базе по тестированию. А самое главное, что учит успешно проходить собеседования и гарантированно получать работу. Метода, якобы, работает на 100%.

Сказать, что я удивился, это ничего не сказать. Никакие мои доводы на то, что это развод, приняты не были. Человек вёл себя так, как будто его загипнотизировали и вовлекли в секту будущих QA. Все доводы отмёл, сказал, что уже сделана предоплата, а тема верная. Обучение будет удалённое по интернету, так что даже ездить никуда не надо.

Этот дальнобой уволился и больше я его не видел. Так бы обязательно спросил про обучение. Знаю только, что тестировщиком он не стал, продолжает работать водителем в Москве. Вспомнил сейчас эту историю и попробую всё-таки навести справки и связаться с ним. Стало интересно, что же в итоге за обучение было и было ли вообще.

Насчёт тестировщиков есть реальное умопомешательство у некоторых, вызванное агрессивной промывкой мозгов на тему того, что стать тестировщиком относительно просто, а зарплаты хорошие. Это же IT. Раз уже до дальнобойщиков дошло.

По моим представлениям, сейчас тестировщиком с нуля невозможно никуда устроиться. Вас просто не возьмут, потому что существуют тысячи выпускников курсов, которые долбят вакансии сотнями откликов. Реально стать QA, перейдя из какого-то другого направления. Например, будучи сисадмином или разработчиком. Не всем же вовлечённым нравится эта деятельность. Можно попробовать себя тестировщиком. Вся база уже есть. Мне кажется, что вакансии закрывают именно такие люди. А все, кто пытаются с нуля стать тестировщиком, только тратят своё время и деньги на пустые обучения.

❗️Кстати, если среди читателей есть тестировщики, расскажите свою историю, как туда попали, где учились, откуда пришли. У меня нет ни одного знакомого тестировщика. Ни разу с ними не общался и не контактировал.

#мысли #разное
В современных дистрибутивах Linux почти везде вместо традиционных текстовых логов средствами syslog используются бинарные логи journald. Они также, как и текстовые логи, иногда разрастаются до больших размеров, так что необходимо заниматься чисткой. Вот об этом и будет заметка. На днях пришлось на одном сервере этим заняться, поэтому решил сразу оформить заметку. Написана она будет по мотивам Debian 11.

Смотрим, сколько логи занимают места:
# journalctl --disk-usage
Обычно они хранятся в директории /var/log/journal.

Настройки ротации логов могут быть заданы в файле /etc/systemd/journald.conf. Управляются они следующими параметрами:

[Journal]
SystemMaxUse=1024M
SystemMaxFileSize=50M

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

# systemctl restart systemd-journald.service

Так же вы можете обрезать логи в режиме реального времени. Примерно так:

# journalctl --vacuum-size=1024M
# journalctl --vacuum-time=7d

В первом случае обрезали старые логи, чтобы их осталось не больше 1024 мегабайт. Во втором обрезали все логи, старше 7-ми дней.

Кстати, если вы не хотите связываться с настройками journald, то можете команды выше просто в cron добавить на регулярное выполнение. Это тоже будет решение по ротации логов.

По умолчанию journald может занимать до 10% объёма раздела, на котором он находится. Но не более 4 Гб. На деле именно с ограничением в 4 Гб я чаще всего и сталкивался. Если у вас общий системный диск 40+ Гб, то как раз логи в 4 Гб у вас и будут.

Если у вас в логи спамит какая-то конкретная служба, то имеет смысл для неё отдельно настроить ограничение, выделив её логи в отдельный namespace. Для этого в unit службы в раздел [Service] добавьте отдельное пространство логов. Покажу на примере ssh. Запускаем редактирования юнита.
# systemctl edit ssh
Добавляем:
[Service]
LogNamespace=ssh

Создаём в директории /etc/systemd/ отдельный конфиг для этого namespace journald@ssh.conf со своими параметрами:

[Journal]
SystemMaxUse=20M

Перезапускаем службу:
# systemctl restart ssh

Смотрим его логи отдельно:
# journalctl --namespace ssh

Я, кстати, по старинке, всегда запускаю текстовые логи через syslog. Просто привык к ним. В итоге у меня и бинарные логи в journal, и текстовые в syslog. Примерно как с cron и timers. Через systemd больше функциональности и настройки гибче, но старые инструменты проще и быстрее в настройке.

#linux #logs #systemd #journal
​​Когда-то давно на одном из обучений услышал необычное сравнение работы классических сисадминов и девопсов, как разницу между домашними животными и крупным рогатым скотом - pet vs cattle. Многие, наверное, уже знают, о чём тут речь. Напишу для тех, кто, возможно, об этом не слышал.

Идея в том, что в стародавние времена инфраструктура состояла из отдельных серверов и ими занимались админы как с домашними животными. Каждого знали лично, занимались ими, настраивали, обновляли и т.д. Даже имена давали осмысленно, иногда что-то красивое выдумывали.

С приходом методологии DevOps отношение к серверам поменялось. Ими управляют массово, как крупным рогатым скотом. Никто по отдельности не занимается каждой единицей, а вместо этого создаёт инструменты автоматизации, чтобы решать вопросы массово. И имена обычно по шаблону задаются, как и все основные настройки, обслуживание и т.д.

У меня лично сейчас все сервера, как домашние животные. Из-за того, что их немного (штук 50-60 VPS и 15 железных в сумме, но всё сильно разнородное и принадлежащее разным юр. лицам), я всех знаю лично, регулярно подключаюсь по SSH и что-то делаю вручную. Мне так больше нравится. Потребность в таких услугах всё равно есть, поэтому я остался в этой нише.

Отличить подход pet от cattle очень просто. Если у вас какой-то сервер сломался и работа сервиса нарушена, а вы начинаете думать, как быстрее его восстановить и в каком состоянии бэкапы, то у вас домашние животные. Если вы просто прибили упавший сервер и подняли новый, автоматически накатив на него всё, что надо, то у вас крупный рогатый скот. Очевидно, что для подхода cattle нужны бОльшие масштабы и бОльшие бюджеты. До какого-то уровня это будет экономически не оправданно.

А вам какой подход больше по душе? Ручной или массовое управление с автоматизацией? У меня, как я уже сказал, ручной. Поэтому и вся тематика канала соответствующая. Думаю, это и так заметно.

#разное #devops
В systemd есть все необходимые инструменты для централизованного сбора логов. Вот они:

systemd-journal-remote — служба, принимающая или забирающая записи журналов на центральном сервере
systemd-journal-upload — служба, отправляющая локальные журналы на центральный сервер

Всё это позволяет без сторонних инструментов настроить централизованный сбор логов со множества серверов в одном месте. В Debian эти службы устанавливаются одним пакетом systemd-journal-remote.

# apt install systemd-journal-remote

После этого можно подготовить конфиг службы. Если нет нужды, то можно отключить работу по https, чтобы не заморачиваться с сертификатом, если сбор логов идёт по закрытым каналам связи. Для этого копируем системный unit в /etc/systemd/system и меняем параметр ExecStart:

# cp /lib/systemd/system/systemd-journal-remote.service \
/etc/systemd/system/systemd-journal-remote.service

[Service]
ExecStart=/lib/systemd/systemd-journal-remote --listen-http=-3 --output=/var/log/journal/remote/

Заменили ключ --listen-https на --listen-http. Если захотите использовать https, то сертификат надо будет прописать в /etc/systemd/journal-remote.conf. Далее достаточно создать необходимую директорию, назначить права и запустить службу:

# mkdir -p /var/log/journal/remote
# chown systemd-journal-remote:systemd-journal-remote /var/log/journal/remote
# systemctl daemon-reload
# systemctl start systemd-journal-remote

Служба запустится на tcp порту 19532.

Перемещаемся на сервер, который будет отправлять логи и устанавливаем туда этот же пакет. Затем идём в конфигурационный файл /etc/systemd/journal-upload.conf и добавляем туда путь к серверу:

[Upload]
URL=http://10.20.1.36:19532

Запускаем службу и проверяем, что она успешно начала отправку логов:

# systemctl start systemd-journal-upload
# systemctl status systemd-journal-upload

Если ошибок нет, то можно идти на центральный сервер и там смотреть логи от удалённого сервера.

# journalctl -D /var/log/journal/remote -f

Сами логи будут лежать в отдельных файлах с ip адресом отправляющего сервера в названии. Примерно так: remote-10.20.1.56.journal. Можно посмотреть конкретный файл:

# journalctl --file=remote-10.20.1.56.journal -n 100

Для этих логов действуют те же правила фильтрации, что и для локальных. Смотрим все логи юнита ssh:

# journalctl --file=remote-10.20.1.56.journal -u ssh

Или только сообщения ядра:

# journalctl --file=remote-10.20.1.56.journal -k

Если я правильно понял, то ротация удалённых логов будет производиться по тем же правилам и настройкам, что и всего системного журнала journald. Я рассказывал об этом. Отдельно настраивать не нужно.

С помощью systemd-journal удобно собирать логи в одно место с множества хостов без установки на них стороннего софта. А потом уже централизованно отправить в любую другую систему хранения логов на обработку. Я ещё забыл упомянуть, что systemd-journal-remote можно настроить так, что он сам будет ходить по серверам и забирать с них логи.

#linux #logs #systemd #journal
Информация с канала руководителя одного из направлений разработки в RUTUBE. Так что сейчас, как никогда, актуальные старые русские поговорки:

"Слово не воробей, вылетит не поймаешь"
"Береги честь смолоду"

Я уже давно понял, что в публичной плоскости надо очень аккуратно выражаться. Некоторые свои старые записи убрал (не в этом канале).

Политические срачи прошу не разводить, буду банить за это. Просто лишний раз решил всем напомнить, что сейчас вот так. Причём во всём мире. За неаккуратное слово даже нобелевской премии в 90 лет лишиться можно. Что уж говорить о приёме на работу.

Сам смотрел соцсети кандидатов, когда наймом занимался. Иногда это хорошо характеризует человека. Если вы идейный протестун, старайтесь это не сильно афишировать. Работе может помешать. Я сам иногда бываю несдержан в критике. Получал предупреждения от мудрых знакомых, что иногда пишу лишнее публично, в основном в ВК. Стараюсь следить за собой.

#разное
​​Ещё одна заметка про systemd и его встроенные инструменты для работы с логами. Есть служба systemd-journal-gatewayd, с помощью которой можно смотреть логи systemd через браузер. Причём настраивается она максимально просто, буквально в пару действий. Показываю на примере Debian.

Устанавливаем пакет systemd-journal-remote:

# apt install systemd-journal-remote

Запускаем службу:

# systemctl start systemd-journal-gatewayd.service

Порт по умолчанию 19531. Идём смотреть логи в браузер: http://10.20.1.36:19531/browse. Это обзорный url. Тут в выпадающем списке можно выбирать любой лог.

Можно посмотреть логи только текущей загрузки: http://10.20.1.36:19531/entries?boot.

Можно через curl забирать эти же логи в json формате. Примерно так для юнита ssh:
# curl --silent -H 'Accept: application/json' \
   'http://10.20.1.36:19531/entries?UNIT=ssh.service'

Все параметры и возможности описаны в документации. Обращаю внимание, что можно не только локальные логи открывать для доступа, но и собранные с удалённых машин. Если вы настроили такой сбор по моей вчерашней заметке, то директорию с логами для systemd-journal-gatewayd можно указать отдельно. Параметр -D DIR, --directory=DIR.

#linux #logs #systemd #journal