ServerAdmin.ru
28.9K subscribers
303 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​Хочу познакомить вас с интересным проектом, у которого вряд ли есть какое-то промышленное применение. Это скорее просто прикол или интересная фишка. Речь пойдёт о проекте Sampler, который условно можно назвать консольным дашбордом простой системы мониторинга. Работает всё исключительно в консоли, внешний вид которой вы оформляете с помощью виджетов.

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

runcharts:
 - title: Search engine response time
  rate-ms: 500
  scale: 2
  legend:
   enabled: true 
   details: false
  items:
   - label: GOOGLE
    sample: curl -o /dev/null -s -w '%{time_total}' https://www.google.com
   - label: YAHOO
    sample: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com
   - label: BING
    sample: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com

Виджет будет рисовать 3 графика с временем отклика трёх указанных сайтов. Виджетов много: различные диаграммы, текстовые значения, текст в формате ASCII. На картинке во вложении пример заполненного дашборда.

У меня на канале было много разных заметок на тему консольных утилит. Помню про календарь рассказывал, кто-то ссылку на сервисы погоды давал, курсы валют. Всё это можно вывести на Sampler. Пример консольного прогноза погоды:
# curl wttr.in

В Sampler есть простенькие триггеры, которые сработают при выходе за заданные значения метрики. Он может вывести что-то на экран, или воспроизвести звук. С помощью SSH он умеет ходить на удалённые хосты и забирать оттуда какие-то метрики. Пример вывода top с удалённого хоста:
variables:
 sshconnection: ssh -i ~/.ssh/id_rsa.pub user@10.10.1.1
textboxes:
 - title: SSH
  pty: true
  init: $sshconnection
  sample: top

Можно ходить в mysql базы и выполнять какой-то запрос:
variables:
 mysql_connection: mysql -u root -s --database mysql --skip-column-names
sparklines:  
 - title: MySQL (random number example)
  pty: true
  init: $mysql_connection
  sample: select rand();

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

Мне лично больше всего понравилась идея где-то в IT отделе повесить такой дашборд на стену. Выглядит необычно и атмосферно. Захотелось домой себе вывести такой с полезной информацией типа той же погоды, температуры в доме, влажности и т.д. Может это и состоится. Изначально планировал на Grafana собрать.

Исходники - https://github.com/sqshq/sampler

#мониторинг
Подсистема инициализации и управления службами в Linux под названием Systemd плотно вошла в нашу повседневную рутину по управлению серверами. Есть в ней отдельный компонент Timers, который служит заменой классического планировщика мира Unix - cron.

Хочешь не хочешь, но с Timers работать придётся. В том же Debian 11 все повторяющиеся действия реализованы через timers и продублированы в старом cron. Список можно посмотреть вот так:
# systemctl list-timers
Увидите там logrotate.timer, man-db.timer, apt-daily.timer, apt-daily-upgrade.timer и т.д. Если установить php, certbot, то они также добавят свои таймеры наравне с записями в классический cron. Я так подозреваю, что в какой-то момент в обычном cron они исчезнут.

Можно по-разному относиться к нововведениям, но лично мне в таком виде они не нравятся. Это как в Windows функции размазались по Настройкам и Панели управления. В итоге приходится тратить больше времени на настройку и проверять всё в двух местах. Если уж переехали на таймеры, то в cron зачем дублировать? Там всё равно стоят проверки и если уже есть таймер для задачи, то cron ничего не делает. Но проверять приходится.

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

Смотрим на таймеры. Из удобств лично я увидел более гибкий планировщик, который может быть не только календарным, как в cron, но и событийным. Например, можно задать интервал на запуск через 10 минут после загрузки системы и потом повторять каждые 3 часа. Вроде удобно, но лично у меня никогда не было задачи, которой бы требовалось такое расписание. Ни разу не возникло ситуации, когда планировщик cron не справился бы. Максимум, иногда в скрипт добавишь sleep, но это редко бывает. Стараюсь так не делать, потому что костыль.

Вторым плюсом можно отметить логирование каждого отдельного таймера. Это удобно, но не сказать, что очень сильно надо. Grep общего лога cron с таким же успехом покажет все события отдельной задачи. В таймерах смотрим лог вот так:
# journalctl -u logrotate.timer

Ещё одним несомненным плюсом таймеров является возможность настройки зависимостей задач от других служб. Это реально удобно и в обычном cron никак не реализуется. Только если закладывать логику проверки в сам скрипт. Также таймеры могут быть присоединены к разным cgroups.

