ServerAdmin.ru
28.2K subscribers
248 photos
32 videos
10 files
2.58K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
🔝 ТОП постов за прошедший месяц. Все самые популярные публикации по месяцам можно почитать со соответствующему хэштэгу #топ. Отдельно можно посмотреть ТОП за прошлый год.

Пользуясь случаем, хочу попросить проголосовать за мой канал, так как это открывает некоторые дополнительные возможности по настройке: https://t.me/boost/srv_admin.

В очередной раз выстреливает статья по не IT тематике. Причём это происходит постоянно. Все подобные заметки вызывают большой отклик. Я иногда думаю, может я вообще не о том канал веду? Надо больше на общие темы писать? Мне в целом не трудно и есть о чём сказать, но не хочется тематику канала размывать.

📌 Больше всего пересылок:
◽️Шпаргалка по nmap (549)
◽️Pupirka для бэкапа Mikrotik (457)
◽️Бесплатный курс про сети в Linux (440)

📌 Больше всего комментариев:
◽️Заметка про мой распорядок дня (166)
◽️Сервис icq завершил свою работу (156)
◽️Видео про основные признаки линуксоидов (140)

📌 Больше всего реакций:
◽️Заметка про мой распорядок дня (409)
◽️Как происходит загрузка ОС Linux (194)
◽️Перезагрузка ОС Linux (172)

📌 Больше всего просмотров:
◽️Бесплатный курс про сети в Linux (11057)
◽️Видео про основные признаки линуксоидов (10582)
◽️Обновление Zabbix 7.0 (10445)

#топ
​​Существует известный проект Turnkey Linux, который предлагает готовые преднастроенные образы Linux для решения конкретных задач - файловый сервер, веб сервер, впн сервер и т.д.. Я уже ранее писал про него. Там нет чего-то особенного, что с одной стороны хорошо, а с другой вроде и не надо особо. В основном там используется стандартное open source ПО с веб управлением через webmin. Всё это можно и самому настроить при желании, но тут это уже сделали за вас.

Особо нигде не афишируется, что Turnkey Linux интегрируется с Proxmox. Можно использовать готовые шаблоны LXC контейнеров Turnkey Linux в Proxmox. Для того, чтобы они появились в веб интерфейсе гипервизора, в разделе CT Templates, необходимо в консоли гипервизора выполнить команду:

# pveam update
update successful

После этого заходите в локальное хранилище с Container template и смотрите список доступных шаблонов. Увидите 110 шаблонов turnkeylinux.

Для каких-то тестовых задач или временных виртуалок неплохое решение, так как контейнеры разворачиваются очень быстро и не требуют начальных настроек. В несколько кликов можно запустить контейнер с DokuWiki, Nextcloud, OpenLDAP, Snipe-IT, ownCloud и т.д. И посмотреть на них.

#proxmox
Медленно, но верно, я перестаю использовать netstat и привыкаю к ss. У неё хоть и не такой удобный для восприятия вывод, но цепляться за netstat уже не имеет смысла. Она давно устарела и не рекомендуется к использованию. Плюс, её нет в стандартных минимальных поставках дистрибутивов. Надо ставить отдельно. Это как с ifconfig. Поначалу упирался, но уже много лет использую только ip. Ifconfig вообще не запускаю. Даже ключи все забыл.

Самые популярные ключи к ss это tulnp:

# ss -tulnp

Список открытых tcp и udp портов. Может показаться смешным и нелепым, но чтобы запомнить эту комбинацию и не лазить в шпаргалки, я представил её написание как тулуп (tulnp). Он хоть и не совсем тулуп, но это помогло мне запомнить эти ключи и активно использовать. Такие ассоциативные якоря помогают запоминать многие вещи. Я постоянно их использую в жизни.

Из того, что ещё часто используется - просмотр открытых сокетов. Актуально, чтобы быстро глянуть, поднялся ли сокет php-fpm или mariadb:

# ss -l | grep .sock

Вывести только сокеты можно и другой командой:

# ss -ax

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

У ss есть одна неприятная особенность, из-за которой она не кажется такой удобной, как netstat. Возможно, это только для меня актуально. Если терминал не очень широкий, то вывод расползается и труден для визуального восприятия. Я не люблю широкие окна для ssh подключений, обычно это небольшое окон посередине экрана, перед глазами. В таком окне вывод netstat выглядит аккуратнее, чем ss. Чтобы посмотреть ss, приходится разворачивать терминал на весь экран.

По памяти я больше ничего из ss не помню. Ещё несколько команд сохранены в заметках, остальные вообще не использую.

Просмотр активных сетевых соединений:

# ss -ntu

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

# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | cut -d: -f1 | sort | uniq -c | sort -n| sed 's/^[ \t]*//'

То же самое, только выводим тех, у кого более 30 соединений с нами:

# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | cut -d: -f1 | sort | uniq -c | sort -n| sed 's/^[ \t]*//' | awk '{if ($1 > 30) print$2}'

