ServerAdmin.ru
31.3K subscribers
669 photos
55 videos
22 files
2.87K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru

Регистрация в РКН: https://vk.cc/cG1Urj
Download Telegram
Открытый практикум Linux by Rebrain: Следим за жизнью процессов в Linux

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

👉Регистрация

Время проведения:


30 июля (среда) в 19:00 по МСК

Программа практикума:

▪️ Потребление ресурсов: top/htop, iotop и др.
▫️ Расход и структура памяти: valgrind, py-spy и др.
▪️ Системные вызовы: strace
▫️ Создание и операции с файлами: inotify

Кто ведёт?

Даниил Батурин — основатель проекта VyOS, системы для корпоративных и провайдерских маршрутизаторов с открытым исходным кодом.

Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!

Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGdGBov
👎12👍6
Утром рассказал, как делаю бэкапы баз Postgresql с помощью скриптов и pg_dump. Сейчас покажу, как я их проверяю. Для этого обычно держу небольшой тестовый сервер с той же версией Postgresql. В идеале это должна быть копия прода, но не всегда это возможно. На нём же зачастую проверяю обновления.

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

#!/bin/bash

/usr/bin/rsync -av --progress --files-from=<(ssh [email protected] '/usr/bin/find /var/lib/pgpro/backup -type f -mtime -1 -exec basename {} \; | egrep -v timestamp') [email protected]:/var/lib/pgpro/backup/ /data/backup/


Использую rsync, а список файлов для копирования формирую сразу в выражении ключа, подключившись к нужному хосту по SSH и отсортировав файлы по дате, взяв не старше суток. В данном случае файл timestamp через egrep -v добавлен в исключения. У меня там метка времени последнего бэкапа хранится для нужд мониторинга.

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

#!/bin/bash

BASES=`/opt/pgpro/1c-16/bin/psql -U postgres -l | grep "_buh\|_zup" | awk '{print $1}'`
BACKUP_DIR="/data/backup"

for i in ${BASES};
  do
   echo "`date +"%Y-%m-%d_%H-%M-%S"` Drop database ${i}"
   /opt/pgpro/1c-16/bin/dropdb -U postgres ${i}
   echo "`date +"%Y-%m-%d_%H-%M-%S"` Create database ${i}"
   /opt/pgpro/1c-16/bin/createdb -U postgres -T template0 ${i}
   echo "`date +"%Y-%m-%d_%H-%M-%S"` Start extract $i"
   /usr/bin/find /data/backup -type f -name *${i}* -exec /usr/bin/unpigz '{}' \;
   echo "`date +"%Y-%m-%d_%H-%M-%S"` End extract $i"
   echo "`date +"%Y-%m-%d_%H-%M-%S"` Start restore $i"
   /opt/pgpro/1c-16/bin/psql -U postgres ${i} < ${BACKUP_DIR}/`ls ${BACKUP_DIR} | grep ${i}` 1>/dev/null
   echo "`date +"%Y-%m-%d_%H-%M-%S"` End restore $i"
   echo "`date +"%Y-%m-%d_%H-%M-%S"` rm dump ${i}"
   /usr/bin/rm ${BACKUP_DIR}/`ls ${BACKUP_DIR} | grep ${i}`
done


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

В данном скрипте нет никаких проверок успешной работы и оповещений, потому что это не последний этап проверок. Далее в зависимости от того, где эта база используется, запускаются свои проверки. Для баз 1С выполняется автоматическая выгрузка в dt с помощью отдельного скрипта. Если она проходит успешно, то считается, что дамп базы живой и нормально восстановился.

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

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#backup #postgresql #script
👍95👎4
В последних публикациях на тему бэкапа баз в Postgresql не раз всплывал вопрос: "А есть ли веб панели для управления бэкапами баз MySQL?". Я сам никогда их не использовал и не встречал. Знаю, что инструменты для подобного бэкапа есть в панелях по управлению веб серверами, типа Hestiacp, aaPanel и им подобным. Очевидно, если у вас не веб сервер, то такую панель ставить не имеет смысла. А специализированных панелей только для бэкапов не существует.

