ServerAdmin.ru
28.7K subscribers
281 photos
34 videos
13 files
2.61K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Хочу дать рекомендацию тем, кто будет выбирать себе рюкзак. Я считай со школы всегда хожу с рюкзаками. И на работу чаще всего с рюкзаками ходил, кроме периода, когда на машине ездил, брал сумку.

Где-то лет 9-10 назад я купил себе большой ноут с экраном 17 дюймов и внешней видюхой. Носить его в обычном рюкзаке, который у меня тогда был, стало неудобно, поэтому решил купить что-то побольше. А так как ноут тяжёлый, взял рюкзак с разгрузкой на груди и поясе. С тех пор так с ним и хожу, потому что он очень удобный и отличного качества. А ноут быстро продал, не понравился.

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

Всё, что у меня было до него, было значительно хуже. Это прям отличная вещь, которой приятно пользоваться. Люблю такие вещи, которые однозначно хорошего качества. На днях по старой памяти купил дочке в начальную школу очередной ноут Thinkpad x220 домашку смотреть в МЭШ и понемногу привыкать к компу. Нравится эта модель. Дома 2 штуки. Один сломался, купил на замену. Для маленьких детей и учёбы хороший вариант.

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

Пакет с кучей флешек, которыми почти не пользуюсь. Одна может понадобится раз в 2-3 месяца что-то перекинуть родителям.
Пачка карточек доступа во всякие офисы и офисные центры.
Наушники беспроводные и проводные на всякий случай.
Зарядка для смартфона. Нужна в основном для дачи.
Короткий и тоненький патчкорд. На вид удобный, но не припоминаю, чтобы хоть раз им воспользовался. Ношу просто так на всякий случай.
Внешний жёсткий диск. Нужен очень редко. В основном для мультиков детей на даче. Для каких-то других дел не помню, когда использовал последний раз. Всё как-то в онлайн перешло.
Фонарик. Нашлась пропажа. Лежал в боковом отделе, забыл про него. На днях дома искал, не смог найти. Думал, дети утащили.
Два токена, один с ЭЦП, второй с лицензией 1С.
2 отвёртки. Пользуюсь постоянно. Чаще всего, чтобы батарейки менять в детских игрушках и пультах. Храню в рюкзаке, чтобы под рукой всегда были.
Разные провода, переходники, даже коннектор один нашёлся.
2 резиновые подставки под ноут, чтобы он немного под углом стоял. Простая и удобная штука, рекомендую. Мне больше нравится, когда ноут немного наклонён. Печатать удобнее.
Ноут, зарядка для него, мышка, коврик для мышки. Это на столе сейчас.

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

#разное #совет
​​Среди веб панелей для управления хостинга есть популярное бесплатное решение - Hestiacp. Давно его знаю, но всё как-то забывал написать. А вспомнил, потому что за последнее время пару человек написали с разными проблемами с готовыми панелями. Просили помощь в решении возникших проблем. Отсюда сразу дам совет - если можете обойтись без панели, то обойдитесь. Используйте только там, где это реально нужно. Да, эти панели упрощают управление, но добавляют некоторые другие проблемы в обслуживании. Иногда неразрешимые. В целом стабильность системы будет ниже, чем без панели.

Возвращаюсь к Hestiacp. На текущий день это одно из лучших бесплатных решений. У многих хостеров можно сразу взять виртуалку с предустановленной панелью. Если я не ошибаюсь, то Hestiacp это форк другой популярной панели VestaCP, которая на текущий момент уже не развивается и не поддерживается, а Hestiacp сильно от неё отличается, так как с момента форка прошло 4 года.

Возможности у Hestiacp плюс-минус такие же как у всех представителей этого класса ПО. Перечислю основные:

▪️ Классический веб сервер для PHP на базе Nginx или Apache c СУБД MySQL или PostgreSQL.
▪️ DNS сервер на базе Bind.
▪️ Почтовый сервер на базе традиционного стека Exim, Dovecot, ClamAV, SpamAssassin, Roundcube.
▪️ Набор соответствующих обвязок в виде Let's Encrypt, Iptables, Fail2ban, Vsftpd и т.д.

Сделано всё без каких-то изысков на базе стандартного open source ПО. Благодаря этому, если вы разбираетесь в этом ПО, то управление для вас не будет представлять тыкание через веб интерфейс в чёрный ящик. Если что, сможете что-то поправить и мимо панели. Все конфиги на своих стандартных местах - /etc/nginx, /etc/php и т.д.. Какие-то вынесены в отдельный каталог панели (/home/admin/conf), но всё равно в системе оставлены символьные ссылки в стандартных местах.

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

Разработчики поддерживают автоматическую установку только на deb сервера - Ubuntu, Debian, так что использовать рекомендуется что-то из них. Тогда установка пройдёт автоматически с помощью готового скрипта:

# wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
# bash hst-install.sh

Установщик задаст несколько простых вопросов, перечислит все компоненты, которые будут установлены и установит непосредственно панель управления. Процесс будет длиться минут 10. После этого можно идти в веб интерфейс по адресу, который увидите в консоли - https://330767.simplecloud.ru:8083 (у вас будет другой домен), учётка будет написана там же.

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

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

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

#hosting_panel
Dovecot - наиболее популярный imap сервер, который используется в почтовых серверах на базе open source ПО. Остальные значительно уступают ему в популярности, и я даже не уверен, что их кто-то ещё использует. К примеру, лет 15 назад я настраивал Courier-IMAP. Со временем перешёл на Dovecot, потому что он более популярен.