Получаем чистый список IP адресов, который можно куда-то направить. Например, в fail2ban, ipset или nftables. Если вас донимают простым досом какие-то мамкины хакеры, можете таким простым способом от них избавиться. Все эти примеры заработают только на ipv4. Для ipv6 нужно будет изменения вносить. Я пока отключаю везде ipv6, не использую.

Количество активных сетевых соединений с сервером:

# ss -ntuH | awk '{print $6}' | grep -vE 127.0.0.1 | wc -l

Всё то же самое, что делали выше, можно сделать не только для активных соединений, но и всех остальных, добавив ключ a:

# ss -ntua

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

#linux #terminal
​​В пятницу в подборке видео я упоминал про обзор проекта changedetection.io. Хочу остановиться на нём отдельно, так как это очень крутой продукт. С его помощью можно отслеживать изменения на сайтах, используя практически полноценный браузер под капотом. Сразу приведу ссылку на видео с подробным обзором, описанием установки и настройки:

Meet ChangeDetection - A Self-Hosted Website Change Detector!

В принципе, там есть всё, чтобы сразу запустить и настроить сервис на своём сервисе. Для запуска надо склонировать репозиторий и запустить compose:

# git clone https://github.com/dgtlmoon/changedetection.io
# cd changedetection.io
# docker compose up -d

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

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

Как всё настроить, можно посмотреть в видео, но мне хватило и комментариев в docker-compose.yml. Раскомментировал некоторые строки и запустил всё заново. Зашёл в настройки, выбрал в разделе Fetching не Basic fast Plaintext/HTTP Client, а Playwright Chromium/Javascript. Русские сайты начали нормально парситься.

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

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

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

Сайт / Исходники / Обзор

#мониторинг
2️⃣ Под вашим управлением больше всего серверов какой операционной системы?
Anonymous Poll
34%
Windows 💻
63%
Linux 🐧
1%
*BSD 👹
2%
Другая
3️⃣ Если на серверах у вас ОС Linux, то в основном какой это дистрибутив?
Anonymous Poll
47%
Debian
43%
Ubuntu
18%
Форк RHEL (Rocky, Alma, Oracle и т.д.)
12%
Один из российских дистрибутивов
6%
Другое
Давно собираюсь сделать опросы в канале, но всё руки не доходили. Теперь дошли. Мне интересны несколько вопросов.