Я решил написать эту заметку, потому что на днях возникла простая задача. Надо было настроить периодический перезапуск службы 1С на Linux сервере. Прикинул, как это можно сделать через Timers. Получилась такая схема:
1. Создаём отдельную службу, которая перезапускает процесс srv1cv83.
2. Создаём таймер, который запускает эту службу.
Второй вариант, в описание самой службы srv1cv83 добавить параметр WatchdogSec, который будет автоматически перезапускать службу через заданный промежуток времени. Но так трудно попасть в конкретное время. Можно рано или поздно в середине рабочего дня перезапуститься.

Мне показалось, что проще просто добавить в crontab:
55 6 * * 7 root /usr/bin/systemctl restart srv1cv83
и перезапускать службу каждое воскресенье в 6:55. На этом решении в итоге и остановился.

А вы используете systemd timers? Какие задачи решаете? Может я туплю и не понимаю, как красиво и просто перезапускать в нужное время существующую работающую службу, управляемую systemd?

#linux #systemd #cron
​​Делюсь с вами простым и полезным сервисом opensource.builders. Это сайт, в на котором в удобном виде собраны Open Source аналоги известных коммерческих решений. Всё это распределено по категориям, так что удобно пользоваться.

Я просмотрел почти всё. Много бесплатных программ я обозревал на своём канале. Например, берём раздел Communication и смотрим бесплатные альтернативы Slack, Teams и Discord: Rocket.Chat, Zulip, Mattermost и т.д. Тут же смотрим аналог Helpdesk системы Zendesk: Zammad, UVDesk, Helpy.

Забрал сайт себе в закладки. Скорее всего буду потихоньку обозревать наиболее популярные и полезные программы. Нашёл много всего интересного. Например, аналог Notion - Appflowy, аналог TeamViewer - Myrtille и т.д. О многих программах вообще никогда не слышал, хотя судя по звёздам на гитхабе, они популярные.

Кстати, недавно писал UCS сервер и назвал его условным заменителем AD. Авторы этого сайта его туда же поместили, как замену AD.

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

Сайт - https://opensource.builders/
Исходники - https://github.com/junaid33/opensource.builders

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

Автор решил посчитать с помощью Zabbix, сколько времени дома он проводит в беспроводных наушниках. У него MacBook. Он написал простой скрипт, который парсит вывод команды, показывающей список подключенных устройств. Он нашёл строку Connected: Yes или No, обрабатывает её и отправляет по cron в Zabbix только одно слово, Yes или No.

Далее на сервере создаёт айтем, преобразовывает значения Yes или No в 1 или 0. Единственное, он там не оптимально сделал преобразование. Использует 2 раза replace, хотя под данную ситуацию идеально подходит преобразование Логический в десятичный (Boolean to decimal). Yes ⇨ 1, No ⇨ 0.

Я остановился на этом примере, потому что он универсальный и используется очень часто. Например, таким же способом я мониторю состояние массивов mdadm. Подход такой же, только реализация другая. Автор использует для передачи данных zabbix_sender, а тип айтема - Zabbix Trapper. Это избавляет от установки и запуска агента, достаточно бинарника zabbix_sender. Лично мне больше нравится использовать для этого Zabbix Agent (потому что он и так везде установлен) и его настройку UserParameter и тип айтема Zabbix Agent. Пример реализации выше в статье.

Покажу ещё один пример похожей задачи с точки зрения сбора данных скриптом, но не для регулярного сбора, а только по событию. Например, при срабатывании триггера на повышенную загрузку CPU, отправляем в Zabbix топ 10 процессов по нагрузке на CPU. Для этого:
1️⃣ Готовим скрипт, который парсит список процессов и отправляет вывод через zabbix_sender, добавляем его в Zabbix Server.
2️⃣ Разрешаем на агенте выполнение удалённых команд: EnableRemoteCommands=1.
3️⃣ Добавляем на сервер новое действие, которое при срабатывании триггера на CPU будет выполнять подготовленный скрипт.
4️⃣ На сервере ловим эти данные в айтем с типом Zabbix Trapper.
Готовую реализацию можно посмотреть у меня в статье: мониторинг списка запущенных процессов в Zabbix.

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

#zabbix
Позаботьтесь о защите персональных данных

Продемонстрируйте своим клиентам, заказчикам и Роскомнадзору, что вы гарантируете сохранность личной информации пользователей и соблюдаете требования закона. Размещая проекты в @Selectel, вы сможете привести свою инфраструктуру в соответствие 152-ФЗ «О персональных данных».

Преимущества работы с Selectel:

◽️ С нами сотрудничают компании, у которых разные требования к защищенности персональных данных: от интернет-магазинов до государственных информационных систем.

◽️ Наши выделенные серверы, объектное хранилище и облако соответствуют 152-ФЗ;