Так вот, если вы эксплуатируете этот imap сервер, то можно использовать его встроенные возможности для очистки почтовых ящиков или папок в них. В первую очередь это касается папок Trash и Junk (Spam). Для этого можно использовать простую команду:

# doveadm expunge -u user@example.com mailbox Trash savedbefore 4w

Она удалит все письма в ящике user@example.com в папке Trash старше 4-х недель. Соответственно, так можно очищать любой ящик.

Условие может быть составным. Например, очистим все прочитанные сообщения в папке Spam старше 24 часов:

# doveadm expunge -u user@example.com mailbox 'Junk' SEEN not SINCE 24h

Можно делать глобальные чистки сразу для всех ящиков (❗️будьте аккуратны с подобными командами). Например, удалим всю почту старше трёх лет:

# doveadm expunge -A mailbox % before 156w

Синтаксис запросов doveadm описан в документации dovecot.

Благодаря тому, что Dovecot, как я уже сказал, используется почти во всех бесплатных сборках почтовых серверов, вы можете использовать эти возможности и там. Например, в iredmail, mailcow и т.д.

Когда я не знал про эти возможности Dovecot, использовал свои костыли на основе find. Так как письма в формате maildir - это по сути обычные текстовые файлы, вы можете делать с ними на уровне файлов всё, что угодно. Примеры своих скриптов я показал в статье Очистка и обслуживание почтовой базы postfix. Посмотрите, может найдёте там для себя что-то полезное. Я показываю в том числе, как выполнять очистку писем на основе их содержимого или заголовка (поля subject). К примеру, удалять все письма старше 30 дней с определённой темой. Статья писалась 7! лет назад. Сейчас я бы делал скорее всего всё это по-другому, так что не спешите критиковать. Просто примите к сведению то, что там написано, если для вас эта тема актуальна.

#mailserver #dovecot
​​Наиболее популярным и простым в настройке мониторингом сейчас является Prometheus. Простым не в плане возможностей, а в плане начальной настройки. Так как для него очень много всего автоматизировано, начать сбор метрик можно в несколько простых действий. Мониторинг сразу заработает и дальше с ним можно разбираться и настраивать.

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

Ставим Docker:

# curl https://get.docker.com | bash -

Готовим файл docker-compose.yml:

# mkdir ~/prometheus && cd ~/prometheus
# touch docker-compose.yml

Содержимое файла:

version: '3.9'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}

services:

prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
container_name: prometheus
hostname: prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
expose:
- 9090
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

node-exporter:
image: prom/node-exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
container_name: exporter
hostname: exporter
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
expose:
- 9100
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

grafana:
image: grafana/grafana
user: root
depends_on:
- prometheus
ports:
- 3000:3000
volumes:
- ./grafana:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
container_name: grafana
hostname: grafana
restart: unless-stopped
environment:
TZ: "Europe/Moscow"
networks:
- monitoring

И рядом кладём конфиг prometheus.yml:

scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:9090']

- job_name: 'node-local'
scrape_interval: 5s
static_configs:
- targets: ['node-exporter:9100']

Запускаем весь стек:

# docker-compose up -d

Если будут ошибки, прогоните весь yaml через какой-нибудь валидатор. При копировании он часто ломается.

Ждём, когда всё поднимется, и идём по IP адресу сервера на порт 3000. Логинимся в Grafana под учёткой admin / admin. Заходим в Connections ⇨ Data sources и добавляем источник prometheus. В качестве параметра Prometheus server URL указываем http://prometheus:9090. Сохраняем.

Идём в Dashboards, нажимаем New ⇨ Import. Вводим ID дашборда для Node Exporter - 1860. Сохраняем и идём смотреть дашборд. Увидите все доступные графики и метрики хоста Linux, на котором всё запущено.

Идём на удалённый Linux хост и запускаем там любым подходящим способом node-exporter. Например, через Docker напрямую:

# docker run -d --net="host" --pid="host" -v "/:/host:ro,rslave" prom/node-exporter:latest --path.rootfs=/host

Проверяем, что сервис запущен на порту 9100:

# ss -tulnp | grep 9100

Возвращаемся на сервер с prometheus и добавляем в его конфиг еще одну job с этим сервером:

- job_name: 'node-remote'
scrape_interval: 5s
static_configs:
- targets: ['10.20.1.56:9100']

Перезапускаем стек:

# docker compose restart

Идём в Dashboard в Grafana и выбираем сверху в выпадающем списке job от этого нового сервера - node-remote.

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

❗️В проде не забывайте ограничивать доступ ко всем открытым портам хостов с помощью файрвола.

#мониторинг #prometheus #devops
До меня только сегодня докатилась новость про сбой в работе СДЕК. Говорят, что их плотно зашифровали. Немного жутко стало от новости, потому что сразу примерил на себя шкуру сотрудников сопровождения инфраструктуры. Сам то я тоже с этим сталкивался, и не раз. Мне повезло, что без потерь выходил из ситуаций.

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

Хорошая защита это на самом деле очень дорого. Например, я знаю, как теоретически может пострадать инфраструктура, которой я управляю. Понимаю, как и где можно взломать. Примерно понимаю, как от этого защищаться и как подстраховать инфраструктуру на случай, если защита не поможет. Но стоить защищённая инфраструктура может в 3 раза больше, чем компания платит за существующую. И получается, что ты уже 10 лет живёшь в текущей инфре с рисками, но платишь в 3 раза меньше. Но даже если заплатишь в 3 раза больше, то не получишь 100% гарантию защиты. А если тебя всё равно взломают, то как потом объяснишь рост расходов в 3 раза? 🧐

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

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

