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

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

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
Telegram-канал "MikroTik сэнсэй"

Многие знают Дмитрия Скоромнова. Практикующего инженера и официального тренера MikroTik.

У Дмитрия есть Telegram-канал, на котором он пишет про оборудование MikroTik. На канале публикуется много практической информации, которой нет в официальной документации вендора.

Некоторые из постов:

🔥 Мракобесие при настройке файрвола на MikroTik.
Почему 802.1ac Wave 2 работает только на бумаге.
Что делать, если Netinstall не видит устройство MikroTik.
Алгоритм переустановки RouterOS.
Встроенный в RouterOS механизм облачного резервного копирования.
Четыре функции кнопки Reset.
🔥 SFP-модуль на котором можно воду кипятить.

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

❗️Автор читает комментарии и участвует в обсуждениях. У вас есть возможность получить ответ на свой вопрос.

#реклама
Я знаю, что меня читают владельцы Telegram каналов. Хочу сделать предостережение, так как участились случаи попыток угона каналов. Ко мне в течении недели 2 раза писали мошенники. И я лично знаю как минимум двоих владельцев IT каналов, которые их лишились из-за мошенников.

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

Палятся мошенники на мелочах, которые сразу видны человеку, который постоянно общается с рекламщиками. В первом случае мне предложили купить сразу 3 поста с публикацией через день для компании Skillbox. И текст рекламы один и тот же. Рекламодатели так никогда не делают. Кстати, именно менеджерами Skillbox почему-то представляются мошенники. Наверно считается, что это какая-то очень надёжная компания, или хз как это понимать. Я вообще им, как и Geekbrains, в рекламе отказываю уже давно, так как на них много негатива. Для оплаты они просят вас заполнить анкету на скам-сайте, через который уводят TG аккаунт.

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

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

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

#разное
​​Мне часто приходится поддерживать сайты на популярном в РФ движке Bitrix. Решил написать небольшой список настроек, на которые стоит обратить внимание при настройке рабочего окружения и самого сайта. Список основан на личном опыте и не претендует на истину.

📌 Сбалансируйте потребление оперативной памяти на сервере, чтобы её всегда хватало. Bitrix тяжёлый и неповоротливый движок. Его часто запускают на apache с php в качестве бэкенда. Так что надо как минимум между MySQL и Apache разделить ресурсы, чтобы в пике они не съели их все. У меня есть статья на эту тему.

📌 Обратите внимание на настройки php: max_execution_time и memory_limit. В Bitrix много тяжёлых запросов, особенно если настроены обмены с внешними ресурсами. Часто эти параметры приходится увеличивать до высоких значений, с которыми в других движках вам вряд ли приходилось иметь дело (например max_execution_time = 300 и memory_limit = 512M).

📌 Когда разворачиваете новый сайт, обязательно выбирайте кодировку UTF8. До сих пор можно выбрать CP1251. Много старых сайтов встречал с этой кодировкой. Они нормально работают, но я всё же рекомендую конвертнуть их в UTF8. Вот статья с инструкцией и скриптом.

📌 В настройках Главного модуля есть параметр "Использовать горячие клавиши". Чаще всего их никто не использует, лучше отключить. Под них таблица в базе b_hot_keys может разрастаться до огромных значений.

📌 Иногда разработчики включают логирование SQL запросов и забывают их отключить. Все запросы пишутся в базу. Она растёт с огромной скоростью. Отключить: Настройки ⇨ Настройки продукта ⇨ Настройки модулей ⇨ Монитор производительности ⇨ Вести журнал SQL запросов ⇨ Галочку снять.

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

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

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

📌 Никогда не обновляйте Bitrix сразу на проде. Всегда тестируйте обновления. Очень часто что-то ломается. Особенно если есть интеграции и обмены.

📌 Внимательно заполните gitignore. На сайте очень много того, что в git грузить не надо. Тут нет универсальных советов, так как зависит от конкретного сайта. В поиске много информации по этой теме, по аналогии не проблема сделать. Главное не забыть.

📌 Отправку почты битриксом можно настроить через утилиту msmtp (быстрее и проще, идёт в комплекте с bitrixenv), либо через postfix (чуть сложнее и дольше настройка). Если использовать postfix, то проще работать с логами, делать мониторинг, подсчёт статистики и т.д., так как это стандартное решение.

📌 Хороший CI/CD для Bitrix сделать трудно. Я не умею, так как не работал с большими проектами, а на маленьких всё по понятиям разработчиков делается. Один из вариантов, с которым работал, описывал в статье. Вот ещё пример с сайта самого битрикса.

📌 Bitrix успешно запускают в Kubernetes, хотя это не очень просто. Я видел выступление на конференции по этой теме. В общих чертах, как это может выглядеть описано в обзорной заметке от southbridge (аутсорсер).

В целом, всё, из того, что вспомнил, когда писал заметку. Тому, кто не работает с Битриксом, она не нужна. А если работаете или планируете, имеет смысл сохранить.