◽️ Вы можете разместить свою систему в аттестованном сегменте ЦОД. А-ЦОД позволяет сохранить полный контроль за безопасностью, так как ваша инфраструктура изолирована от других клиентов и сетей Селектел аппаратным межсетевым экраном.

Мы понимаем, как сложно разобраться в тонкостях и готовы помочь. Оставьте заявку, мы свяжемся в течение рабочего дня: https://slc.tl/rn86r

#реклама
​​Предлагаю вам подписаться и посмотреть канал англоязычного блоггера The Digital Life. Его можно считать общеобразовательным и развлекательным. Там нет хардкора по точной настройке чего-либо, но много легкого обзорного материала на популярные айтишные темы - домашняя лаба, proxmox, kubernetes, фаерволы и свитчи, NAS и т.д.

Отдельно обращаю внимание на одно из последних видео, где автор делает обзор своей домашней лаборатории с акцентом на подсчёте потребления электричества. Вот список его оборудования:
- Sophos Firewall.
- Sophos Switch.
- Storage Server - самосбор с кучей дисков под управлением TrueNAS.
- Proxmox Server тоже самосбор.

Он прям по пунктам показывает, что за железка, как управляется, сколько в месяц потребляет энергии и во сколько ему это обходится. Раньше у него был Dell Edge, который потреблял в 2 раза больше электричества, чем новый самосбор для Proxmox. И при этом был скорее всего медленнее.

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

У вас если есть дома тестовая лаба, то на каком железе? Старые сервера? Новые сервера? Старые десктопы? Новые десктопы?

Канал - https://www.youtube.com/c/TheDigitalLifeTech
Отдельное наслаждение от комментов. Туда можно заходить, заряжаться позитивом. Все такие добрые, вежливые, благодарные. Да и автор сам позитивный.

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

Is-website-vulnerable - npm пакет, который для проверки использует публичную базу уязвимостей https://security.snyk.io. Проверка сайта выполняется автоматически и легко встраивается в ваш CI/CD или мониторинг. Можно как напрямую поставить в виртуалку, так и запускать в Docker. Первое будет удобнее для мониторинга, второе для CI/CD.

Ставим на виртуалку:
# apt install nodejs npm chromium
Запускаем тест:
# npx is-website-vulnerable https://google.com/

Exit Code покажет результат:
0 - уязвимостей нет
1 - проверка не завершена из-за ошибки
2 - найдена уязвимость

Запускаем проверку через Docker:
# docker run --rm lirantal/is-website-vulnerable:latest https://www.google.com
Контейнер запустится, выполнит проверку и сам удалиться.

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

Исходники - https://github.com/lirantal/is-website-vulnerable

#security #devops #website
Бесплатные онлайн-практикумы для специалистов по IT-инфраструктуре от команды REBRAIN.

Подключайтесь к одному из крупнейших сообществ по IT-инфраструктуре REBRAIN, с нами уже больше 25 000 человек.
 
С нас:
Более 20 бесплатных открытых практикумов каждый месяц.
Спикеры — профессиональные инженеры из лучших компаний ( Avito / Skyeng / AWS / Luxoft / DataArt и др.).
Разбор реальных кейсов автоматизации.
Самый актуальный технологический стек — Kubernetes, Docker, Ansible, Gitlab CI, Linux, Kafka, MySQL, Golang и др.
Работа в консоли и ответы на вопросы в прямом эфире.

Каждый сможет найти для себя интересные практикумы по направлению и уровню компетенций.

И да, все это бесплатно!
👉 Подключайтесь.

#реклама
​​Впервые я увидел игру Компьютерщик, когда был ещё школьником. Точно знаю, что системным администратором в то время стать не планировал. Игра занятная и необычная. Тем, кому меньше 30-35-ти, наверное многое будет не понятно. Например, что такое BBS и почему зарплата программиста меньше системного администратора. Были времена, когда мы так жили (плачущий смайлик).

Вы начинаете игру без работы и компьютера. Вам надо устроиться на работу дворником с зарплатой $10 (в "святые" 90-е всё считалось в долларах) в день. Ваша первейшая задача - накопить денег на компьютер с модемом, чтобы можно было звонить на BBS и качать оттуда софт. Получить антивирус можно только там.

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

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

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

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

Игра содержит свои секреты и недосказанности. Например, как использовать CD-ROM и зачем мы покупали в компьютер Sound Blaster. Ответы на эти вопросы уже не суждено получить.

Автор программы указан в readme - Kokarev Igor, из сети FidoNet. Игра без проблем запускается на Windows 10. Я скачал архив себе на сайт, чтобы не померла ссылка со временем.

https://serveradmin.ru/files/komputershchik.zip