❗️Я не так давно оформлял документы на родившегося ребёнка. Теперь СНИЛС и мед. полис электронные. Пришли мне в личку на госуслугах. На руки ничего не дали. Лет 7 назад упразднили документы на право собственности. Нету гербовых свидетельств, всё в базе данных Росреестра. Намечен явный тренд на полную цифровизацию. Школьников к этому с первого класса приучают.

А что мы будем делать, когда зашифруют Госуслуги? Это обрушит управление всего государства. Отсутствие бумажных дубликатов различных документов похоже на сознательное вредительство, которое проводят как раз для того, чтобы потом в один день всё обрушить. Ведь вероятность этого довольно высока. Это не какие-то гипотетические угрозы из области конспирологии, а абсолютно реальные. Что думаете по этому поводу? Или может я напрасно переживаю и там всё надёжно защищено с офлайн хранилищами в бункерах? Я без шуток, может и на самом деле так. Это было бы логично.

#мысли
​​Вчера была заметка про быструю установку связки Prometheus + Grafana. Из-за лимита Telegram на длину сообщений разом всё описать не представляется возможным. А для полноты картины не хватает настройки уведомлений, так как мониторинг без них это не мониторинг, а красивые картинки.

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

SMTP для только для метки critical
Telegram для меток critical и warning

Уведомления будут отправляться на основе двух событий:

▪️ С хоста нету метрик, то есть он недоступен мониторингу, метка critical
▪️ На хосте процессор занят в течении минуты более чем на 70%, метка warning

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

Постить сюда все конфигурации в формате yaml неудобно, поэтому решил их собрать в архив и прикрепить в следующем сообщении. Там будут 4 файла:

- docker-compose.yml - основной файл с конфигурацией всех сервисов. Его описание можно посмотреть в предыдущем посте. Там добавился новый контейнер с alertmanager и файл с правилами для prometheus - alert.rules
- prometheus.yml - настройки Прометеуса.
- alert.rules - файл с двумя правилами уведомлений о недоступности хоста и превышении нагрузки CPU.
- alertmanager.yml - настройки alertmanager с двумя источниками для уведомлений: email и telegram. Не забудьте там поменять токен бота, id своего аккаунта, куда бот будет отправлять уведомления и настройки smtp.

Для запуска всего стека с уведомлениями достаточно положить эти 4 файла в отдельную директорию и там запустить compose:

# docker compose up

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

# docker compose stop

Исправляйте конфиги и заново запускайте. Зайдя по IP адресу сервера на порт 9090, вы попадёте в веб интерфейс Prometheus. Там будет отдельный раздел Alerts, где можно следить за работой уведомлений.

В данном примере со всем стэком наглядно показан принцип построения современного мониторинга с подходом инфраструктура как код (IaC). Имея несколько файлов конфигурации, мы поднимаем необходимую систему во всей полноте. Её легко переносить, изменять конфигурацию и отслеживать эти изменения через git.

#мониторинг #prometheus #devops
​​Shodan знают все или почти все. Когда-то писал про него. У этого сервиса есть очень простая и маленькая утилита, которая проверяет ваши списки ip адресов по своей базе открытых портов и уязвимостей. Называется nrich. Удобно запихнуть все свои внешние IP адреса и периодически проверять то, как их видит Shodan. Его используют многие сканеры и боты, для автоматического поиска доступных из интернета сервисов.

Поставить можно как из пакета, так и просто скачать бинарник напрямую. Всё есть в репозитории.

# wget https://gitlab.com/api/v4/projects/33695681/packages/generic/nrich/latest/nrich_latest_x86_64.deb
# dpkg -i nrich_latest_x86_64.deb

Формируем текстовый файл с ip адресами, где в каждой строке по ip адресу:

1.1.1.1
8.8.8.8
и т.д.

Запускаем проверку:

# nrich ip.list

Результат виден в консоли. Можно сразу в json обернуть:

# nrich ip.list --output json

Данные nrich берёт из публичного бесплатного сервиса internetdb.shodan.io.

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

В статье меня очень удивило и привлекло другое. Там был пример установки этой утилиты в Windows:

# curl.exe https://webi.ms/sttr | powershell

❗️Я, во-первых, не знал, что в винде есть curl. Проверил у себя на Windows 11, реально есть:

> curl
curl: try 'curl --help' for more information

А во-вторых, не знал, что для винды тоже пишут скрипты для автоматической установки софта в духе Linux. Пример, который я использую постоянно:

# curl https://get.docker.com | bash -

Скачали скрипт и сразу передали его в bash на исполнение. Оказывается, и в powershell некоторые разработчики пишут скрипты для подобной установки. Автор утилиты заморочился.

Хотя не знаю, автор ли тут заморочился. Я посмотрел, что за скрипт там скачивается. Он принадлежит площадке webinstall.dev, и скачивает в первую очередь с неё скрипт-установщик webi-pwsh.ps1 для установки программы. И только потом уже ставится программа. То есть первый скрипт загружает второй скрипт в зависимости от системы и уже он ставит программу.

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

А тут получается не пойми что. Я так понял, что webinstall.dev это такой сервис, который позволяет организовать единую ссылку для установки софта через консоль на разные системы и платформы. Идея интересная, но с точки зрения безопасности очень сомнительная. Хотя они и выкладывают всю свою базу софта, который можно установить через сервис на github:

https://github.com/webinstall/webi-installers