#bitrix
This media is not supported in your browser
VIEW IN TELEGRAM
Как построить карьеру в IT и не выгореть? А что вообще происходит в индустрии?

Об этом пишет Outlines Tech — это тг-канал одноименной IT-компании, где эксперты делятся лайфхаками, новостями и личным опытом.

Подборка постов:
🔸Отделения будущего с Face ID: что такое «умный» банковский офис

🔸Лайфхаки по контролю задач в условиях неопределённости

🔸Как IT-специалисту составить резюме и не облажаться

🔸Что делать, если работа раздражает, а силы на исходе

🔸Как отказаться от работы мечты и стать счастливее: история тестировщика

А ещё в Outlines Tech найдете классные вакансии! Подписывайтесь: @outlines_tech

#реклама
У меня ситуация на днях возникла, когда подвис одиночный гипервизор у клиента. Причём подвис очень странно. На нём отвалился zabbix-agent и не устанавливается соединение по SSH, хотя порт открыт и принимает запросы, но не отвечает. Подключение отваливается по таймауту. При этом все виртуалки нормально работают. Частично работает веб интерфейс proxmox, но некоторые разделы ничего не показывают.

Сбор логов в данном случае не настроен и его очень не хватает. Вообще, без сбора логов невозможно считать мониторинг полноценным. Расследовать инциденты неудобно, а некоторые и невозможно. Тут теперь какие варианты - либо какая-то софтовая проблема и поможет перезагрузка. Либо с железом какие-то проблемы и сервер из ребута уже не выйдет. Доступа к консоли нет, надо KVM заказывать.

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

Пока разбирался с этой темой, параллельно давно открыта вкладка в браузере на тему сопоставления событий Zabbix и логов различных служб. Прочитал её и понял, что там описывается продукт MONQ, про который я не так давно писал. В самом обзоре я не сделал акцента на том, что система умеет сопоставлять события из мониторинга с событиями из логов. А это очень полезный функционал. И не так много софта, на базе которого это можно сделать.

У кого-то есть подобные связки? На базе чего всё настроено? У меня стандартно логи собирает ELK, мониторинг в Zabbix. Так что никакого сопоставления нет, хожу руками туда-сюда и сопоставляю.

#мониторинг
​​В одной из заметок затрагивал тему создания скриншотов сайтов через консоль сервера. Мне посоветовали для этого готовый Docker контейнерна базе Google Puppeteer - Screenshoter. Я его попробовал. Сделано очень удобно и функционально.

Идея инструмента следующая - запускаете в Docker контейнере софт, который слушает tcp порт. Шлём к нему на API запросы с параметрами и получаем результат. Самый простой случай выглядит вот так:
# docker run -d --restart always \
-p 8080:8080 \
--name screenshoter \
mingalevme/screenshoter

После запуска, можно сделать запрос к сервису:
# curl "http://localhost:8080/screenshot?url=https://ya.ru" > ~/scrshot.png
Скриншот сайта будет в файле ~/scrshot.png.

Сервис может принимать множество параметров. Все они описаны в репозитории. Вот пример с указанием расширения экрана:
# curl "http://localhost:8080/screenshot?url=https://ya.ru&viewport-width=1920&viewport-height=1080" > ~/scrshot.png

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

Я немного покопался в репозитории и увидел там docker-compose.yml, где в составе помимо контейнера с Screenshoter есть Nginx со своим конфигом, который все запросы проксирует скриншотеру. Не сразу понял, зачем это вообще нужно, но в итоге запустил всё у себя и разобрался. Можно поднять эти контейнеры и обращаясь к nginx через браузер, видеть скриншот сразу в нём же.

Запустил вот такой compose:

version: "3.1"

services:

 screenshoter-app:
  image: mingalevme/screenshoter
  restart: always

 screenshoter-nginx:
  image: nginx:alpine
  ports:
   - "80:80"
  volumes:
   - ./screenshoter.nginx.conf:/etc/nginx/conf.d/default.conf
   - "/var/log/nginx:/var/log/nginx"
   - "/var/cache/nginx:/var/cache/nginx"
   - "/dev/null:/var/cache/screenshoter"
  depends_on:
   - screenshoter-app

После этого в браузере перешёл по url:
http://10.20.1.16/screenshot?url=https://ya.ru&viewport-width=1920&viewport-height=1080
и получил в браузере скриншот сайта.

У Screenshoter много параметров. Он умеет в том числе и скролить. Можно упростить и автоматизировать создание скриншотов. Сервис очень понравился и показался полезным, так что решил рассказать вам о нём. Запустив его у себя, можно упростить и какое-то личное применение. Например, настроить шаблон для скриншотов сайтов и использовать его - какую-то статью заскриншотил, перевёл в pdf и сохранил в директории, которая с Яндекс.Диском синхронизируется.

Исходники - https://github.com/mingalevme/screenshoter
DockerHub - https://hub.docker.com/r/mingalevme/screenshoter/

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