1️⃣ Какая основная операционная система установлена на вашем рабочем компьютере или ноутбуке?
Anonymous Poll
66%
Windows 💻
23%
Linux 🐧
10%
MacOS 🍏
0%
*BSD
1%
Другая
​​Раз за разом в комментариях вижу вопрос на тему того, где я веду свои заметки. Я ранее делал много публикаций на эту тему (тэг #заметки), где в том числе либо косвенно упоминал, либо прямо писал по этой теме. Но было это давненько. Надо обновить.

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

У Joplin на днях вышла новая ветка 3.0, так что приурочил эту заметку к обновлению. Для тех, кто с ним не знаком, нововведения будут не очень интересны, так что не буду перечислять. А кто знаком, может в анонсе почитать.

🟢 Какие плюсы для меня у Joplin:

🔹Работает полностью локально. База заметок импортируется в зашифрованном виде в Яндекс.Диск, откуда её можно подключить на любом другом устройстве.
🔹Markdown разметка. Привык к ней, в отличии от wiki. С wiki разметкой работать не люблю.
🔹Мне нравится интерфейс, распределение заметок по проектам. Почему-то не во всех подобных программах это есть.
🔹Полностью бесплатный и кроссплатформенный. У меня стоит ещё на смартфоне. Базу обновляю вручную через Яндекс.Диск. Со смартфона смотрю крайне редко. Работаю только с ноута.

🔴 Минусы Joplin:

🔹Тормозное приложение на каком-то современном браузерном фреймворке. Установщик весит под 300 Мб. Во время работы заметна неповоротливость, но в целом не критично. Плюс-минус как у другого подобного софта.
🔹Неудобная работа с таблицами, поэтому я их почти не использую.
🔹Не шифруется локальная база, с которой работает приложение. То, что я упоминал выше на Яндекс.Диске это именно экспорт, то есть копия рабочей базы. Выгруженные данные зашифрованы, а локальные нет. Это не очень хорошо, но я там не храню ничего особенного.
🔹Неудобный мобильный клиент для смартфона. Мне не сильно критично, но имейте ввиду.

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

Если будете подбирать себе подобную программу, вот список того, на что стоит обратить внимание:

▪️ Memos
▪️ Obsidian
▪️ Trilium Notes
▪️ Appflowy
▪️ Notea
▪️ CherryTree
▪️ MyTetra
▪️ Focalboard
▪️ Standard Notes
▪️ Nimbus Note
▪️ Notesnook

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

#заметки #подборка
​​Знаю, что среди моих читателей есть люди, которые ведут свои сайты, поэтому решил немного коснуться этой темы, так как у меня очень большой практический опыт по ней. Речь пойдёт про поисковые системы и системы аналитики от них.

Изначально хотел написать только про on-premise open source систему аналитики matomo, как альтернативу Google Analytics и Яндекс Метрики, но решил немного расширить тему и пояснить некоторые моменты.

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

Я лично наблюдал связь рекламы с ранжированием. Когда стояла реклама от Google, у меня доля трафика от этого поисковика была выше, чем от Яндекса. Как только поменял рекламу, пропорция изменилась в обратную сторону. Хотя сам сайт я не менял при этом. Такое поведение поисковиков логично. Они же зарабатывают с рекламы. Им выгодно поднимать в выдаче выше те сайты, которые крутят их рекламу.

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

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

А теперь, собственно, к Matomo. Это бесплатная версия бывшего Piwik, который теперь стал Piwik PRO и бесплатной версии не имеет. Если ваш сайт не зависит от притока посетителей из поисковых систем, то можно смело ставить собственную аналитику. Это облегчит сайт, увеличит скорость загрузки и уменьшит TTFB (Time to First Byte). Для пользователей сайт будет более комфортный в использовании.

Matomo представляет из себя обычное веб приложение на php. Разворачивается на любом хостинге, ставится код счётчика на сайт и просматривается аналитика через админку. Инструкция по установке есть на сайте. Достаточно просто положить исходники в директорию веб сервера и запустить скрипт установки. Это может быть любой сервер, не обязательно тот же, где развёрнут сайт.

У Matomo есть готовые интеграции со всеми популярными CMS и прочими онлайн движками. Поддерживается почти всё более-менее популярное. Можете аналитику воткнуть даже на свою веб почту roundcube. Полный список интеграций в отдельном разделе на сайте. Помимо сбора информации через встраиваемый код непосредственно на сайте, можно собирать данные только через логи веб сервера.

Среди бесплатных аналогов подобного продукта отмечу:

PostHog - очень навороченная аналитика на базе caddy, clickhouse, kafka, zookeeper, postgres, redis, minio. Там всё по-взрослому: запись сессий, отслеживание конверсий, A/B тестирование и т.д. Это для крупных проектов, которые не хотят отдавать свою информацию куда-то на сторону.

Umami - маленькая лёгкая аналитика без особых наворотов. Собирает только основные метрики о посетителях: просмотры, посещения, источники, utm метки и некоторые другие данные.

Matomo получается посередине между ними. Возможностей меньше чем у PostHog, но больше, чем у Umami.

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

#website
Вчера несколько часов провозился с очень простой задачей, которая неожиданно доставила много хлопот. У меня есть два бесплатных сервера Microsoft Hyper-V Server 2016 и 2019. Решил немного перераспределить на них виртуалки, перенеся парочку с 2016 на 2019.

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

Виртуалка второго поколения с Windows благополучно переехала и запустилась. А вот с Debian 12 возникли неожиданные проблемы. Копирую диск, создаю новую виртуалку, подключаю к ней диск. Машина не стартует, не видит efi раздел. А это странно, так как раздел реально есть, с ним всё в порядке. К тому же винда благополучно переехала. На старом гипервизоре всё работает. Переезд с 2016 на 2019 полностью поддерживается. Это в обратную сторону могут быть проблемы, а с более старой версии на новую проблем быть не должно.

Тут я уже начал закапываться. Стал проверять версии виртуальных машин, менять их, пробовать разные поколения, создавать новые виртуалки с efi разделом и подсовывать им старый диск. Ничего не помогало. Уже понял, что предстоит длинная ночь, так как я не смогу спокойно уснуть, пока не разберусь, в чём проблема. Задача простая, проблем быть не должно.

Решил зайти с другого пути. Делаю штатно экспорт виртуальной машины, переношу на другой сервер, там запускаю импорт. Не работает. Импорт не видит виртуальную машину, говорит, что в директории ничего нет, хотя там всё лежит. С правами всё ОК, файлы читаются. Делаю ход конём. Экспортирую эту машину и пытаюсь сделать импорт на этом же гипервизоре. Это 100% должно работать. Но не работает. Импорт тоже не видит виртуальную машину в директории.

Тут я уже начинаю понимать, что у меня происходит какая-то локальная фигня и поиск мне тут не поможет. Иду в Veeam, делаю восстановление оттуда. Он обычно пишет ошибки совместимости, если перенос невозможен. Ошибок нет, восстановление идёт. Значит совместимость есть. Хранилище Veeam далековато, поэтому восстановление через него долгое, хочу всё же сделать напрямую и разобраться, в чём проблема.

Для управления гипервизорами Hyper-V я привык использовать стандартную оснастку Windows. Выделяю для задач администрирования отдельную виртуалку и туда в консоль подключаю все гипервизоры, чтобы удобно было управлять из одного места. Решил попробовать сделать Экспорт/Импорт через Windows Admin Center, который работает в браузере. Обычно я им не пользуюсь, так как там всё очень тормозит. Времени уходит раз в 5 больше, чем то же самое сделать в оснастке.

И о чудо, в Админ Центре экспорт и импорт прошёл без ошибок, виртуалка запустилась на новом месте, никаких проблем с efi разделом не возникло. Заработало всё сразу же.

Похоже на какой-то то ли локальный, то ли общий баг управления через оснастку, который проявился в таком неожиданном месте. Я даже не знаю, с чем это может быть связано. При подключении диска к виртуальной машине Linux 2-го поколения, созданной через оснастку управления Hyper-V, не видится во время загрузки efi раздел. Соответственно, система не загружается. С Windows машинами таких проблем нет. Как и нет проблем с переносом виртуалок Linux 1-го поколения без efi раздела.

Такая вот история вышла, которая вряд ли для кого-то ещё будет актуальна. Новых версий бесплатного Hyper-V больше не будет, так что пользоваться им большого смысла нет. Бесплатная связка Proxmox VE + PBS полностью закрывает вопросы виртуализации для малого и среднего бизнеса за 0 рублей. По Hyper-V буду скучать только в контексте использования в связке с Veeam. Это было удобно.

#hyperv
​​Недавно к одной заметке про мониторинг содержимого сайта в комментариях скинули ссылку на обсуждение в stackoverflow тему парсинга HTML с помощью RegEx. Я сначала начал читать, не понял, в чём тут соль. Какая-то 14-ти летняя публикация, где не совсем понятно, о чём идёт речь. Потом немного вник в текст и прифигел от содержимого. Я так понял, это обсуждение заморозили и оставили на память потомкам в неизменном виде. Решил перевести сообщение и поделиться с вами.

https://stackoverflow.com/questions/1732348/

Вы не сможете парсить [X]HTML с помощью regex. Это не подходящий инструмент для подобного парсинга. Regex не сможет нормально распарсить HTML. Я уже неоднократно отвечал на вопросы по HTML и регулярным выражениям, использование регулярных выражений не позволит вам обрабатывать HTML. Регулярные выражения - это инструмент, который недостаточно гибок для распознавания конструкций, используемых в HTML. HTML не является обычным языком и, следовательно, не может быть проанализирован с помощью регулярных выражений. Регулярки не предназначены для извлечения значений из HTML. Даже усовершенствованные регулярные выражения, используемые в Perl, не справляются с задачей синтаксического анализа HTML. Вы никогда не убедите меня в обратном. HTML - язык настолько сложный, что его невозможно разобрать с помощью регулярных выражений. Даже Джон Скит не может разобрать HTML с помощью регулярных выражений. Каждый раз, когда вы пытаетесь разобрать HTML с помощью регулярных выражений, нечестивое дитя проливает кровь девственниц, а русские хакеры взламывают ваше веб-приложение. Разбор HTML с помощью регулярных выражений вызывает нечестивые души в мир живых. HTML и regex сочетаются так же, как любовь, брак и ритуальное детоубийство. <center> не может удержаться, уже слишком поздно. Сочетание регулярных выражений и HTML в одном концептуальном пространстве разрушит ваш разум, как жидкая шпатлёвка. Если вы парсите HTML с помощью регулярных выражений, вы поддаетесь Им и их богохульным способам, которые обрекают всех нас на нечеловеческий труд, ибо Тот, чье Имя невозможно выразить на Базовом многоязычном уровне, приходит. HTML-plus-regexp разрушает нервы любого живого существа. Пока вы будете наблюдать за этим, ваша психика будет изнемогать под натиском ужаса. HTML-анализаторы на основе регулярных выражений - это раковая опухоль, которая убивает StackOverflow, уже слишком поздно, слишком поздно, нас не спасти, проступок неразумного гарантирует, что регулярное выражение поглотит всю живую материю (за исключением HTML, который ему не под силу, как было сказано ранее) дорогой Господь, помоги нам, как можно пережить это бедствие, тот, кто использует регулярные выражение для парсинга HTML обрек человечество на вечность ужасных пыток и дыр в системе безопасности, использование regex в качестве инструмента для обработки HTML создает брешь между этим миром и ужасным царством повреждённых данных (таких как записи SGML, но еще более испорченные) простой взгляд на мир анализаторов регулярных выражений для HTML мгновенно перенесет сознание программиста в мир непрекращающихся криков: "он приходит", "зараза опасных регулярных выражений" поглотит ваш HTML-парсер, приложение и само существование навсегда, как Visual Basic, только хуже, он приходит, он приходит, не сопротивляйся, он приходит, его нечестивое сияние разрушает всё просветление, HTML-теги текут из твоих глаз, как жидкая боль., песня регулярных выражений для парсинга будет гасить голоса смертного человека из сферы, я вижу это, ты видишь это,î̩́t̲͎̩̱͔́̋̀ it is beautiful t​ he final snuffing of the lie​s of Man ALL IS LOŚ͖̩͇̗̪̏̈́T ALL I​S LOST the pon̷y he comes he c̶̮omes he comes the ich​or permeates all MY FACE MY FACE ᵒh god no NO NOO̼O​O NΘ stop the an​*̶͑̾̾​̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑ n​ot rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TeO͇̹̺ͅƝ̴ȳ TH̘Ë͖́̉ ͠P̯͍̭O̚​N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝эS̨̥̫͎̭ͯ̔̀ͅ

Конец уже не стал переводить 😁

#юмор
​​🎓 Давно ничего не было на тему обучения. Я раньше старался об этом писать по выходным. Все хорошие полезные обучающие материалы я уже обозревал ранее. Для тех, кто пропустил, рекомендую мою подборку, где собрал в единый список известные мне бесплатные курсы и материалы, которые можно посоветовать для базового изучения тем, кто хочет начать движение в сторону системного администрирования Linux и DevOps от простого к сложному.

Это была одна из самых популярных публикаций за прошлый год:
💥 https://t.me/srv_admin/3345

Недавно один подписчик поделился полезной ссылкой, с которой я не знаком:

Learn the ways of Linux-fu, for free

Это серия хорошо оформленных и структурированных курсов по основам Linux в виде уроков с заданиями, ответы на которые проверяются автоматически. Исходный язык курсов - английский. На сайте заявлен и русский, но там перевод автоматический. Выглядит ужасно, так что не стоит внимания.

В уроках разобраны базовые темы:

Командная строка
Обработка текста
Управление пользователями и правами
Управление процессами
Управление пакетами
Различные устройства в Linux
Загрузка системы
Файловые системы
Ядро Linux
Логирование
Различные уроки по сетям
и .т.д

В общем, там база. Интересно будет только тем, кто осваивает Linux. Там навигация удобная. Если что, можно быстро подсмотреть какую-то тему.

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

А ещё мне очень интересно. Кто-нибудь проходит бесплатные курсы? Публикации с ними всегда получают очень много сохранений и репостов. Как-будто все прям хотят или имеют потребность в учёбе. А на практике это кто-нибудь делает? Я вот честно скажу, из бесплатного почти ничего не проходил системно. На Stepik что-то начинал, но полностью не помню, чтобы прошёл. Исключение - бесплатный курс про Python. Собрался и осилил его полностью. Он даже с онлайн лекциями был. Какого-то простого бота написал, но всё забросил и в итоге не пригодилось. Хотя пайтоновский код нормально читаю и могу что-то править. Но это я и без курса мог.

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

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

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

Я использовал утилиту pv:

# apt install pv
# mysqldump --opt -v --single-transaction --databases db01 | pv -L 20m > /mnt/backup/db01.sql

Ограничил скорость записи в 20 MiB/s через ключ -L. Для того, чтобы посмотреть текущую скорость записи, используйте pv без ограничения:

# mysqldump --opt -v --single-transaction --databases db01 | pv > /mnt/backup/db01.sql
............................
 1319MiB 0:00:06 [ 205MiB/s]

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

#linux #terminal
​​Я тут такой классный сервис увидел в полезных ссылках одного сайта:

https://distrosea.com

Даже удивился, как это я про него раньше не слышал. Поискал по своему каналу и чату и увидел, что его ещё в ноябре кто-то посоветовал.

На этом сайте можно прямо в браузере протестировать различные версии операционных систем Linux и некоторые *BSD. Причём системы доступны с различными графическими оболочками. Можно в браузере быстро посмотреть, что тебе больше нравится.

Выбор дистрибутивов и оболочек очень большой. Пример для Fedora можно увидеть на прикреплённой картинке. Системы все без доступа в интернет. Я первым делом проверил это. Думаю, было бы круто, если бы там ещё и сёрфить в интернете можно было бы на них. Но нет. Запущены они, если я правильно понял, с LiveCD, физических дисков у них тоже нет.

#полезное
​​Я недавно написал 2 публикации на тему настройки мониторинга на базе Prometheus (1, 2). Они получились чуток недоделанными, потому что некоторые вещи всё же приходилось делать руками - добавлять Datasource и шаблоны. Решил это исправить, чтобы в полной мере раскрыть принцип IaC (инфраструктура как код). Плюс, для полноты картины, добавил туда в связку ещё и blackbox-exporter для мониторинга за сайтами. В итоге в пару кликов можно развернуть полноценный мониторинг с примерами стандартных конфигураций, дашбордов, оповещений.

Для того, чтобы более ясно представлять о чём тут пойдёт речь, лучше прочитать две первых публикации, на которые я дал ссылки. Я подготовил docker-compose и набор других необходимых файлов, чтобы автоматически развернуть базовый мониторинг на базе Prometheus, Node-exporter, Blackbox-exporter, Alert Manager и Grafana.

По просьбам трудящихся залил всё в Git репозиторий. Клонируем к себе и разбираемся:

# git clone https://gitflic.ru/project/serveradmin/prometheus.git
# cd prometheus

Что есть что:
▪️ docker-compose.yml - основной compose файл, где описаны все контейнеры.
▪️ prometheus.yml - настройки prometheus, где для примера показаны задачи мониторинга локального хоста, удалённого хоста с node-exporter, сайтов через blackbox.
▪️ blackbox.yml - настройки для blackbox, для примера взял только проверку кодов ответа веб сервера.
▪️ alertmanager.yml - настройки оповещений, для примера настроил smtp и telegram
▪️ alert.rules - правила оповещений для alertmanager, для примера настроил 3 правила - недоступность хоста, перегрузка по CPU, недоступность сайта.
▪️ grafana\provisioning\datasources\prometheus.yml - автоматическая настройка datasource в виде локального prometheus, чтобы не ходить, руками не добавлять.
▪️ grafana\provisioning\dashboards - автоматическое добавление трёх дашбордов: один для node-exporter, два других для blackbox.

Скопировали репозиторий, пробежались по настройкам, что-то изменили под свои потребности. Запускаем:

# docker compose up -d

Идём на порт сервера 3000 и заходим в Grafana. Учётка стандартная - admin / admin. Видим там уже 3 настроенных дашборда. На порту 9090 живёт сам Prometheus, тоже можно зайти, посмотреть.

Вот ссылки на шаблоны, которые я добавил. Можете посмотреть картинки, как это будет выглядеть. У Blackbox информативные дашборды. Уже только для них можно использовать эту связку, так как всё уже сделано за вас. Вам нужно будет только список сайтов заполнить в prometheus.yml.

⇨ Blackbox Exporter (HTTP prober)
⇨ Prometheus Blackbox Exporter
⇨ Node Exporter Full

Для того, чтобы автоматически доставлять все изменения в настройках на сервер мониторинга, можно воспользоваться моей инструкцией на примере gatus и gitlab-ci. Точно таким же подходом вы можете накатывать и изменения в этот мониторинг.

Мне изначально казалось, что подобных примеров уже много. Но когда стало нужно, не нашёл чего-то готового, чтобы меня устроило. В итоге сам набросал вот такой проект. Сделал в том числе и для себя, чтобы всё в одном месте было для быстрого развёртывания. Каждая отдельная настройка, будь то prometheus, alertmanager, blackbox хорошо гуглятся. Либо можно сразу в документацию идти, там всё подробно описано. Не стал сюда ссылки добавлять, чтобы не перегружать.

❗️Будьте аккуратны при работе с Prometheus и ему подобными, где всё состояние инфраструктуры описывается только кодом. После него будет трудно возвращаться к настройке и управлению Zabbix. Давно это ощущаю на себе. Хоть у них и сильно разные возможности, но IaC подкупает.

#prometheus #devops #мониторинг
prometheus+grafana+alertmanager+blackbox.zip
36.8 KB
Для того, чтобы публикация не зависела от внешних сервисов, прикрепляю все файлы от заметки выше сюда.
Вчера вскользь упомянул утилиту pv, хотя она вполне заслуживает отдельного рассказа. Знаю её очень давно, но использую не часто. Конкретно в задаче по ограничению скорости записи дампа на диск она очень выручила. Других простых способов я не нашёл, да и никто не предложил ничего лучше.

PV это аббревиатура от pipeviewer. То есть это инструмент для работы с пайпами. Обычно есть в репозиториях всех популярных дистрибутивов:

# apt install pv
# dnf install pv

Чаще всего pv упоминают в контексте прогресс бара при работе с файлами и каталогами. Например, при копировании, перемещении, сжатии. Так как размер файлов заранее известен, а так же видна скорость обработки файлов, pv может предсказать, сколько процесс продлится и когда закончится. Примерно так:

# pv testfile > copy/testfile_copy
 976MiB 0:00:02 [ 344MiB/s] [=======================>] 100

Размер файла, который копировали, известен, скорость тоже, так что прогресс бар нормально отработал.

То же самое для сжатия:

# pv testfile | gzip > testfile.gz
 976MiB 0:00:05 [ 183MiB/s] [=======================>] 100

При этом pv может притормозить этот процесс, если у вас есть в этом потребность. Это очень полезная и практически уникальная возможность. Копируем файл с заданной скоростью:

# pv -L 50m testfile > copy/testfile_copy
 976MiB 0:00:19 [49.9MiB/s] [=======================>] 100

Ограничили скорость записи в 50 Мб в секунду (на самом деле мебибайт, но не суть важно, и зачем только придумали эту путаницу). Подобным образом можно ограничивать скорость любого пайпа.

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

# tar -czf - usr | pv -s $(du -sb /usr | grep -o '[0-9]*') > /tmp/usr.tgz
 126MiB 0:00:16 [9.46MiB/s] [==>                  ] 5% ETA 0:04:18

Наглядно виден процесс сжатия, сколько времени осталось. Мы по сути просто определили размер каталога usr через du и передали этот размер в pv через ключ -s. Можно и напрямую передать туда размер, если он известен. На самом деле со сжатием этот пример практически бесполезен, так как скорость сжатия всегда разная, в зависимости от того, какие файлы сжимаются.

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

# pv -EE /dev/sda > disk-image.img

Можно его притормозить, при желании, чтобы не утилизировать всю запись диска:

# pv -L 50m -EE /dev/sda > disk-image.img

Можно измерить скорость выполнения дампа СУБД:

# mysqldump --opt -v --databases db01 | pv > db01.sql

🔥 С помощью pv можно посмотреть за работой всех файловых дескрипторов, открытых процессов. Причём не просто список увидеть, но и скорость обработки данных в них:

# pv -d 1404
  3:/prometheus/queries.active: 0.00 B 0:01:40 [0.00 B/s]
  8:/prometheus/lock: 0.00 B 0:01:40 [0.00 B/s]
  9:/prometheus/wal/00000000: 10.9MiB 0:01:40 [4.28KiB/s]
 14:/prometheus/chunks_head/000001: 8.00 B 0:01:40 [0.00 B/s]
 16:/prometheus/chunks_head/000001: 0.00 B 0:01:40 [0.00 B/s]

С помощью pv легко ограничивать скорость передачи данных по сети, если направить их через pipe:

# pv -L 10m /tmp/testfile | ssh user@server02 'cat > /tmp/testfile'

Пример синтетический, так как копировать удобнее через rsync, так как там можно штатно указать ограничение на использование канала. Другое дело, что лично я эти ключи rsync наизусть не помню, надо смотреть. А ключ -L (limit) для pv помню.

Можно и просто скорость по ssh между двух серверов проверить:

# pv /dev/zero | ssh user@server02 'cat > /dev/null'

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

#linux #terminal
​​Пару недель назад по новостям проскочила информация об операционной системе Windows 11 Enterprise G. Я мельком прочитал, не вдаваясь в подробности, но заинтересовался. И только вчера нашёл время, чтобы во всём разобраться, проверить, в том числе как сделать самостоятельно образ. В итоге всё сделал, развернул у себя и потестировал. Сразу скажу, что это винда здорового человека, которая полностью рабочая, официальная, без твиков и изменений, и при этом в ней ничего лишнего. Расскажу обо всём по порядку.

В основе моего рассказа будет информация из статьи на хабре:

Windows 11 Enterprise G – Что за издание для правительства Китая и зачем оно вам?

 📌 Основные особенности систем Windows 10 и Windows 11 Enterprise G:

🔹Выпускаются для китайского госсектора, удовлетворяя всем требованием китайского регулятора.
🔹Из этой версии вырезаны телеметрия, защитник, кортана, магазин, UWP приложения, браузер edge и многое другое.
🔹Доступна только на китайском и английском языках, но есть возможность обходным путём добавить русский.
🔹Система основана на редакции Professional. Подготовить образ Enterprise G можно самостоятельно на основе предоставляемых Microsoft инструментов, в частности ProductPolicy.
🔹Система нормально эксплуатируется, обновляется. То есть она полноценная, просто без лишнего софта, который не имеет отношения непосредственно к ОС.

Благодаря тому, что в системе нет практически ничего лишнего, она потребляет меньше оперативной памяти, меньше нагружает диск. Возможно и на HDD нормально заработает. После чистой установки занимает 8Гб на диске. После установки всех обновлений - 10,7Гб. Это я очистку не запускал. Просто всё обновил через параметры и посмотрел занимаемый объём.

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

У меня получилось собрать модифицированный install.wim по инструкции автора. Она рабочая, если ничего не напутать. Проблема в том, что оригинальная версия требует Secure Boot и TPM. Это тоже можно решить в своём образе, но мне в итоге надоело этим заниматься. Для теста я взял готовую сборку от автора статьи, где всё это уже решено. Она лежит на каком-то иностранном файлообменнике (❗️использовать на свой страх и риск):

https://mega.nz/folder/Id50xJBQ#JvuG3GOi0yoWyAV5JFD1gw

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

Система очень понравилась. Представьте, что это что-то вроде WinXP, где нет ничего лишнего, только это Win11. В разделе приложений пустота, нет даже браузера. Никаких ножниц, пейнтов и т.д. Всё это можно вручную поставить, если надо будет.

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

Редакцию Enterprise G можно сделать для архитектуры x86. На текущий момент это будет идеальная современная система для старого железа. Если верить тестам автора статьи, то эта версия потребляет после 15 минут работы 702 МБ оперативной памяти.

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

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

#windows
Регулярно приходится настраивать NFS сервер для различных прикладных задач. Причём в основном не на постоянное использование, а временное. На практике именно по nfs достигается максимальная скорость копирования, быстрее чем по scp, ssh, smb или http.

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

Обычно всё хранение файлов под различные нужды делаю в разделе /mnt:

# mkdir /mnt/nfs
# chown nobody:nogroup /mnt/nfs

Устанавливаем пакет для nfs-server:

# apt install nfs-kernel-server

Добавляем в файл /etc/exports описание экспортируемой файловой системы только для ip адреса 10.20.1.56:

/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)