#windows
▶️ Месяц назад на youtube канале, который мне очень нравится, вышли два ролика. В них автор кратко рассказал про его любимый open source софт, который он использует. Там внушительный список получился, поэтому решил вынести его в отдельную публикацию. В видео мне понравилось то, что большую часть софта я тоже знаю, писал о ней тут, а что-то тоже использую.

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

The Free and Open Source Software I Use in 2024 - Part 1:

Webmin - известная веб панель управления сервером. Мне было удивительно увидеть свежую версию. Давно не ставил и не видел этого внешнего вида. Раньше тема была другая.

PiKVM - KVM over IP на базе одноплатников типа Raspberry Pi. Позволяет переустанавливать системы, заходить в BIOS и т.д. То есть как на обычных KVM. Сходу не понял, как это технически реализовано. Надо будет отдельно разобраться и попробовать. Выглядит интересно, не слышал раньше о подобном софте.

Nginx Proxy Manager - известная веб панель для управления конфигурациями Nginx. Сделана качественно и функционально, приятно пользоваться. Писал о ней не раз.

MeshCentral - софт для удалённого управления компьютерами через браузер. Вроде недавно про него писал, а прошло уже более 3-х лет 😱

Portainer-CE - веб панель для управления Docker контейнерами. Удобная и популярная панель. Лучшая в своём классе.

Vaultwarden - хранение и групповое использование сохранённых учётных данных.

Metabase - BI-инструмент для составления отчетов, визуализации выборок, учёта финансов и т.д.

Remotely - ещё один неплохой софт для удалённого управления компами. Отличается тем, что упакован в Docker и очень легко разворачивается.

Guacamole - шлюз для удалённых подключений к серверам всех мастей по ssh, rdp, vnc и т.д.

Authentik - популярный сервис для своего SSO.

Netbird - платформа для построения распределённых VPN сетей на базе Wireguard.

LXConsole - веб интерфейс для управления LXC контейнеров. Ни разу не слышал о таком.

Home Assistant - известный софт для построения и управления "умным домом".

NextCloud - всем известный файловый сервер и собственное облачное хранилище для файлов и работы с документами.

RocketChat - один из самых популярных self-hosted чатов. Хорошо его знаю, так как админю в том числе.

Dashy - создание дашборда для стартовой страницы браузера с информацией и ссылками на свои сервисы.

Trilium Notes - популярный сервис для хранения заметок.

The Open Source Software I use in 2024 - Part 2:

Mail-in-a-Box - сборка для установки почтового сервера на базе Postfix + Dovecot.

Jitsi Meet - сервис для ауди и видео конференций, замена zoom, google meet и т. д.

Pi-hole - фильтрующий DNS сервер для блокировки рекламы.

Uptime Kuma - симпатичный и простой в настройке мониторинг для http, icmp и tcp проверок.

OpenMediaVault - дистрибутив на базе Debian для организации файлового сервера.

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

RustDesk - ещё один качественный софт для организации инфраструктуры на основе своих серверов с выдачей ID для управления удалёнными компьютерами.

Некоторый софт пропустил, который посчитал не таким интересным. Иначе всё не уместилось бы в одну публикацию.

#видео
​​Вчера свершилось знаменательное событие - заблокировали доступ к hub.docker.com с IP адресов в России. Теперь без лишних телодвижений не скачать образы из этого репозитория. Не очень понятно, зачем это сделали, почему только сейчас и в чём тут смысл, если обойти эту блокировку, как и многие другие, не представляет каких-то проблем.

Расскажу несколько простых разных способов обхода этой блокировки.

1️⃣ Самый простой - переключиться на какое-то зеркало. Их сейчас много появится и встанет вопрос доверия к ним. Пока можно гугловское зеркало использовать, но его скорее всего тоже рано или поздно для нас заблокируют. Для этого достаточно создать конфиг /etc/docker/daemon.json, если у вас его нет, следующего содержания:

{ "registry-mirrors": ["https://mirror.gcr.io"] }

Перезапускаем службу и пользуемся, как раньше.

# systemctl restart docker

Больше ничего менять не надо.

2️⃣ Использовать локально подключение докера к своему реджистри через прокси. Недавно я об этом рассказывал и там многие написали, типа зачем всё это, доступ не заблокирован. Потому что не будет вашего итальянского сыра ХАХАХАХА. Сегодня этот реджистри, завтра все остальные. Прокси тоже относительно просто решает вопрос для единичного хоста.

3️⃣ Можно глобально на общем шлюзе настроить VPN подключение к серверу за пределами РФ, маркировать весь трафик, что блокируется и отправлять его через VPN соединение. Я так делаю дома для себя и своих тестовых стендов. Рассказывал про эту настройку на примере Mikrotik.

4️⃣ Поднять собственный прокси для докера, который будет иметь доступ к hub.docker.com. Не важно, как это будет сделано у него: через VPN он будет подключаться, или сразу поднят на VPS за пределами РФ. Вы со своей стороны будете подключаться к этому прокси, а он будет по вашим запросам загружать образы.

Проще всего подобный прокси поднять с помощью Nexus repository. Показываю, как это сделать. Я сразу взял VPS за пределами РФ и развернул там:

# docker volume create --name nexus-data
# docker run -d -p 8081:8081 -p 8082:8082 --name nexus \
-v nexus-data:/nexus-data sonatype/nexus3

В файле /var/lib/docker/volumes/nexus-data/_data/admin.password смотрим пароль от пользователя admin. Идём в веб интерфейс Nexus по IP адресу сервера на порт 8081.

