Открытый практикум Linux by Rebrain: Следим за жизнью процессов в Linux
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉Регистрация
Время проведения:
30 июля (среда) в 19:00 по МСК
Программа практикума:
▪️ Потребление ресурсов: top/htop, iotop и др.
▫️ Расход и структура памяти: valgrind, py-spy и др.
▪️ Системные вызовы: strace
▫️ Создание и операции с файлами: inotify
Кто ведёт?
Даниил Батурин — основатель проекта VyOS, системы для корпоративных и провайдерских маршрутизаторов с открытым исходным кодом.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGdGBov
После регистрации мы отправим вам подарок! Вы сможете найти его в ответном письме.
👉Регистрация
Время проведения:
30 июля (среда) в 19:00 по МСК
Программа практикума:
▪️ Потребление ресурсов: top/htop, iotop и др.
▫️ Расход и структура памяти: valgrind, py-spy и др.
▪️ Системные вызовы: strace
▫️ Создание и операции с файлами: inotify
Кто ведёт?
Даниил Батурин — основатель проекта VyOS, системы для корпоративных и провайдерских маршрутизаторов с открытым исходным кодом.
Бесплатные практикумы по DevOps, Linux, Networks и Golang от REBRAIN каждую неделю. Подключайтесь!
Реклама. ООО "РЕБРЕИН", ИНН: 7727409582, erid: 2W5zFGdGBov
👎12👍6
Утром рассказал, как делаю бэкапы баз Postgresql с помощью скриптов и
Первым делом надо забрать дампы с исходного сервера. Для этого беру простой скрипт, который забирает по SSH только свежие файлы за прошлый день. Если забрать сразу только нужные файлы, то потом не придётся делать в них выборку:
Использую rsync, а список файлов для копирования формирую сразу в выражении ключа, подключившись к нужному хосту по SSH и отсортировав файлы по дате, взяв не старше суток. В данном случае файл timestamp через
Ну а дальше дело техники. По очереди выполняю набор команд для удаления старой базы, создания новой, распаковки и заливки дампа. Перед первым запуском этого скрипта вручную создаю все восстанавливаемые базы и выборочно проверяю восстановление. Потом формирую итоговый список команд:
Сразу говорю, что я тут ничего не оптимизировал, никаких проверок не делал. Если просто взять и запустить, то скорее всего у вас вывалятся какие-то ошибки или что-то пойдёт не так. Я просто показываю идею. У меня уже давно и структура каталогов одна и та же, и подход к именованию баз, бэкапов и т.д. Это всё сделано под меня и работает так уже много лет. Меня устраивает.
В данном скрипте нет никаких проверок успешной работы и оповещений, потому что это не последний этап проверок. Далее в зависимости от того, где эта база используется, запускаются свои проверки. Для баз 1С выполняется автоматическая выгрузка в dt с помощью отдельного скрипта. Если она проходит успешно, то считается, что дамп базы живой и нормально восстановился.
Если же это база от веб проекта, то параллельно из другого бэкапа восстанавливаются исходники в тестовый веб сервер, подключается восстановленная база и работает стандартная веб проверка в Zabbix Server, которая ищет какие-то данные на странице, которые без работающей базы не будут показаны. Если веб проверки проходят успешно, то считается, что база восстановилась, да и в целом бэкап живой.
Более сложные проверки в восстановленных базах я не делаю. Мой опыт в обслуживаемых инфраструктурах показывает, что этого достаточно. Ни разу не сталкивался, что всё прошло успешно, а с базой проблемы. Обычно проблемы возникают сразу в снятии дампа. Если он корректно выполнен, то дальше уже все отрабатывает нормально.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #postgresql #script
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
Telegram
ServerAdmin.ru
Раз уж я рассмотрел панели для управления бэкапами (Postgresus и Pgbackweb) в виде дампов в Postgresql, было бы логично рассмотреть и вариант со своими велосипедами на bash. Поделюсь тем, что использую я.
Сначала полный текст скрипта для бэкапа:
#!/bin/bash…
Сначала полный текст скрипта для бэкапа:
#!/bin/bash…
👍95👎4
В последних публикациях на тему бэкапа баз в Postgresql не раз всплывал вопрос: "А есть ли веб панели для управления бэкапами баз MySQL?". Я сам никогда их не использовал и не встречал. Знаю, что инструменты для подобного бэкапа есть в панелях по управлению веб серверами, типа Hestiacp, aaPanel и им подобным. Очевидно, если у вас не веб сервер, то такую панель ставить не имеет смысла. А специализированных панелей только для бэкапов не существует.
Решение, как оказалось, есть на поверхности. Существует известная веб панель для управления сервером - Webmin. Странно, что я по ней ни одной заметки ещё не написал. Хоть сам и не ставлю на свои сервера, но приходилось работать. Там есть интересные возможности, ради которых её можно использовать.
В Webmin есть модуль для управления MySQL. Я его попробовал. Настроек немного, но сделано вполне функционально. Я там немного покумекал, как сделать наиболее удобно и получилось неплохо. Расскажу по шагам, как я всё настроил.
1️⃣ Установка. Панель собрана в пакеты под популярные дистрибутивы. Подключить репозиторий можно автоматически через скрипт:
Либо вручную, добавив репозиторий и ключ от него. Для Debian это:
После установки можно идти по 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️⃣ Можно настроить бэкап как конкретной базы, так и всех разом. При бэкапе всех баз, каждая из них сохраняется в отдельный файл и может при желании сразу сжиматься. Бэкап выполняется через стандартный
5️⃣ Для бэкапов есть планировщик. Работает в формате заданий cron. Да и сами задания добавляются в системный файл
6️⃣ Основное неудобство – задание бэкапа каждый раз перезаписывает файлы. Нет возможности хранить несколько копий и автоматически удалять старые. Я решил этот вопрос максимально просто в лоб.
Можно указать команды, которые будут выполняться до запуска бэкапа и после. Настроил бэкап в директорию
Она создаёт директорию вида
Для того, чтобы очищать старые бэкапы, добавил команду перед запуском:
Она оставляет 30 новых директорий, а более старые удаляет. Вопрос с ротацией бэкапов решён. Работает просто и наглядно. При желании можно добавить ещё одну команду, которая будет куда-нибудь во вне копировать эти файлы.
7️⃣ Для восстановления бэкапов достаточно создать новую базу или выбрать существующую, зайти в неё, выбрать раздел Execute SQL ⇨ Run SQL from file ⇨ From local file и выбрать один из дампов. При желании можно подключиться к другому серверу и восстановить бэкап туда.
Получилось простое в настройке и вполне функциональное решение.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#backup #mysql
Решение, как оказалось, есть на поверхности. Существует известная веб панель для управления сервером - Webmin. Странно, что я по ней ни одной заметки ещё не написал. Хоть сам и не ставлю на свои сервера, но приходилось работать. Там есть интересные возможности, ради которых её можно использовать.
В Webmin есть модуль для управления MySQL. Я его попробовал. Настроек немного, но сделано вполне функционально. Я там немного покумекал, как сделать наиболее удобно и получилось неплохо. Расскажу по шагам, как я всё настроил.
# 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 адресам. Её нельзя выставлять в публичный доступ. В панели периодически находят уязвимости, а у неё полный доступ к серверу.
mysqldump
. Ключи запуска могут добавлять при необходимости. /var/spool/cron/crontabs/root
.Можно указать команды, которые будут выполняться до запуска бэкапа и после. Настроил бэкап в директорию
/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 новых директорий, а более старые удаляет. Вопрос с ротацией бэкапов решён. Работает просто и наглядно. При желании можно добавить ещё одну команду, которая будет куда-нибудь во вне копировать эти файлы.
Получилось простое в настройке и вполне функциональное решение.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#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
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. При этом панель развивается и регулярно обновляется.
В общем случае ничего подобного на свои сервера я не ставлю, так как умею и привык настраивать в консоли. Но в каких-то отдельных случаях устанавливал и пользовался. Плюс, много раз видел её в использовании у других администраторов. Она хоть и не даёт гибкости в настройках, но всю базу с её помощью можно настроить через веб интерфейс, не заходя в консоль вообще.
Устанавливается просто:
После установки можно заходить браузером на 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 и как может использоваться. А так, там возможностей очень много.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#управление
В общем случае ничего подобного на свои сервера я не ставлю, так как умею и привык настраивать в консоли. Но в каких-то отдельных случаях устанавливал и пользовался. Плюс, много раз видел её в использовании у других администраторов. Она хоть и не даёт гибкости в настройках, но всю базу с её помощью можно настроить через веб интерфейс, не заходя в консоль вообще.
Устанавливается просто:
# 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 компаниями, которые иногда менялись, соответственно, видел много различных инфраструктур. А потом удалённо ещё больше. Какое-то время работал с разовыми заказами. Там вообще шёл поток различных проблем и задач. Это не считая того, что мне постоянно пишут. Буквально вчера услышал очередную историю, где живым оказался бэкап двухгодичной давности 🤷🏻♂️
В общем, с праздником. Всем профессионального роста, развития компетенций, поменьше бухать по пятницам и праздникам и надёжного тыла за спиной. Ура 🎉🎉🎉
Да, и спасибо, что читаете столько лет. Тост на картинке ниже актуален, как никогда.
#разное
Несмотря на трансформацию нашей профессии и появление ответвления в виде DevOps, куда передали множество практических компетенций сисадминов, сам я себя по прежнему считаю системным администратором, хотя навыками DevOps владею.
Если кто-то спрашивает меня или супругу, кем я работаю, отвечаю сам и советую жене говорить, что инженером. Люди при слове системный администратор представляют себе человека в офисе, который настраивает рабочие компьютеры, а вечером – домашние всем знакомым и родственникам. Я не делаю ни то, ни другое, поэтому чтобы никто не приставал с просьбами, отвечаю так. Если просят пояснить, что за инженер, то говорю, что инженер информационных систем и технологий. Получается, что и не сисадмин, и не программист. Никто починить домашний компьютер или посоветовать роутер не просит.
Раз сегодня наш профессиональный праздник, а здесь на канале в основном сисадмины, хотя и не только, сделаю несколько искренних пожеланий по этому поводу.
Помню, что когда уволился с постоянной работы в никуда, и не мог какое-то время найти новый доход, деньги кончались, а у меня ребёнок родился и жена в декрете, ходил по улице и постоянно повторял себе, что дорогу осилит идущий. Как мантры. В общем-то я с этим девизом так и живу. Если ты движешься, идёшь вперёд, то рано или поздно обязательно получится то, что задумал. Так вот, я желаю всем, кто это читает, не стоять на месте и всегда двигаться вперёд.
В общем, с праздником. Всем профессионального роста, развития компетенций, поменьше бухать по пятницам и праздникам и надёжного тыла за спиной. Ура 🎉🎉🎉
Да, и спасибо, что читаете столько лет. Тост на картинке ниже актуален, как никогда.
#разное
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
В этом вебинаре мы покажем, как выстраивать современный процесс 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.
Всех ещё раз с праздником.
#юмор #видео
Я записал некоторые понравившиеся видео с ютуба в переводе от Яндекса для вашего удобства. Пришлось немного заморочиться. Мне лично больше всего понравился ролик на тему ИИ. Он самый первый в списке.
Оригиналы можно увидеть на youtube.
Всех ещё раз с праздником.
#юмор #видео
👍77👎5
У меня для вас прикольная находка. Впервые узнал про интересный проект sadservers.com. Это сервис, где вам предлагают виртуалки со сломанными сервисами, которые надо починить. Есть бесплатный и платный тариф. Для поиграть в качестве развлечения и обучения хватит и бесплатного.
Я прошёл одно задание и это неожиданно были интересно. Для регистрации ничего не надо. Просто залогинился со своей учёткой от google. Открыл список заданий и решил выбрать что-то среднее. Я вроде неплохо знаю Nginx, поэтому решил с него начать.
Задание выглядит так:
◽️Scenario: "Cape Town": Borked Nginx
◽️Level: Medium
◽️Description: There's an Nginx web server installed and managed by systemd. Running curl -I 127.0.0.1:80 returns curl: (7) Failed to connect to localhost port 80: Connection refused , fix it so when you curl you get the default Nginx page.
◽️Test: curl -Is 127.0.0.1:80|head -1 returns HTTP/1.1 200 OK
◽️Time to Solve: 15 minutes.
◽️OS: Debian 11
◽️Root (sudo) Access: Yes
Вам дают на время полноценную виртуалку. По крайней мере внешне она выглядит так. Подключение к терминалу происходит прямо в браузере.
Зашёл и сразу замешкался. Я обычно не использую sudo, а тут всё только через него. Постоянно забывал написал. Нет
Первое, что сделал, проверил, слушает ли Nginx указанный порт:
Оказалось, что нет. Ну, думаю, что-то очень лёгкое задание. Запускаю Nginx:
Не стартует. Смотрю лог:
Там ошибка в конфиге
На выходе 500-я ошибка. Тут уже интереснее. Думал, на этом задание и закончится. Оказалось, что нет. Опять лезу в лог ошибок. Там знакомое:
Смотрю
Вроде хватает с запасом. Потом вспоминаю, что это параметры текущего пользователя, а Nginx под своим запущен. Смотрю, какие у него лимиты:
Там уже не помню вывод, но для open files было значение 10. Решил вопрос самым быстрым способом. У Nginx отдельный параметр прямо в конфиге есть для этой настройки:
Я его всегда в свои конфигурации добавляю. Перезапустил Nginx и проверка прошла успешно. Можно было лимит изменить в systemd юните, или в системном
В целом было интересно. Я даже немного понервничал, так как тикает таймер обратного отсчёта. Нужно уложиться в 15 минут. Не знал, что будет, если не уложиться. Думал, что на бесплатном тарифе могут не разрешить повторить задание, а предложат либо заплатить, либо ждать сутки.
Лично мне задание показалось простым, так как кумекать особо не надо. Смотрим сервис, смотрим, конфиг, смотрим логи. Думать над проблемой не пришлось.
Интересная тема, рекомендую попробовать. Есть похожий сервис от обучающей платформы KodeKloud. Я писал о нём и тоже проходил задания. Но тут мне показалось интереснее. Если кто-то будет проходить другие задания, то расскажите, интересно было или нет.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#обучение
Я прошёл одно задание и это неожиданно были интересно. Для регистрации ничего не надо. Просто залогинился со своей учёткой от google. Открыл список заданий и решил выбрать что-то среднее. Я вроде неплохо знаю Nginx, поэтому решил с него начать.
Задание выглядит так:
◽️Scenario: "Cape Town": Borked Nginx
◽️Level: Medium
◽️Description: There's an Nginx web server installed and managed by systemd. Running curl -I 127.0.0.1:80 returns curl: (7) Failed to connect to localhost port 80: Connection refused , fix it so when you curl you get the default Nginx page.
◽️Test: curl -Is 127.0.0.1:80|head -1 returns HTTP/1.1 200 OK
◽️Time to Solve: 15 minutes.
◽️OS: Debian 11
◽️Root (sudo) Access: Yes
Вам дают на время полноценную виртуалку. По крайней мере внешне она выглядит так. Подключение к терминалу происходит прямо в браузере.
Зашёл и сразу замешкался. Я обычно не использую sudo, а тут всё только через него. Постоянно забывал написал. Нет
mc
, без него навигация более долгая. Плюс, нет mcedit
, надо nano
использовать. Тоже непривычно, хоть и некритично. Короче, работать в незнакомом окружении неудобно.Первое, что сделал, проверил, слушает ли Nginx указанный порт:
# sudo ss -tulnp
Оказалось, что нет. Ну, думаю, что-то очень лёгкое задание. Запускаю Nginx:
# sudo systemctl start nginx
Не стартует. Смотрю лог:
# tail -n 10 /var/log/nginx/error.log
Там ошибка в конфиге
default.conf
. Почему-то первой строкой стоит точка с запятой. Думаю, что-то всё равно очень просто. Убираю первую строку, перезапускаю Nginx, делаю проверку:# curl -Is 127.0.0.1:80|head -1
На выходе 500-я ошибка. Тут уже интереснее. Думал, на этом задание и закончится. Оказалось, что нет. Опять лезу в лог ошибок. Там знакомое:
socketpair() failed (24: Too many open files)
Смотрю
ulimit -n
Вроде хватает с запасом. Потом вспоминаю, что это параметры текущего пользователя, а Nginx под своим запущен. Смотрю, какие у него лимиты:
# ps ax | grep nginx
850
# cat /proc/850/limits
Там уже не помню вывод, но для open files было значение 10. Решил вопрос самым быстрым способом. У Nginx отдельный параметр прямо в конфиге есть для этой настройки:
worker_rlimit_nofile 65536;
Я его всегда в свои конфигурации добавляю. Перезапустил Nginx и проверка прошла успешно. Можно было лимит изменить в systemd юните, или в системном
/etc/security/limits.conf
для пользователя nginx.В целом было интересно. Я даже немного понервничал, так как тикает таймер обратного отсчёта. Нужно уложиться в 15 минут. Не знал, что будет, если не уложиться. Думал, что на бесплатном тарифе могут не разрешить повторить задание, а предложат либо заплатить, либо ждать сутки.
Лично мне задание показалось простым, так как кумекать особо не надо. Смотрим сервис, смотрим, конфиг, смотрим логи. Думать над проблемой не пришлось.
Интересная тема, рекомендую попробовать. Есть похожий сервис от обучающей платформы KodeKloud. Я писал о нём и тоже проходил задания. Но тут мне показалось интереснее. Если кто-то будет проходить другие задания, то расскажите, интересно было или нет.
❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.
#обучение
4👍204👎4