Для всей подсети просто добавляем маску:

/mnt/nfs 10.20.1.56/24(rw,all_squash,no_subtree_check,crossmnt)

Для нескольких IP адресов пишем их каждый в своей строке (так нагляднее, но можно и в одну писать):

/mnt/nfs 10.20.1.56(rw,all_squash,no_subtree_check,crossmnt)
/mnt/nfs 10.20.1.52(rw,all_squash,no_subtree_check,crossmnt)

Перезапускаем сервер

# systemctl restart nfs-server

Проверяем работу:

# systemctl status nfs-server

Для работы NFS сервера должен быть открыт TCP порт 2049. Если всё ок, переходим на клиент. Ставим туда необходимый пакет:

# apt install nfs-common

Проверяем, видит ли клиент что-то на сервере:

# showmount -e 10.20.1.36
Export list for 10.20.1.36:
/mnt/nfs 10.20.1.56

Всё в порядке, видим ресурс для нас. Монтируем его к себе:

# mkdir /mnt/nfs
# mount 10.20.1.36:/mnt/nfs /mnt/nfs

Проверяем:

# df -h | grep nfs
10.20.1.36:/mnt/nfs         48G 3.2G  43G  7% /mnt/nfs

Смотрим версию протокола. Желательно, чтобы работало по v4:

# mount -t nfs4
10.20.1.36:/ on /mnt/nfs type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.20.1.56,local_lock=none,addr=10.20.1.36)

Создаём файл:

# echo "test" > /mnt/nfs/testfile

При желании можно в fstab добавить на постоянку:

10.20.1.36:/mnt/nfs /mnt/nfs nfs4 defaults 0 0

Не забудьте в конце поставить переход на новую строку. Либо подключайте через systemd unit. В моей заметке есть пример с NFS.

Похожие короткие инструкции для настройки SMB сервера:
на базе python
на базе ядерного ksmbd

#fileserver #nfs
​​На прошлой неделе делал опросы тут в канале и в группе VK. Сейчас, когда эти опросы собрали основную массу просмотров, можно подвести итоги. В целом, получилось плюс-минус как я и ожидал. В рабочих машинах больше винды, на серверах больше линукса. Единственное, думал, что доля линукса на рабочих машинах будет поменьше. На деле довольно много людей постоянно работают за Linux.

📌 Результаты в Telegram:

1️⃣ Какая основная операционная система установлена на вашем рабочем компьютере или ноутбуке?

🔴 66% - Windows
23% - Linux
10% - MacOS
1% - всё остальное

2️⃣ Под вашим управлением больше всего серверов какой операционной системы?