Переходим в раздел управления и добавляем новый репозиторий. Тип выбираем docker (proxy). Если вы сами к прокси будете подключаться через VPN или проксировать к нему запросы через ещё какой-то прокси, типа Nginx или HAproxy, то можно в свойствах репозитория выбрать только HTTP и порт 8082. Это упростит настройку. Рекомендую идти именно по этому пути, чтобы ограничить тем или иным способом доступ к этому репозиторию. Вы же не будете его открывать в общий доступ для всех. В таком случае можно будет установить флаг Allow anonymous docker pull. Не нужно будет на всех хостах аутентификацию проходить.

В качестве Remote Storage можно указать https://registry-1.docker.io. Это докеровский репозиторий. Остальные настройки можно оставить по умолчанию, либо изменить в зависимости от ваших предпочтений.

Также зайдите в раздел Security ⇨ Realms и добавьте Docker Bearer Token Realm. Без него аутентификация в реджистри не будет работать.

После создания репозитория, можно его открыть. Там будет показан его url в зависимости от ваших настроек порта, http и адреса самого Nexus. Теперь его можно использовать в настройках /etc/docker/daemon.json:

{
    "insecure-registries": ["10.105.10.105:8082"],
    "registry-mirrors": ["http://10.105.10.105:8082"]
}

Перезапускайте службу Docker и пробуйте. Можно аутентифицироваться в своём реджистри и что-то загрузить:

# docker login 10.105.10.105:8082
# docker pull nginx

Идём в веб интерфейс Nexus, смотрим обзор репозитория и видим там скачанный образ Nginx.

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

#devops #docker
▶️ Всем хороших тёплых теперь уже летних выходных. Как обычно, ниже те видео из моих подписок за последнее время (обычно беру период в 2 недели), что мне показались интересными. В начале будет самое актуальное 😁 (хотя всех уже наверное задолбала эта тема)

Установка Adguard Home и разблокировка Docker Hub, ClamAV и TMDB
Наглядная инструкция на тему настройки Adguard Home для обхода блокировок с той стороны путём перенаправления трафика к заблокированным доменам на отдельные DNS сервера. А они каким-то образом резолвят ответы так, что блокировка обходится. Интересное решение. Я не знал, что так вообще можно сделать. Не понял техническую реализацию такого обхода.

🔥How To Migrate ZABBIX from MySQL to PostgreSQL
Set up TimescaleDB with Zabbix for Extra Performance
Два полезных видео от Dmitry Lambert на тему перевода Zabbix с MySQL на PostgreSQL, а так же подключения TimescaleDB для увеличения производительности подсистемы хранения метрик.

HTTP API | Компьютерные сети 2024 - 14
Система доменных имен DNS | Компьютерные сети 2024 - 15
Очередные уроки с курса по сетям от Созыкина Андрея.

Установка XPEnology 7.2 на мини ПК с SSD NVME M2
Инструкция по установке XPEnology. Кто не знает, что это такое, рекомендую познакомиться. Я пользуюсь более 10-ти лет. Думаю, что в районе 12-13 лет уже.

Proxmox Backup Server. Установка, настройка, тест, обзор функций.
Очень подробный разбор PBS для создания бэкапов VM и не только в Proxmox. Кто с ним знаком, смотреть особо нет смысла. Кто не знаком, получит полное представление о нём.

Proxmox Automation with Proxmox Helper Scripts!
Обзор известной коллекции Proxmox Helper Scripts, про которую постоянно вспоминают в комментариях к заметка о Proxmox. Да я и сам писал ранее о них. Отдельно хочу упомянуть статью от этого автора у него на сайте про автоматизацию полива грядок на своём участке. Мне было интересно посмотреть, на базе чего это технически реализуется. Стоит всё это немало для нашего уровня жизни.

Выбор VPN для использования в Mikrotik
Очень подробный разбор всех вариантов VPN в Микротике от сертифицированного тренера Козлова Романа. Видео большое (2 часа), так как это лекция, а не смонтированный ролик по теме с выжимкой информации.

Zammad - Open Source Helpdesk and Ticketing software for your MSP, IT or other business needs!
Подробный обзор Zammad - одной из лучших open source систем для организации собственной HelpDesk службы. Я когда-то давно делал про неё заметку.

I automated EVERYTHING in my HomeLab with Kestra
Я не так давно писал про Kestra. Автор видео развернул у себя эту систему и рассказал, как её использует для автоматизации.

Zero-Trust for DevOps! Twingate + Terraform + Kubernetes
Подробное видео по использованию Twingate в Kubernetes. Это инструмент для довольно популярного последнее время направления по организации peer-to-peer соединений в рамках распределённой VPN сети. А так же для подключения внешних клиентов в эти сети.

BEST Server Monitoring with TICK stack setup for FREE!
Очень понравился TICK stack для мониторинга. Никогда раньше о нём не слышал. Это связка в docker-compose нескольких популярных open source продуктов: Telegraf, InfluxDB, Chronograf, Kapacitor. У автора есть серия статей по этой теме. Ссылки в описании к видео.

Без вышки все? Нужно ли высшее образование DevOps, программисту, и др айти специалисту?
Рассуждения автора на актуальную тему. Сам я лично так и не определился, нужно ли это или нет. У меня есть высшее техническое образование практически по моей специальности (математик-программист, были курсы и по администрированию, и по сетям, и по ОС и т.д.). Но не могу сказать, что на практике оно мне сильно помогло в работе. Для старта и получения работы больше помог сертификат Microsoft, который я получил перед окончанием вуза и поиском работы.

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

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

📌 Больше всего просмотров:
◽️Связка Grafana + Influxdb + K6 для нагрузочного тестирования (12857)
◽️Песня про системных администраторов (12563)
◽️Комбинация Alt+Shif+3 в терминале bash (11870)