#игра
​​Последнее время наблюдаю, как малый и средний бизнес постепенно перебираются на почтовые сервера, которые представлены как сервис. Это абсолютно оправданное решение, так как держать свой сервер для небольшой компании на 10-15 человек не имеет экономического смысла.

А вот когда людей становится больше, скажем 30-50, уже приходится думать, как быть. Тем более наметилась тенденция на перевод бесплатных сервисов на платные. Google apps давно это сделал. Слышал, что и Яндекс больше не даёт бесплатно подключить свой домен к почте. Скорее всего эта тенденция сохранится и за почту компаниям придётся платить. Не думаю, что это приведёт к оттоку клиентов. Малому бизнесу дешевле эти ящики оплатить, чем настраивать всё самостоятельно.

Собрать самому полнофункциональный почтовый сервер не так просто, поэтому существуют всевозможные сборки на базе открытого ПО. Примером одной из таких сборок является poste.io. Этот почтовый сервер построен на базе следующих продуктов:
- Haraka в качестве почтового сервера.
- Dovecot - imap сервер.
- Roundcube - веб интерфейс, запускается через Nginx.
- Rspamd - антиспам, Clamav - антивирус.
- Данные хранит в SQLite.

Практически классическая сборка, кроме SMTP сервера. Haraka лично мне вообще не знаком(а?). Если бы туда поставить Postfix вместо него, то было бы не отличить от большинства других подобных сборок.

Запускается всё это в Docker (один контейнер на всё), так что настраивать особо нечего. Запускаем и идём в веб интерфейс.
# docker run \
  -p 25:25 -p 80:80 \
  -p 443:443 -p 110:110 \
  -p 143:143 -p 465:465 \
  -p 587:587 -p 993:993 \
  -p 995:995 \
  -e TZ=Europe/Moscow \
  -v /mnt/data:/data \
  -t analogic/poste.io

Перед тем как устанавливать, необходимо подготовить все DNS записи, иначе толком ничего не заработает. Для хождения почты критически важны правильные DNS записи. Для управления и настройки ходить в консоль не надо. Всё можно делать через админку. Она, к слову, самописная и вполне удобная. Уж точно лучше бесплатного Postfixadmin.

Poste.io существует в бесплатной Open Source версии и в платной PRO. Весь базовый функционал есть в бесплатной версии. Можно без особых проблем использовать. Это не то, что в Iredmail. Там бесплатная версия сильно урезана. Здесь же за деньги идёт техподдержка, удалённая установка, расширенные возможности по логированию, диагностике сервера. Можно оценить отличия версий на отдельной странице.

Близким аналогом Poste.io является Mailcow. Он похож по функционалу (там Postfix) и тоже работает в Docker, только контейнеров куча, что лично мне как-то не очень для почтового сервера. Конкретно здесь мне кажется уместнее всё в один установить, хотя это и идёт в разрез с идеологией контейнеризации.

Сайт - https://poste.io
Demo - https://poste.io/demo
DockerHub - https://hub.docker.com/r/analogic/poste.io

#mailserver
​​Иногда нужно понять, почему какая-то программа или сам сервер на Linux тормозит. Обычно анализ производительности начинается с высокоуровневых средств top, htop, atop и т.д. Если эти инструменты не дают однозначного ответа, в чём проблема, нужно спускаться на уровень ниже.

В Linux есть встроенные профилировщики - perf и ftrace. Они входят в состав ядра. На их базе есть большой набор утилит perf-tools, о которых я хочу рассказать. Кратко я уже делал отсылки к ним в разных заметках.

Автором perf-tools является небезызвестный Brendan Gregg. Производительности Linux у него на сайте посвящена отдельная страница, где в том числе упоминаются эти утилиты. Там же есть видео по работе с ними.

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

Запускаем утилиту iolatency и смотрим latency диска. Если это современный SSD, то большая часть запросов будут укладываться в диапазон 0 -> 1 мс.
# ./iolatency
 >=(ms) .. <(ms)  : I/O   |Distribution             |
    0 -> 1    : 155   |######################################|
    1 -> 2    : 10    |###                  |
    2 -> 4    : 19    |#####                 |
    4 -> 8    : 47    |############             |
    8 -> 16   : 34    |#########               |
   16 -> 32   : 5    |##                  |

Мы видим, что много запросов имеют latency значительно выше. Попробуем разобраться, что именно отвечает медленнее. Запускаем iosnoop и смотрим на отклик приложений:
# ./iosnoop
Tracing block I/O. Ctrl-C to end.
COMM     PID  TYPE DEV   BLOCK    BYTES   LATms
jbd2/sda3-28 286  WS  8,0   10834312   32768   0.72
kworker/2:1H 140  WS  8,0   10834376   4096    0.31
sh      48839 W  8,0   16379904   1073152   5.23
sh      48839 W  8,0   16382000   8192    5.12
sh      48839 W  8,0   16382016   1310720   7.71
sh      48839 W  8,0   16384576   262144   8.88
sh      48839 W  8,0   16387648   229376  11.20
sh      48839 W  8,0   16385088   1310720  14.12
sh      48839 W  8,0   16388096   1310720  32.67
sh      48839 W  8,0   16390656   12288   32.67
jbd2/sda3-28 286  WS  8,0   10834384   28672   0.67