🔴 63% - Linux
34% - Windows
1% - *BSD

3️⃣ Если на серверах у вас ОС Linux, то в основном какой это дистрибутив? (можно было выбрать несколько вариантов)

🔴 47% - Debian
43% - Ubuntu
17% - Форк RHEL (Rocky, Alma, Oracle и т.д.)
12% - один из российских дистрибутивов
5% - другое

📌 Результаты в VK:

1️⃣ Какая основная операционная система установлена на вашем рабочем компьютере или ноутбуке?

🔴 69% - Windows
23% - Linux
6% - MacOS
1% - всё остальное

2️⃣ Под вашим управлением больше всего серверов какой операционной системы?

🔴 56% - Linux
40% - Windows
4% - другая

3️⃣ Если на серверах у вас ОС Linux, то в основном какой это дистрибутив?

🔴 36% - Ubuntu
34% - Debian
8% - Форк RHEL (Rocky, Alma, Oracle и т.д.)
13% - один из российских дистрибутивов
8% - другое

Результаты в TG и VK немного отличаются, но не кардинально. Для меня было немного странно видеть так много серверов под Ubuntu. То, что Debian будет в лидерах, предполагал. Я уже думал об этом, ещё когда объявили об изменениях с CentOS. Сейчас ожидал, что лидером будет Debian, а Ubuntu будет плюс минус как и форков RHEL. Но последние совсем потеряли позиции, судя по результатам. Не ожидал, что так сильно.

Довольно высокая доля отечественных дистрибутивов. Думал, будет в районе 5%, вышло 12% и 13%, что уже значительно. В итоге в серверах на базе Linux в России сейчас очень большой зоопарк. Если вы только начинаете всё это изучать, то выбирайте себе Debian. Это будет наиболее универсальным вариантом на сегодняшний день.

Постарался, как мог, усреднить и объединить результаты опросов в обоих сообществах. В VK нельзя было выбрать несколько ответов, а в TG в последнем опросе можно было. Это немного смазало картинку и итоговый результат третьего вопроса.

#разное