📌 Больше всего комментариев:
◽️Утро на удалёнке (208)
◽️Взлом СДЕК (163)
◽️Перенос ОС на базе Linux с помощью dd (83)

📌 Больше всего пересылок:
◽️Подборка заметок по базовым консольным программам Linux (💥938 не зря пол дня их собирал)
◽️Быстрый запуск Prometheus + Grafana (468)
◽️Сервис zonemaster.net для проверки DNS (449)

📌 Больше всего реакций:
◽️Заметка ко дню победы на 9-е мая (401)
◽️Комбинация Alt+Shif+3 в терминале bash (309)
◽️Взлом СДЕК (263)
◽️Подборка заметок по базовым консольным программам Linux (💥251)
◽️Комбинация Ctrl+s в терминале bash (242)

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

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

#топ
​​Я некоторое время назад сделал подборку основных команд, которые использую при работе с Docker. За последнее время в комментариях увидел несколько команд для Docker Compose, которые сам не знал, но они полезны. Решил сделать такую же подборку и для Docker Compose. Сам их все не помню и либо лезу в свою шпаргалку, либо начинаю гуглить. Я тут не привожу самые очевидные команды, типа start, stop, restart с разными ключами и т.д.

📌 Запустить часть контейнеров:

# docker compose up ct1 ct2

📌 Проверить файл конфигурации. Не знал об этой команде и всегда использовал внешние линтеры. Встроенный намного удобнее.

# docker compose config

📌 Запустить новый контейнер и выполнить в нём команду:

# docker compose run ct1 /scripts/start.js

📌 Запустить команду в работающем контейнере:

# docker compose exec ct1 bash

Поясню, в чём тут разница. На первый взгляд команды похожи. Run удобно использовать для выполнения какой-то команды из контейнера, который постоянно не запущен. Например, там какой-то один бинарник или скрипт, который запускается, отрабатывает и больше он не нужен. Удобно запустить его через run. Новый контейнер запустится, отработает и завершит работу. А exec удобно использовать, когда надо что-то запустить в работающем контейнере. Это аналог docker exec.

📌 Посмотреть все логи или логи контейнера:

# docker compose logs
# docker compose logs ct1

📌 Скопировать файлы из/в контейнер:

# docker compose cp prometheus:/etc/prometheus/prometheus.yml ~/
# docker compose cp ~/prometheus/prometheus.yml prometheus:/etc/prometheus/

Последняя команда скопирует файл только если он лежит в директории с docker-compose.yml, который запущен.

📌 Приостановить и запустить контейнеры:

# docker compose pause
# docker compose unpause

Для приостановки контейнеров используется механизм cgroups freezer. Процессам отправляется команда SIGSTOP для заморозки и SIGCONT для продолжения работы.

📌 Посмотреть список запущенных контейнеров:

# docker compose top

📌 Посмотреть графическую схему всего docker-compose. Используется экспериментальная возможность экспорта содержимого композа в формат программы graphviz:

# docker compose alpha viz --networks --ports --image

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

📌Выполнить тестовую отработку команды без реальных действий:

# docker compose cp prometheus:/etc/prometheus/prometheus.yml ~/ --dry-run

Можно добавлять --dry-run к любой команде. Актуально для копирования файлов, так как там легко ошибиться с путём или файлом.

Полный набор всех команд и возможностей Docker Compose можно посмотреть в документации:

https://docs.docker.com/compose/reference

#docker
​​Есть популярный вопрос для собеседования администраторов Linux:

Расскажите, как происходит загрузка операционной системы на базе Linux.

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

1️⃣ После запуска сервера или виртуалки, первым делом загружается bios или uefi. Bios ищет загрузчик на локальном или сетевом носителе и запускает его. Uefi может в себе содержать загрузчик. А может и нет. Если вы переносите виртуалку с одного гипервизора на другой, то обязательно учитывайте этот момент, используется bios или uefi. Если второе, то на другом гипервизоре нужно будет воспроизвести настройки uefi, чтобы виртуалка заработала. Если честно, я не совсем понимаю, зачем может быть нужен uefi для виртуальных машин, если не используется secure boot. Проще использовать обычный bios. Пример, как может на практике выглядеть перенос VM с uefi с HyperV на Proxmox.

2️⃣ Дальше загружается загрузчик с диска (не обязательно локального, может и сетевого). Для Linux обычно это GRUB. Я ничего другого не встречал, хотя есть и другие. У загрузчика есть небольшое меню и набор опций, которые иногда пригождаются. Например, если загрузчик по какой-то причине не смог загрузиться с диска или раздела, который у него указан загрузочным. Можно это сделать вручную через grub rescue. Пример, когда я так поступал, чтобы починить загрузку системы.

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

3️⃣ В зависимости от настроек GRUB, загружается ядро Linux. Оно монтирует специально подготовленный образ файловой системы initramfs, загружаемый в оперативную память. Этот образ содержит все необходимые настройки и драйвера, чтобы загрузиться с нестандартный файловых систем, с LVM, с RAID, по сети и т.д. Там могут быть любые настройки. Можно выводить какую-то заставку, проверять диски и многое другое. Также с него запускается первый процесс init.

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

Иногда после переноса на другое железо, сервер или вируталка могут не запуститься, потому что в initramfs не будет поддержки необходимого железа. В
этом случае initramfs нужно будет пересобрать с поддержкой всего, что необходимо для успешной загрузки. Это можно сделать либо на старом месте, пока система ещё работает, либо загрузиться с какого-то livecd.