Я для теста в соседней консоли запустил tar со сжатием, так что все медленные запросы были от него. В данном случае в качестве приложения указана оболочка sh, потому что tar запускает gzip в ней.

Если у вас несколько дисков в системе и они разные - SSD и HDD, то после общего запуска iolatency, можно запустить с анализом конкретного диска. В одном из примеров Brendan Gregg показывает, что отклик обычного HDD со смешанной нагрузкой read/write может быть существенно уменьшен изменением длины очереди со стандартных 128 до 4:
# echo 4 > /sys/block/xvda1/queue/nr_requests
Указанные выше утилиты позволят проанализировать это и оценить результат, подобрать нужное значение.

Расскажу ещё про утилиту opensnoop. Она делают одну простую вещь - с помощью системных вызовов open() показывает открытые файлы и приложения, которые их открывают. Очень удобно для быстрого анализа того, что вообще происходит с диском.
# ./opensnoop
Вывод можно ограничить каким-то отдельным процессом по PID, или посмотреть файлы по маске:
# ./opensnoop -p 181
# ./opensnoop 'log$'
Она же с помощью ключа -x может показать неудавшиеся попытки открыть файл. Это может быть очень полезно в некоторых ситуациях. Например, стартует сервис и не принимает настройки из конфига. Запустив opensnoop с этим ключом можно увидеть, что сервис пытается открыть конфиг по другому пути, а не там, где он у вас лежит.

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

Заметку заберите в закладки. Когда что-то пойдёт не так на сервере, пригодится.

#linux #bash #perfomance
​​Я неоднократно в заметках обозревал инструменты для ведения документации. Вот примеры продуктов:
MkDocs - инструмент для генерации документации в виде статического сайта на базе текстовых файлов в формате markdown.
BookStack - open source платформа для создания документации и вики-контента.
Wiki.js - готовая wiki платформа с поддержкой редакторов wiki, markdown, wysiwyg.

Сегодня хочу рассказать про ещё один инструмент для автоматизации написания документации. А конкретно по её визуализации с помощью схем и диаграмм. Речь пойдёт про Mermaid. Это известный и популярный инструмент для создания визуализаций и диаграмм на основе написанного кода.

Основная идея Mermaid в том, что вы пишите текст, а на выходе получаете визуализацию. Это позволяет решать целый спектр задач, таких как:
1️⃣ Автоматизация создания контента.
2️⃣ Совместная работа с контентом.
3️⃣ Простая и понятная схема сохранения истории изменений.

Для понимания наглядный пример. Вот такой текст:
graph TD;
  A-->B;
  A-->C;
  B-->D;
  C-->D;
Превращается в картинку с блок схемой и стрелочками. Посмотрите остальные примеры на главной странице проекта, чтобы сразу понять, какой это инструмент и что с его помощью можно нарисовать.

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

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

На практике применение выглядит следующим образом. К примеру, github нативно поддерживает диаграммы Mermaid.js в README-файлах. Можно прямо в них писать код и он будет отрисовываться в картинки. Также Mermaid.js нативно интегрирована в GitLab, Gitea, Joplin и Notion. Для многих сервисов есть плагины. А в общем случае это пакет для nodejs, который можно поставить локально через nmp, запускать как сервис и обращаться к нему или с помощью CLI прогонять через него текстовые данные:
# npm install -g mermaid
# npm install -g @mermaid-js/mermaid-cli
# mmdc -i scheme.mmd -o scheme.png -w 1024 -H 768
Или с помощью Docker:
# docker run -it -v ~/diagrams:/data minlag/mermaid-cli \
-i /data/diagram.mmd

Попробовать Mermaid можно в онлайн редакторе https://mermaid.live. Итоговый результат можно кому-то отправить в виде ссылки.

Сайт - https://mermaid-js.github.io
Исходники - https://github.com/mermaid-js/mermaid

#docs
​​Онлайн-курс по сетевым технологиям

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

После окончания обучения можно получить удостоверение о повышении квалификации информация о котором будет числиться в ФИС ФРДО (база данных Министерства образования РФ).

#реклама
​​Технологию Flash объявили устаревшей. Теперь нельзя просто так взять и запустить какую-то старую игру или анимацию. А если хочется поиграть в симулятор системного администратора, что делать? Есть ещё куча устаревших веб интерфейсов, где используется flash.