Решение, как оказалось, есть на поверхности. Существует известная веб панель для управления сервером - Webmin. Странно, что я по ней ни одной заметки ещё не написал. Хоть сам и не ставлю на свои сервера, но приходилось работать. Там есть интересные возможности, ради которых её можно использовать.

В Webmin есть модуль для управления MySQL. Я его попробовал. Настроек немного, но сделано вполне функционально. Я там немного покумекал, как сделать наиболее удобно и получилось неплохо. Расскажу по шагам, как я всё настроил.

1️⃣ Установка. Панель собрана в пакеты под популярные дистрибутивы. Подключить репозиторий можно автоматически через скрипт:

# curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
# sh webmin-setup-repo.sh

Либо вручную, добавив репозиторий и ключ от него. Для Debian это:

deb https://download.webmin.com/download/newkey/repository stable contrib

# apt-get install webmin --install-recommends

После установки можно идти по IP адресу сервера на порт 10000 и заходить под учёткой root. После этого в разделе Webmin ⇨ Webmin Configuration ⇨ IP Access Control ограничьте доступ к панели по IP адресам. Её нельзя выставлять в публичный доступ. В панели периодически находят уязвимости, а у неё полный доступ к серверу.

2️⃣ Если MySQL сервер устанавливался после установки Webmin, то модуль управления будет в списке Un-used Modules, если после, то в Servers. Чтобы модуль переехал из Un-used, нажмите на Refresh Modules.

3️⃣ В модуле есть возможность настроить подключение к MySQL серверу в разделе Configuration ⇨ Server Connections. По умолчанию используется localhost, но вы можете подключиться к любому другому серверу, в том числе в контейнере. Главное, чтобы к нему был доступ извне.

4️⃣ Можно настроить бэкап как конкретной базы, так и всех разом. При бэкапе всех баз, каждая из них сохраняется в отдельный файл и может при желании сразу сжиматься. Бэкап выполняется через стандартный mysqldump. Ключи запуска могут добавлять при необходимости.

5️⃣ Для бэкапов есть планировщик. Работает в формате заданий cron. Да и сами задания добавляются в системный файл /var/spool/cron/crontabs/root.

6️⃣ Основное неудобство – задание бэкапа каждый раз перезаписывает файлы. Нет возможности хранить несколько копий и автоматически удалять старые. Я решил этот вопрос максимально просто в лоб.

Можно указать команды, которые будут выполняться до запуска бэкапа и после. Настроил бэкап в директорию /root/sql_backup а после бэкапа добавил команду:

mkdir /mnt/backup/`date +"%Y-%m-%d_%H-%M"` && cp -R /root/sql_backup/* /mnt/backup/`date +"%Y-%m-%d_%H-%M"`/

Она создаёт директорию вида 2025-07-23_16-27 и копирует туда созданные файлы. При следующем запуске имя директории будет другое.

Для того, чтобы очищать старые бэкапы, добавил команду перед запуском:

find /mnt/backup -type d -printf '%T@ "%p"\n' | sort -n | head -n -30 | awk '{print $2}' | xargs -I {} rm -r {}

Она оставляет 30 новых директорий, а более старые удаляет. Вопрос с ротацией бэкапов решён. Работает просто и наглядно. При желании можно добавить ещё одну команду, которая будет куда-нибудь во вне копировать эти файлы.

7️⃣ Для восстановления бэкапов достаточно создать новую базу или выбрать существующую, зайти в неё, выбрать раздел Execute SQL ⇨ Run SQL from file ⇨ From local file и выбрать один из дампов. При желании можно подключиться к другому серверу и восстановить бэкап туда.

Получилось простое в настройке и вполне функциональное решение.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#backup #mysql
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍68👎5
Когда инфраструктура IT-отдела опирается на Windows, вы чувствуете себя ограниченным в возможностях?
Linux уже давно стал стандартом для серверных решений, контейнеров и облаков.

💪 Курс «Administrator Linux. Basic» погрузит вас в мир администрирования «с нуля»: от работы в терминале и Bash-скриптов до настройки веб- и MySQL-серверов, Docker-контейнеров, мониторинга через Grafana, Prometheus и ELK. На живых вебинарах вы посмотрите реальные сценарии — от установки Ubuntu в VirtualBox до развертывания микросервисов.

🚀 После курса вы сможете:
– уверенно работать в Bash и управлять пользователями, правами и пакетами;
– настраивать и оптимизировать Nginx/Apache, MySQL, создавать Docker-контейнеры и CI/CD-потоки через Git;
– подключать системы мониторинга: Grafana, Prometheus, ELK и настраивать тревоги;
– анализировать сетевой трафик и фильтровать пакеты через iptables.

👉 Пройдите бесплатное вступительное тестирование и получите персональную скидку на обучение: https://clck.ru/3NGFcG

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👎13👍8
Для управления серверами на базе Linux существует множество различных веб панелей. Одна из самых старых и популярных, если не самая популярная – Webmin. Лет 15 я её точно знаю, сколько администрирую Linux. При этом панель развивается и регулярно обновляется.

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

Устанавливается просто:

# curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
# sh webmin-setup-repo.sh
# apt-get install webmin --install-recommends

После установки можно заходить браузером на 10000-й порт сервера и логиниться под локальной учётной записью root. Настоятельно рекомендую сразу же ограничить доступ к панели в разделе Webmin ⇨ Webmin Configuration ⇨ IP Access Control. В ней периодически находят критические уязвимости, а у неё полный доступ к серверу с максимальными правами. Очень легко получить взлом сервера через неё. Откройте её только для себя, максимально ограничив доступ даже в локальной сети.

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

🔹Удобный просмотр логов в разделе System ⇨ System Logs. Ради этого я не раз устанавливал Webmin туда, где нужно было часто в них ковыряться. Например, удобно было смотреть историю письма на почтовом сервере по его ID. Webmin поддерживает текстовые логи syslog и бинарные логи от systemd. Реализован удобный просмотр через веб интерфейс с возможностью там же грепнуть по какой-то строке.

🔹Ручной запуск самописных скриптов. Самому мне нет нужды в этом, у меня всегда консоль под рукой. Но если нужно кому-то передать возможность запускать скрипты через браузер, то Webmin – быстрое и удобное решение для этого. В разделе Tools ⇨ Custom Commands можно добавить любые консольные команды или скрипты. Поддерживаются в том числе и SQL команды с возможностью задать сервер и учётку для исполнения.

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

🔹Управление правилами iptables в Networking ⇨ Linux Firewall. Сам я никогда не пользовался, так как предпочитаю правила держать в одном общем скрипте, чтобы они все были перед глазами. Но видел как другие админы использовали этот модуль. Он удобно реализован и лично у меня не возникало проблем, если нужно было что-то посмотреть или подправить. Интерфейс передаёт особенности настройки iptables.

🔹Управлением запущенными сервисами, типа Samba, MySQL и т.д. Если вам не хочется или нет необходимости в тонкой настройке через файлы конфигурации, то через Webmin вы без проблем настроите базовую функциональность. Причём все конфигурации будут на стандартных местах. Webmin не отнимает возможность настраивать вручную в консоли. Если вы измените что-то через консоль, то это не сломает настройку через Webmin.

Я видел навороченные настройки Samba с множеством сетевых дисков и настроенными доступами для различных пользователей. Сделано удобно. Если надо дать какому-то пользователю доступ к общей шаре, то это можно быстро сделать через Webmin. Это позволяет передать управление данной настройкой эникею. Если пользователей много, я обычно к AD или другому LDAP подключал самбу и управлял доступом через них

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#управление
1👍101👎5
Случайно вчера узнал, что сегодня праздник – День Сисадмина (*Кричали женщины: ура! И в воздух чепчики бросали*) (НЕТ). Никогда за ним специально не следил и не отмечал. А вчера пригласили на одно публичное мероприятие, посвящённое этому дню, но, к сожалению, не смог пойти, потому что переехал жить в деревню. И теперь все поездки удлинились.

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

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

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

1️⃣ В нашей профессии очень много направлений и областей знаний. Желаю не сидеть на одном месте, если чувствуете, что вас здесь что-то не устраивает. В нашей профессии все дороги открыты, можно выбирать любое направление. Я сам учился на программиста, пошёл работать в поддержку Windows систем, потом стал виндовым администратором, затем изучил Linux и администрировал его. Уволился с постоянной работы и фрилансил с частичной занятостью. Потом открыл ИП и стал работать по договорам с веб разработкой и поддержкой веб сервисов. Сейчас вообще стал блогером. Считаю, что в этой деятельности я раскрылся больше, нежели как it-специалист. Всегда ищу и стремлюсь к тому, что нравится. Боюсь, но всё равно делаю.

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

2️⃣ Второе пожелание продолжает предыдущее. Чтобы понять, куда двигаться, желаю почаще прислушиваться к себе, чтобы понять, что реально твоё, а что нет. Это вообще сложно и не всем получается найти себя. Но если об этом хотя бы задумываться, то есть шанс разглядеть то, что реально твоё, а не наносное. Так что желаю всегда двигаться вперёд и смотреть внутрь себя, ища там направления.

3️⃣ Ну и самое главное – желаю делать бэкапы, регулярно их мониторить и проверять! Это вообще база для спокойной жизни системного администратора. Сколько через меня всевозможных историй прошло на эту тему. Из-за специфики моей деятельности, у меня стаж шёл год за три или пять. Несколько лет я постоянно работал с 4-5 компаниями, которые иногда менялись, соответственно, видел много различных инфраструктур. А потом удалённо ещё больше. Какое-то время работал с разовыми заказами. Там вообще шёл поток различных проблем и задач. Это не считая того, что мне постоянно пишут. Буквально вчера услышал очередную историю, где живым оказался бэкап двухгодичной давности 🤷🏻‍♂️

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

#разное
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍329👎3
⚙️GitlabCI + ArgoCD — сборка и доставка приложений, не покидая кластер.

В этом вебинаре мы покажем, как выстраивать современный процесс CI/CD, полностью внутри Kubernetes-кластера — от сборки кода до доставки в продакшн, не выходя за его пределы. Используя связку GitlabCI и ArgoCD, вы научитесь создавать автономную и управляемую платформу, где всё — от пайплайнов до деплоя — происходит под полным контролем и в полной безопасности.

На вебинаре вы узнаете:

- Как развернуть Gitlab Runners и ArgoCD внутри кластера и настроить их взаимодействие.
- Настройка пайплайнов в GitlabCI: сборка, тестирование, упаковка образов.
- Как задействовать ArgoCD для GitOps-доставки: автообновления из Git-репозитория.
- Как добиться полной автономии CI/CD без выхода за границы инфраструктуры.

Вебинар проходит в рамках курса "Инфраструктурная платформа на основе Kubernetes"

👉 Регистрация и подробности о курсе "Инфраструктурная платформа на основе Kubernetes": https://clck.ru/3NHYKw

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍11👎7
Продолжаю утреннюю праздничную тему. На ютубе есть канал одной IT компании, которая почти каждый год выпускает юмористические ролики на тему сисадминов в праздник. Юмор специфический, но в основном неплохо задумано и снято. Что-то совсем старое, что-то не очень.

Я записал некоторые понравившиеся видео с ютуба в переводе от Яндекса для вашего удобства. Пришлось немного заморочиться. Мне лично больше всего понравился ролик на тему ИИ. Он самый первый в списке.

Оригиналы можно увидеть на youtube.

Всех ещё раз с праздником.

#юмор #видео
👍77👎5