4️⃣ После запуска Init начинает загружаться система инициализации и управления службами. Сейчас это почти везде SystemD. Здесь я особо не знаю, что рассказать. С какими-то проблемами если и сталкивался, то это уже отдельные моменты в работающей системе, которые относительно легко исправить, так как чаще всего к системе уже есть удалённый доступ.

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

#linux #grub
​​В ОС на базе Linux есть очень простой в настройке инструмент по ограничению сетевого доступа к сервисам. Он сейчас почти не применяется, так как не такой гибкий, как файрволы, но тем не менее работает до сих пор. Речь пойдёт про TCP Wrappers, которые используют библиотеку libwrap для ограничения доступа. По своей сути это файрвол уровня приложений, которые его поддерживают. Расскажу, как это работает.

В большинстве Linux дистрибутивов есть файлы /etc/hosts.allow и /etc/hosts.deny. Сразу покажу пример, как всем ограничить доступ к SSH и разрешить только с указанных локальных подсетей. Добавляем в /etc/hosts.allow:

sshd : 10.20.1.0/24
sshd : 192.168.13.0/24

И одновременно в /etc/hosts.deny:

sshd : ALL

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

# journalctl -u ssh -n 10
sshd[738]: refused connect from 10.8.2.2 (10.8.2.2)

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

sshd : ALL \ : spawn /usr/bin/echo "$(/bin/date +"%%d-%%m-%%y %%T") SSH access blocked from %h" >> /var/log/libwrap

В файле /var/log/libwrap будет аккуратная запись:

03-06-24 12:29:31 SSH access blocked from 10.8.2.2

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

# ldd /usr/sbin/sshd | grep libwrap
libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007f55228a2000)

В Debian 12 sshd поддерживает, но так не во всех дистрибутивах. Надо проверять. Из более-менее популярного софта libwrap поддерживается в vsftpd, nfs-server, apcupsd, syslog-ng, nut, dovecot, stunnel, nagios, Nutanix Controller VM.

Очевидно, что тот же iptables или nftables более функциональный инструмент и полагаться лучше на него. Но в каких-то простых случаях, особенно, если нужно ограничить только ssh, можно использовать и libwrap. Также можно продублировать в нём правила, чтобы в случае ошибки в файрволе, доступ к некоторым сервисам точно не был открыт. Ну и просто полезно знать, что есть такой инструмент. Мало ли, придётся столкнуться.

#linux #security
​​Недавно рассказывал про Shodan и упомянул его бесплатный сервис internetdb.shodan.io, который по запросу выдаёт некоторую информацию из своей базы по IP адресу.

Работает примерно так:

# curl https://internetdb.shodan.io/112.169.51.142
{"cpes":["cpe:/a:openbsd:openssh","cpe:/a:jquery:jquery:1.11.1","cpe:/a:vmware:rabbitmq:3.5.7"],"hostnames":[],"ip":"112.169.51.142","ports":[22,123,4369,5672,8080],"tags":["eol-product"],"vulns":["CVE-2019-11358","CVE-2021-32718","CVE-2020-11023","CVE-2021-22116","CVE-2015-9251","CVE-2023-46118","CVE-2022-31008","CVE-2020-11022","CVE-2021-32719"]}

Вся информация, что у них есть, выдаётся в виде json. В целом, ничего интересного. Я об этом знал и писать не собирался. Но моё внимание привлёк один комментарий со ссылкой на excel таблицу, где можно в одном листе задать список IP адресов, сделать запрос в этот сервис и на другой получить в таблице вывод в удобном виде.

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

Работает это с помощью встроенного инструмента Excel Power Query. Конкретно с shodan работа выглядит так:

1️⃣ На первом листе формируем список IP адресов для анализа.
2️⃣ Добавляем источник данных из интернета в виде ссылки https://internetdb.shodan.io/, где в конце в качестве аргументов передаём список IP адресов.
3️⃣ Получаем ответы от запросов, преобразуем их в читаемый вид в таблицах.

Привожу свой вариант таблицы: https://disk.yandex.ru/d/S2FNRDEcZpHBJQ Работать будет только в Excel. Можете использовать у себя, поменяв список IP адресов. Нужно его заполнить, перейти на вкладку Данные и нажать на Обновить все. Чтобы посмотреть, как там всё устроено, надо Запустить Редактор Power Query. Это отдельный раздел меню там же на вкладке Данные.

В редакторе добавлен один параметр в виде IP адреса 1.1.1.1, для него сформирован набор действий в виде запроса в shodan и обработки ответа. Далее эти действие превращены в функцию. И потом эта функция применяется на список IP адресов в листе. Результат выводится на второй лист.

Не знаю, зачем я всё это изучил 😁. Но мне кажется, может пригодится. Как минимум, эту табличку удобно использовать для себя. Добавить все IP адреса с комментариями и периодически глазами просматривать, что там есть интересного.

#security
​​Вчера был релиз новой версии Zabbix Server 7.0. Это LTS версия со сроком поддержки 5 лет. Я буду обновлять все свои сервера со временем на эту версию. Почти всегда на рабочих серверах держу LTS версии, на промежуточные не обновляюсь.

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

1️⃣ Обновился мониторинг веб сайтов. Очень давно ждал это. Почти все настроенные мной сервера так или иначе мониторили веб сайты или какие-то другие веб службы. Функциональность востребована, а не обновлялась очень давно. Как в версии то ли 1.8, то ли 2.0 я её увидел, так она и оставалось неизменной. Появился новый тип айтема для этого мониторинга - Browser.