Одно из простых решений - воспользоваться проектом ruffle. Это flash плеер, написанный на Rust, который до сих пор развивается и поддерживается. Есть как расширение для современных браузеров, так и просто бинарник, который запускает swf файлы.

Есть другой вариант. Воспользоваться одним из браузеров, который всё ещё не против того, чтобы пользователь смотрел flash через оригинальный плагин от adobe. Пример такого браузера - Falkon. Разработчики пишут, что Falcon потребляет меньше памяти, чем остальные современные браузеры. На деле слабо в это верится, так как под капотом там Chromium (точнее QtWebEngine, но он тоже по факту на базе Chromium работает). Других браузерных движков почти не осталось. Свободный рынок, свободная конкуренция, разнообразие продуктов. Всё для людей.

Помимо браузера, придётся установить 27-ю версию Flash Player. Это последняя версия, где нет тайм бомбы, которая блокирует работу приложения после 12 января 2021 года. Взять можно, например, тут. На свой страх и риск.

Отмечу отдельно, что от Flash отказались в том числе из-за проблем с безопасностью. Так что открывать всё подряд не стоит. Под flash было много вирусов.

#разное
​​Я попробовал очень крутой менеджер сессий SSH - WindTerm. Не терпится рассказать про него, потому что до сих пор под впечатлением. Очень понравился.

Это Open Source приложение, которое бесплатно для любого использования. Есть под Windows, Linux, MacOS. Я установил портированную версию на Windows, настройки сессий указал хранить тут же, в директории с программой. То есть сразу становится понятно, что эту программу можно использовать, положив на какой-то облачный файлообменник. Если решите хранить в ней и пароли соединений, то поддерживается шифрование мастер-паролем.

🟢 Что понравилось больше всего:
Сохранение истории всех набранных команд средствами самого менеджера. К истории очень легко обращаться, плюс она в отдельном окне отображается.
Подсветка синтаксиса консольных утилит, а также подсказки по их ключам.
Одновременно открытая сессия sftp в отдельном окне на главном экране. Когда в консоли перемещаешься по файловой системе сервера, тут же можешь локальным редактором открывать файлы. Реализовано удобно.
Истрия команд в консоли с временными метками и возможностью сворачивания вывода каких-то отдельных утилит.
Всё остальное как у всех - группировка сессий по папкам, вкладки подключений, разные режимы отображения подключений, выбор шрифтов, сохранение истории и т.д. Чего-то ещё особенного не увидел.

🟠 Что не понравилось:
Не очень люблю тёмный интерфейс. Это субъективно, но конкретно у меня вызывало неудобство то, что я не всегда понимал, какая вкладка активна. Какая-то невнятная подсветка и выделение активных элементов.
Перевод на русский язык плохой. Многие слова не понятно, что означают. Например, режим отображения сессий "Исследователь". Не понял, что это такое. Надо использовать английскую версию.
Внешний вид самой программы показался каким-то чересчур минималистичным и немного корявеньким. Думаю, это дело привычки.

В остальном каких-то проблем не увидел. Как я уже сказал, приложение понравилось и в первую очередь за счёт функционала, который может увеличить продуктивность. Появилось желание потихоньку переползти на WindTerm взамен моей старой версии Xshell 5.

Сайт - https://kingtoolbox.github.io
Исходники - https://github.com/kingToolbox/WindTerm

#менеджеры_подключений
​​Я рассказывал про удобные и простые в использовании утилиты профилирования производительности Linux - perf-tools. Расскажу вам про похожий набор утилит, только заточенные на анализ сетевой активности. Речь пойдёт про netsniff-ng. Это довольно старый и известный пакет, который можно установить через пакетный менеджер популярных дистрибутивов.
# apt install netsniff-ng
# dnf install netsniff-ng

В состав netsniff-ng входит несколько утилит, реализующих различный функционал. Их 8, я перечислю только то, что сам иногда использую:
Непосредственно netsniff-ng, который является аналогом tcpdump, сниффер сетевого трафика. Я пробовал, но лично мне tcpdump больше нравится.
Trafgen - генератор сетевого трафика с гибкими настройками. Например, с его помощью можно налить кучу synflood трафика. Примеры шаблонов конфигов под разный трафик можно найти в сети.
Ifpps - показывает статистику по загрузке сетевого интерфейса. Очень точные данные, получаемые напрямую из ядра. Наглядное отображение информации по трафику, пакетам, ошибкам, нагрузке cpu, задержек и т.д. Запускать так:
# ifpps -d ens18
Flowtop - показывает список сетевых соединений с информацией о процессе, удалённом адресе, к которому подключались, статистику по трафику и кое-что ещё. Отображение удобное и наглядное. Похоже на связку Iftop + NetHogs. Закрывает функционал обоих утилит. Запускать с ключом -G, чтобы не подключалась GeoIP4 база. Её надо отдельно качать.
# flowtop -G