Вот несколько нестандартных примеров, которые приходилось реализовывать:
- выбор релей сервера для пересылки сообщения в зависимости от адреса отправителя или домена (актуально для веб сервера, где много сайтов и каждый использует свой внешний сервер для отправки);
- запрет отправки почты на внешние домены, разрешена только локальная отправка внутри собственных доменов;
- автоматическое изменение темы письма или адреса отправителя для всей или выборочной почты;
- автоматическое удаление определённых писем при достижении ими разрешённого времени хранения.

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

Начал искать решение и очень быстро нашёл - postfwd. Очень гибкое решение с возможностью писать свои правила для отправки. В Debian пакет есть в стандартном репозитории. Указанная задача решается очень просто:
1. Устанавливаем postfwd:
# apt install postfwd
2. Включаем автозапуск в /etc/default/postfwd, рисуем простой конфиг с единственным правилом в /etc/postfix/postfwd.cf:
id=R01; action=rcpt(sender/50/3600/REJECT sorry, max 50 emails per hour for sender $$sender exceeded)
При желании можно добавить предупреждение при совершённых 30-ти отправках в час:
id=R02; action=rate(sender/30/3600/WARN limit of 30 email per hour exceeded [$$ratecount hits])
Показал для примера, как выглядят правила. Большое количество примеров приведены в документации. По аналогии не трудно для себя писать правила. Возможности очень широкие.
3. Добавляем интеграцию в postfix через его механизм restrictions:
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10040
permit_mynetworks
permit_sasl_authenticated
...........................................
4. Запускаем postfwd, перечитываем конфиг postfix.

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

Cсылки на мои материалы по postfix:
- Настройка postfix + dovecot + mysql база + postfixadmin + roundcube + dkim
- Настройка SSL/TLS сертификатов Let's Encrypt в postfix и dovecot
- Защита почтового сервера postfix + dovecot с помощью fail2ban
- Перенос почтового сервера postfix
- Очистка и обслуживание почтовой базы postfix
- Мониторинг postfix в zabbix         

#postfix #mailserver
Анализ дисковой активности в Linux

Расскажу кратко, с помощью каких консольных инструментов можно всесторонне рассмотреть дисковую активность на сервере под управлением Linux.

Начнём издалека и посмотрим общую дисковую активность отдельного устройства. Для этого можно воспользоваться утилитой btrace из пакета blktrace (есть в стандартных репах)
# btrace -w 60 -a write /dev/mapper/rhel-root
В течении 60 секунд утилита будет анализировать дисковую активность процессов и потоков ядра. В завершении покажет сводную статистику.

Наглядный вывод статистики по дисковым устройствам в режиме реального времени есть у iostat из пакета sysstat (есть в репозиториях). Я предпочитаю вот такое отображение с использованием watch:
# watch -n 1 iostat -xk

Более детально в режиме реального времени нагрузку на диск отдельных приложений можно посмотреть с помощью iotop (есть в репозиториях). Простой запуск без параметров похож на обычный top, только про диски. Более наглядную информацию можно получить, запустив iotop с ключами:
# iotop -obPat

Ещё один вариант отображения активности процессов в режиме реального времени - pidstat. Она тоже из пакета sysstat. Запускаем с обновлением раз в секунду:
# pidstat -d 1
Видим активность всех процессов. Можем конкретизировать, указав один из них по его pid:
# pidstat -p PID -d 1

Двигаемся дальше и смотрим, в какие файлы производится запись с помощью fatrace (в deb дистрибутивах есть в репозиториях). Проверка очень простая и быстрая через анализ обращений к inotify.
# fatrace -f W
Можно записать всю файловую активность в лог файл и потом спокойно посмотреть:
# fatrace -t -s 60 -o ~/fatrace.log

Более детально разобраться с тем, что пишет процесс на диск можно с помощью strace, указав ему в качестве параметра PID процесса:
# strace -e trace=write -p PID

Напомню, что PID процесса или процессов можно узнать, например, вот так:
# pgrep mariadb
или так:
# ps ax | grep mariadb

Смотрим список открытых файлов в конкретной директории с помощью lsof:
# lsof +D /var/log

Приведённых стандартных инструментов достаточно, чтобы провести основной анализ. Я перечислю ещё несколько удобных инструментов, но их скорее всего придётся ставить вручную, минуя пакетный менеджер, что не очень удобно.
утилита iosnoop из пакета perf-tools, показывает много полезной информации, в том числе latency, чего не делают перечисленные выше утилиты
утилита biosnoop из пакета BPF Tools, показывает активность процессов, в том числе используемые сектора дисков и latency, в этом же пакете к дискам имеют отношения утилиты: biolatency, biotop, bitesize, ext4slower и подобные для других файловых систем.

#bash #perfomance
​​Хочу познакомить вас с интересным проектом, у которого вряд ли есть какое-то промышленное применение. Это скорее просто прикол или интересная фишка. Речь пойдёт о проекте 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
​​Онлайн-курс по сетевым технологиям

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

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

#реклама