2️⃣ Появилась централизованная настройка таймаутов в GUI. На функциональность особо не влияет, но на самом деле нужная штука. Таймауты постоянно приходится менять и подгонять значения под конкретные типы проверок на разных серверах. Удобно, что это можно будет делать не в конфигурационном файле, а в веб интерфейсе. И эти настройки будут иметь приоритет перед всеми остальными.

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

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

5️⃣ Добавилось много менее значительных изменений по мониторингу. Такие как мониторинг DNS записей, возможность передавать метрики напрямую в мониторинг через API с помощью метода history.push, объекты, обнаруженные через discovery, теперь могут автоматически отключаться, если они больше не обнаруживаются, выборку через JSONPath теперь можно делать и в функциях триггеров, а не только в предобработке, можно выполнять удалённые команды через агенты, работающие в активном режиме.

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

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

#zabbix
​​Есть относительно простой и удобный инструмент для создания различных схем на основе текстового описания в формате определённого языка разметки. Я уже на днях упоминал про этот продукт на примере схемы связей контейнеров в docker-compose файле. Речь идёт про Graphviz. Это очень старый и известный продукт, который развивается и поддерживается по сей день.

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

Поставить Graphviz можно через apt, так как он есть в базовых репозиториях:

# apt install graphviz

Теперь подготовим небольшую схему сети с роутером, свитчами, точкой доступа и стойкой.

graph network {

node [
shape=box,
fontname="arial",
fontsize=8,
style=filled,
color="#d3edea"
];
splines="compound"

label="Схема сети\n ";
labelloc="t"
fontname="arial";

sw1 [ label="SW-01\n192.168.1.101" ];
sw2 [ label="SW-02\n192.168.1.102" ];
sw3 [ label="SW-03\n192.168.1.103" ];
sw4 [ label="SW-04\n192.168.1.104" ];
router [ label="Router\nVPN Server\n192.168.1.10" color="#cf7b7b"];
wp1 [ label="WiFi\nWP-01\n192.168.1.200" shape=hexagon color="#a8d1b0"];
servers [ label="Servers" fontsize=14 shape=doubleoctagon color="#FF4500"];
router -- sw1;
sw1 -- sw2 [color="#ffbb00"];
sw1 -- sw3 [color="#ffbb00"];
sw1 -- wp1 [color="#ffbb00"];
sw2 -- sw4 [color="#ffbb00"];
sw3 -- servers [color="#ffbb00"];
}

Создаём картинку:

# dot -Tpng network.dot -o network.png

Смотрим её в браузере:

# python3 -m http.server 80

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

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

Устанавливать локально его не обязательно. Удобнее рисовать в каком-то онлайн редакторе, где сразу виден результат. Например, тут: https://dreampuf.github.io/GraphvizOnline

Сайт / Исходники / Онлайн редактор

#схемы
Вчера обновил один из своих серверов Zabbix до версии 7.0. Сразу же оформил всю информацию в статью. У меня сервер был установлен на систему Oracle Linux Server 8.10. Процедура прошла штатно и без заминок. Основные моменты, на которые нужно обратить внимание:

▪️ Версия 6.0 требовала php 7.2, эта требует 8.0. Не забудьте отдельно обновить и php. Напрямую к Zabbix Server это не относится, так что само не обновится. Мне пришлось подключить отдельный репозиторий Remi и поставить php 8.0 оттуда. В более свежих системах этого делать не потребуется, так как там 8.0+ в базовых репах. Особо заморачиваться не придётся.

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

💥Прямое обновление до 7.0 возможно практически в любой прошлой версии. Дословно с сайта Zabbix: Direct upgrade to Zabbix 7.0.x is possible from Zabbix 6.4.x, 6.2.x, 6.0.x, 5.4.x, 5.2.x, 5.0.x, 4.4.x, 4.2.x, 4.0.x, 3.4.x, 3.2.x, 3.0.x, 2.4.x, 2.2.x and 2.0.x. For upgrading from earlier versions consult Zabbix documentation for 2.0 and earlier.

▪️ Шаблоны мониторинга, оповещений и интеграций нужно обновлять отдельно, если хотите получить свежую версию. С самим сервером они автоматически не обновляются. В статье я написал, как можно провести эту процедуру.

▪️ Обновлять агенты до новой версии не обязательно. Всё будет нормально работать и со старыми версиями агентов. Обновление агентов опционально, но не обязательно.

▪️ Обновлять прокси тоже не обязательно, но крайне рекомендуется. Полная поддержка прокси сервером возможна только в рамках одной релизной ветки. Прокси прошлого релиза поддерживаются в ограниченном формате.

#zabbix
​​Расскажу для тех, кто не знает. Есть отечественная система для бэкапов RuBackup. Я про неё узнал ещё года 1,5 назад. Меня пригласили на какую-то конференцию, где про неё и другие отечественные решения для бэкапа рассказывали. Я послушал, мне в целом понравилось, но руки так и не дошли попробовать.

Там внушительные возможности по функциональности. KVM и, в частности, Proxmox, тоже поддерживается. Есть бесплатная версия без существенных ограничений, но для бэкапов объёмом суммарно до 1ТБ уже после дедупликации. Понятно, что для прода это очень мало, но для личных нужд или теста вполне достаточно.

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

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

Пока писал заметку, полазил по сайту и увидел, что срок действия бесплатной лицензии - 1 год 🤦 Зачем так делать, я не понимаю. Раньше этого ограничения не было, иначе я бы не добавил к себе в закладки эту систему на попробовать. Я не пробую и не пишу про коммерческие решения, где нет хоть какой-нибудь бесплатной версии, которой можно полноценно пользоваться.

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

#backup