Остальные утилиты:
mausezahn - генератор пакетов с Cisco-like CLI;
bpfc - компилятор Berkeley Packet Filter, даже не знаю, для чего он на практике нужен;
curvetun - лёгкий, высокопроизводительный туннель на базе TUN/TAP интерфейсов;
astraceroute - трассировщик с выводом информации в том числе об autonomous system (AS).

Для анализа сети достаточно установить только netsniff-ng. В нём есть всё, что может пригодиться для получения всей полноты информации.

Сайт - http://www.netsniff-ng.org/
Исходники - https://github.com/netsniff-ng/netsniff-ng

#linux #bash #perfomance #network
​​Недавно затрагивал тему настройки CMS Bitrix. В комментариях видел обсуждение Bitrixenv. Хочу немного развить эту тему, так как очень хорошо с ней знаком.

Для тех, кто не в курсе, поясню. Bitrixenv - это преднастроенное рабочее окружение для движка Bitrix. Он работает на обычном веб сервере на базе php + mysql. Bitrixenv автоматически настраивает полностью рабочий веб сервер с управлением через меню в консоли сервера. Реализовано управление через плейбуки Ansible.

Я лично считаю хорошим решением компании Битрикс разработать и поддерживать это окружение. Оно позволяет очень быстро и просто настроить веб сервер и запустить сайт. Специальных знаний не требуется. Достаточно научиться подключаться по SSH, чтобы запустить там вот это:
# wget https://repo.bitrix.info/yum/bitrix-env.sh \
&& chmod +x bitrix-env.sh \
&& ./bitrix-env.sh

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

Bitrixenv умеет:
управлять виртуальными хостами, добавлять, удалять новые сайты
получать и автоматически обновлять сертификаты let's encrypt
управлять версиями php, mysql
настраивать мониторинг на базе munin
устанавливать и настраивать memcached, sphinx
подстраивать настройки софта под ресурсы сервера (по памяти и cpu)

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

Мне подобная панель управления скорее мешает, так как я и вручную могу всё это настроить очень быстро. И проще будет разбираться в своих конфигурациях. У Bitrixenv своя структура конфигов, и в ней придётся покопаться, если захочется руками что-то поправить. Тем не менее, если заказчики не имеют ничего против Bitrixenv, я ставлю её. Так как им банально потом проще будет с ней работать.

Разговоры о том, что Bitrixenv это какая-то пустая поделка, которая больше вредит и мешает, только разговоры. На деле это вполне рабочий инструмент, который успешно решает поставленные задачи. Нужен ли он конкретно вам - отдельный вопрос. Я иногда его ставил, чтобы быстро запустить на время какой-то сайт на php. Ведь это готовый веб сервер за 5 минут.

#bitrix
Selectel Careers — телеграм IT-компании, провайдера облачной инфраструктуры. Пишут: 

— про карьеру и работу (эффективное общение в чатах, как внедрять изменения в команду, как донести фидбэк)
— про well-being (зачем мы спим, как правильно отдыхать
— технические полезности (про код-ревью, шпаргалка по Git, полезные линтеры

А еще вакансии! Подписывайтесь → @selectelcareers

#реклама
Чтобы добить тему с Bitrix, поделюсь ещё некоторыми знаниями на тему запуска этой CMS в Kubernetes. Я давно и много работал с Bitrix. Когда проходил обучение по Куберу, была идея научиться с ним работать и запускать там Битрикс. В итоге от этой идеи отказался, так как это всё нужно только в крупном бизнесе, с которым я не работаю и не хочу работать. И вообще с Кубером после обучения расхотелось иметь дел. Это не моё.

У Bitrix есть ряд особенностей, которые затрудняют её запуск в Kubernetes:
1️⃣ Много нюансов с Docker образом. Насколько я знаю, официального не существует. Соответственно, делать придётся самим или брать чьи-то костыли. А компонентов у Битрикса может быть много. Надо будет всё это связывать.
1️⃣ Особенность Битрикса такова, что код сайта можно править прямо через админку. Это ломает вообще всю конструкцию работы в Kubernetes. Этот момент надо будет решать отдельно. Либо просто запретить такие правки, либо что-то костылить. А как обновлять?
1️⃣ Где-то надо будет хранить общие файлы, сессии, чтобы все поды имели к ним доступ. Плюс отдельная БД. То есть по факту у вас в Кубере будет только php + веб сервер. Файлы отдельно, БД отдельно. Всё это тоже должно быть отказоустойчивым, чтобы в кубере был какой-то смысл, кроме масштабирования нагрузки на веб сервер.
1️⃣ В Bitrix надо обязательно включать встроенное кэширование и как-то это разруливать между подами.

Тем не менее, Bitrix в Kubernetes запускают. Есть аутсорсеры, которые предлагают эту услугу. Каждый костылит что-то своё, но в общем и целом делают примерно следующее:
Файлы отправляют в S3 или Ceph.
Кэш можно хранить в Memcached, либо в файлах, возможно локально на каждом поде или где-то в общем хранилище, но это медленнее.
Сессии можно в Mysql убрать, но это медленно, либо в тот же Memcached.
Самое трудное это разобраться с возможностью изменений исходников через админку. Тут нужны какие-то свои костыли, которые после каждого локального изменения файлов, будут коммитить и пушить изменения в общий git и оттуда раскатывать по остальным подам. Можно административно запретить кому-то лазить по админке с целью изменения исходников, но обновлять всё равно как-то надо движок. А он тоже обновляется через панель управления. Либо где-то вовне это делать, но хочется тестировать тут же, где идёт работа.

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

Когда в итоге будет оправдан запуск Bitrix в Kubernetes? Посчитать не трудно. Минимальные прикидки по железу:
- 3-4 сервера под сам Кубер в минимальном наборе
- 3 сервера под файловый кластер
- 3 сервера под кластер БД
Если серверов меньше, то ни о какой отказоустойчивости речи быть не может. Сюда ещё добавляем 1-2 сервера под хранение логов, мониторинг, ci/cd и git. Либо всё это покупаем как сервис у облачных провайдеров.

У кого-то есть опыт запуска и обслуживания Bitrix в Kubernetes?

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

Были планы купить готовое железо под файловое хранилище, но сейчас нет такой возможности. Есть 4 обычных сервера на SSD дисках. На каждом нужно организовать максимально быстрое и надёжное локальное файловое хранилище под разные нужды. Каким образом это реализовать? Думал одно время о создании LVM на каждом сервере, выделении LV под каждую задачу, затем конфигурации NFS, SMB. Посоветуйте, пожалуйста, что лучше: собирать вручную raid+LVM+xfs+nfs/smb. Или лучше поставить FreeNAS, или что то ещё?

Я бы в этом случае сделал RAID10 из SSD дисков. Если сервера с нормальными рейд контроллерами, то на их базе, если нет, то на базе MDADM. Дальше отталкиваться от конкретных задач и решать, будет там LVM или нет, какую файловую систему использовать. Вот заметка про разницу между EXT4 и XFS.

Уверен, кто-то посоветует настроить ZFS. Я бы в прод её не ставил без опыта эксплуатации. Судя по тому, какой вопрос задан, я вижу, что у задающего явно нет опыта в этом деле. Я бы не рисковал. Либо поставил только на один сервер и потренировался.

Если есть возможность спокойно поучиться и погонять тесты, есть вариант развернуть там CEPH, при условии, что есть сетевые карты 10G. Тогда можно сделать общее отказоустойчивое файловое хранилище на всех серверах. 4 штуки как раз хорошо подходят под такую задачу. Если что, вот статья по настройке ceph. Установить и настроить не сложно, но для эксплуатации нужен опыт, поэтому сначала изучение, всевозможные тесты и только потом внедрение.

Готовые сборки типа FreeNAS я бы сразу отметал. Это ещё подходит в формате домашнего NAS или одиночного где-то в небольшой компании. Ставить Freenas на 4 сервера в прод я бы не стал. Лучше всё внимательно вручную настроить. Работать будет надёжнее, заодно приобретётся опыт и развитие. Freenas и им подобное это тупиковый путь развития админа. Я бы не шёл по нему.

А вы что посоветуете? Возможно автор появится в комментариях и даст дополнения к своему вопросу.

#вопрос_читателя
Администрирование сервисов от @Selectel

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

Какие задачи можем взять на себя:

◽️Внедрим CI/CD и другие DevOps-практики. Выстроим процессы обновлений ваших систем и развертывания приложений благодаря непрерывной доставки CI/CD и будем их сопровождать.
◽️Поддержим ваши системы по SLA. Будем следить за системами круглосуточно: проводить настройку сервисов, проверять доступность ресурсов и параметры резервного копирования. 
◽️Обеспечим информационную безопасность. Настроим политики безопасности и доступ к системам. Будем регулярно проверять их на уязвимости и обновлять защиту. По согласованию обновим системное ПО и пакеты безопасности.

Оставляйте заявку и передайте Selectel задачи по настройке и обслуживанию IT-инфраструктуры: https://slc.tl/y377x

#реклама