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
​​Рекомендую очень простой и удобный портал для управления запущенными сервисами на Linux — Runtipi. Он позиционирует себя для домашнего использования, что подтверждает набор сервисов. Позволяет очень просто и быстро запускать приложения. А тем, кто с Linux на ВЫ, позволит без особых усилий пощупать руками его возможности в плане использования готовых сервисов.

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

Я развернул у себя и запустил, попробовал. Реально удобно. Под капотом обычный Docker и контейнеры, которые пишет не сам автор, а использует готовые либо от разработчиков, либо от каких-то доверенных издателей, типа linuxserver.io.

Список поддерживаемых приложений можно посмотреть на отдельной странице. Сейчас их там 132 штуки. Некоторые примеры, про которые я писал: Adguard, Pi-Hole, Duplicati, File Browser, Gitea, Grafana, Joplin Server, Minio, n8n, Nextcloud, Portainer, Revolt Chat, Syncthing, Uptime Kuma, ZeroTier, Wireguard.

Все эти приложения легко развернуть, попробовать, удалить и т.д. Я хотел быстренько попробовать клиента для ChatGPT (там есть для него приложение). К сожалению, доступ к API у меня был заблокирован. Возвращает 404 ошибку. Похоже надо прокси использовать. Подскажите, кто как работает с ChatGPT с территории РФ.

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

#docker #linux
Я неоднократно получал вопрос от тех, кто настраивал почтовый сервер по моей статье, о том, как закрыть почтовые алиасы от спама. Поясню, о чём идёт речь.

Допустим, у вас есть почтовый алиас all@firma.ru, куда входят все сотрудники компании. Их может быть очень много. Подобные алиасы удобно использовать для рассылок внутри компании. Обычно делаю общий алиас для всей компании и для каждого отдела. Остальное уже по потребностям.

Подобные адреса очень удобно использовать спамерам. Отправил одно письмо на all@firma.ru и его получили все сотрудники. Логично было бы ограничить возможность отправки на эти адреса. Я в своё время сам разбирал эту задачу и придумал решение. Нигде его не записал, поэтому каждый раз приходилось вспоминать, как я делал. Так что решил хотя бы заметкой оформить.

Чем мне нравится postfix, так это своей гибкостью и механизмом restrictions, на основе которых можно много всего придумать. Я задачу решил так. Взял параметр smtpd_recipient_restrictions и добавил туда дополнительную проверку:

.....................................
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access hash:/etc/postfix/maillist_access
..................................
Это строки из конфигурационного файла postfix main.cf. Текстовый файл maillist_access выглядит примерно так:
all@firma.ru REJECT
Одна строка, один адрес.

Суть тут в чём. Мы в ограничениях получателя указываем, что люди из mynetworks и sasl_authenticated не имеют никаких ограничений на отправку. Это все люди из белых списков локальных сетей (не рекомендую их использовать, только в крайних случаях) и прошедшие аутентификацию, то есть наши сотрудники и пользователи почтового сервера. А все остальные попадают на проверку check_recipient_access, где в файле указано действие для получателя all@firma.ru — давать REJECT. Вот и всё.

Основное неудобство в том, что файл maillist_access придётся заполнять вручную. Если это критично, то можно и автоматизировать каким-то образом. Например, настроить проверку из базы mysql, а там завести какую-то отдельную таблицу для таких алиасов, в которую по какому-то признаку скрипт будет перетаскивать записи из общей таблицы алиасов. Например, по наличию какого-то слова в описании. У меня не было задачи с автоматизацией, поэтому не занимался вопросом. Массовых алиасов не так много, можно и вручную один раз составить список.

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

#postfix #mailserver
​​Я регулярно читаю рассылку от компании Onlyoffice. Кто про них не знает, поясню, что это компания с российскими корнями, которая разработала собственный движок для работы с документами онлайн, а также платформу для совместной работы. Яндекс в своих онлайн документах использует их движок. Также у них есть бесплатные десктопные редакторы, совместимые с документами Microsoft Office.

У них активно ведётся доработка, обновление продуктов, а также выпуск новых. Например, недавно появился сервис DocSpace (selfhosted версии пока нет, но обещают) для создания комнат с набором документов для совместной работы, доступ к которым можно настраивать.

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

Сразу приведу ссылки, чтобы вы могли сами посмотреть, о чём идёт речь:
Страничка продукта ONLYOFFICE Workspace Community
Инструкции по ручной установке и запуску в Docker
Общая инструкция по установке ONLYOFFICE Workspace

Можете сами оценить ссылки с инструкциями. Там сходу как-то трудно понять, что тебе надо использовать, когда ты хочешь запустить у себя бесплатную версию. Так что если хотите попробовать портал для групповой работы с онлайн редактором документов, следуйте простой инструкции:
# wget https://download.onlyoffice.com/install/workspace-install.sh
# bash workspace-install.sh
На вопрос установки через Docker ответьте утвердительно, а на запрос установки почтового сервера ответьте отказом. В общем случае не рекомендую ставить почтовый сервер в составе Workspace, так как в этом нет большого смысла. Лучше поднять его отдельно или использовать внешний сервер. А в Workspace можно подключать ящики по imap и отправлять по smtp. Там полноценный веб клиент есть.

❗️Основное ограничение community версии портала — 20 одновременных подключений к серверу работы с документами. Общее количество пользователей не ограничено. Достаточно солидный запас. Коллектив в 40-50 человек может спокойно работать с этим сервером, если будет закрывать документы, когда они не нужны.

После установки идёте по IP адресу сервера и выполняете начальную настройку. Если в процессе тестирования поймёте, что продукт вам подходит, тогда уже можно более детально разобраться в установке: поменять все дефолтные учётки в скриптах, вынести отдельные директории на нужные диски и т.д. Есть возможность разворачивать продукт через deb пакеты, но я не рекомендую. Лучше в Docker. Это надёжнее и проще в обновлении. У onlyoffice куча зависимостей и поддерживать всё это довольно хлопотно.

Также в прод рекомендую ставить без TLS, а шифрование настроить на Nginx в режиме proxy_pass. Так тоже проще настраивать и потом управлять доступом.

У меня есть статья Установка и настройка Onlyoffice. Она сильно устарела. Когда писал её, продукт ONLYOFFICE Workspace, который актуален сейчас, назывался по-другому — ONLYOFFICE Community Server. В названиях пакетов и репозиториях сохранилось это название, что дополнительно добавляет путаницы.

Из бесплатных редакторов документов ONLYOFFICE мне нравится больше всего. Я его успешно использую уже лет 5-6. Сейчас есть 2 портала в управлении. Так что можно задавать конкретные вопросы, если что-то интересует.

#onlyoffice #docs
У меня на канале было много заметок на тему Help Desk систем. Я рассматривал в основном бесплатные продукты. При этом в комментариях не раз видел упоминание и советы посмотреть Okdesk. Причём не только у себя, но и в других каналах.

Не знаю, сколько времени я бы откладывал знакомство, но разработчики сами на меня вышли и предложили написать обзор в виде полноценной статьи. Я согласился, написал и предлагаю вам познакомиться:

Обзор Okdesk: удобная help desk система с широкими возможностями

Статья в основном обзорная, так как сервис продаётся по подписке (saas). Запустить у себя в работу и проверить мне банально негде. Я изучил личный кабинет, описание, документацию. На основе этого написал статью.

Основные возможности системы:
многофункциональная тикет-система (мультиканальный приём заявок, клиентский портал, мобильное приложение, API и т.д.)
автоматизация процессов (назначение ответственных, чек-листы для заявок, парсинг email и т.д.)
модуль CRM (база клиентов, договоров, оплат и т.д.)
аналитика и отчёты (десятки готовых отчётов, интеграция с Power BI и Яндекс Data Lens)
учёт договоров, платежей, стоимости работ
шаблоны документов и автозаполнение
календарное планирование
учёт трудозатрат

Okdesk — отличное решение для ИТ-аутсорсинговых компаний. Изначально под неё она и создавалась. Но сейчас может быть адаптирована и под другие отрасли: собственный ИТ отдел компании, техническая поддержка продукта, сервиса и т.д.

Моё краткое резюме такое. Okdesk предлагает удобный сервис с простым, интуитивно понятным интерфейсом и очень широкими возможностями. Авторы программы — разработчики больших, корпоративных продуктов для решения задач технической поддержки. Весь свой опыт они перенесли в свой сервис, который разработали с нуля. Из-за гибкой ценовой политики этот продукт доступен малому и среднему бизнесу. Стартовый тариф - 6000 р. в месяц. За эти деньги вы получите удобную Help Desk систему под ключ для 5 сотрудников техподдержки.

#helpdesk #отечественное
​​В нашем IT сообществе до сих пор популярен миф на тему того, что Astra Linux это какая-то поделка на базе Debian с переклеенными шильдиками и устаревшими пакетами. Я сам хоть и не использую нигде Астру, но подобное слушать не люблю, потому что это неправда. Сейчас поясню на пальцах, что такое ОС Astra Linux.

Сейчас существует только один дистрибутив Астры - Astra Linux Special Edition. У него есть несколько релизов, в названиях которых присутствуют города России: Орёл, Воронеж, Смоленск. Они отличаются наличием сертификации и системы мандатного управления доступом. В Воронеже и Смоленске она есть. Что это за система?

Институт системного программирования им. В.П. Иванникова Российской академии наук (ИСП РАН) разработал мандатную сущностно-ролевую модель управления доступом и информационными потоками в ОС семейства Linux. Назвал её МРОСЛ ДП-модель. Она описана на языке формального метода Event-B. Программная реализация модели называется PARSEC. Она используется в Astra Linux Special Edition. PARSEC — это условно аналог AppArmor и SELinux, которые реализуют другие математические модели. Подробное описание и сравнение PARSEC, AppArmor и SELinux можно почитать в статье на хабре.

Для работы с системой PARSEC весь софт патчится для поддержки мандатного доступа. То есть всё, что есть в репозиториях Астры. После осознания этого становится понятно, зачем им своё графическое окружение Fly. Его написали для того, чтобы не зависеть от других продуктов. Регулярно патчить Gnome или KDE очень трудозатратно. Также становится понятно, почему такой устаревший софт в репозиториях. Регулярное обновление требует больших ресурсов. Разработчики астры выполняют его по своим регламентам с некоторой периодичностью.

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

#linux #отечественное
Дошли наконец-то руки проверить обновление Proxmox VE с 7 на 8-ю версию. Написал сразу статью, так как серверов таких много, обновлять рано или поздно придётся.

https://serveradmin.ru/obnovlenie-proxmox-7-do-8

Нюансов вообще никаких нет. Всё проходит штатно. Обращаю внимание только на один момент. Я и сам много раз сталкивался, и меня в комментариях постоянно спрашивали. Если увидите во время обновления ошибку:

Upgrade wants to remove package 'proxmox-ve'

То не пугайтесь. Она возникает у тех, кто накатывал Proxmox поверх Debian. Я часто это делаю, чтобы поставить гипервизор на mdadm. Так что ошибку эту знаю. Она возникает из-за конфликта пакетов proxmox-ve и linux-image-amd64, который остаётся от Debian. Его нужно просто удалить. Этот пакет относится к ядру Linux, а у Proxmox VE он свой, поэтому оригинальный не нужен.

# apt remove linux-image-amd64

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

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

#proxmox
​​▶️ Для тех, кто не в курсе, расскажу, что на официальном канале дистрибутива SUSE есть классная подборка пародийных музыкальных клипов очень хорошего качества. Вот весь плейлист:

https://www.youtube.com/watch?v=Z9pCb110s7M&list=PL6sYHytyKN2-X93TurF3JptW8qSVm0DzA&index=1

Клипы реально классные, как по видеоряду, так и по музыке, содержанию. Я пару лет назад делал про них заметку. С тех пор клипов стало заметно больше. Они регулярно их выпускают. К сожалению, субъективно кажется, что чем позднее клипы, тем они хуже. Так что если будете слушать, начинайте с самых старых. Хотя недавний 🔥Are You Ready for Rancher прикольный.

🔝Мои самые любимые: Linus Said и SUSE. Yes Please.

Хороший тематический проект. Аналогов я даже и не знаю.

#музыка
▶️ Для новичков в системном администрировании, а также для тех, кто думает заняться этой темой, рекомендую интересное видео:

1.5 Года работы Системным Администратором | Что это такое, и как им стать?

Автор на удивление просто и чётко разложил по полочкам особенности работы начинающего сисадмина. Как я понял, он сам за 1,5 года прошёл этот путь с нуля до 2-й линии техподдержки. И рассказал о своём опыте.

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

У автора не ИТ канал. И просмотров там нет, кроме этого ролика, который судя по всему хорошо заходит смотрящим. Мне он в рекомендации попал и привлёк внимание. Смотреть можно на скорости 1,5 или 1,75.
​​Всем хорошего отдыха. Заметка будет не по теме канала, но, мне кажется, много кому может быть полезной. Речь пойдёт про пережатие самописных видеороликов.

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

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

Я скачал бесплатную программу HandBrake. Это open source. Запустил со стандартными настройками. Ничего особо не менял. Стоял стандартный пресет Fast 1080p30. На вкладке видео указал качество 27 и кодек H.264. Не стал выбирать H.265. Он вроде лучше жмёт, но пока не везде поддерживается. И начал прогонять все свои ролики через эти настройки. На выходе файлы в 5-7 раз меньше. На глаз разницы в картинке я вообще не вижу.

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

Домашний комп теперь круглые сутки жмёт видео. HandBrake позволяет создать очередь. Пережатие видео очень ресурсозатратный процесс. Тут я впервые ощутил, что неплохо бы заиметь железо помощнее. Хотя задача разовая, можно обойтись и без него.

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

#разное
​​На прошлой неделе рассказал про сервер для групповой работы Onlyoffice Workspace. Подобного рода бесплатных продуктов не так много. Из тех, что я описывал ранее, где есть совместная работа с документами:

- Nextcloud
- Onlyoffice Workspace
- Univention Corporate Server (UCS)

Последний не совсем то же самое, что первые два, но в целом на его базе можно собрать сервер для групповой работы. Про те, что уже не поддерживаются и не обновляются, не пишу (Kopano). Отдельно отмечу продукты, про которые я не писал: Group office, Grommunio.

То есть в этой нише выбирать особо не из чего. Наиболее популярен сейчас, как мне кажется, Nextcloud. Он и Onlyoffice Workspace выглядят наиболее функционально и современно. Для полноты картины я решил рассмотреть ещё один open source проект, который активно развивается и поддерживается —  EGroupware. Сразу скажу, что он мне не особо понравился. Но так как потратил время и получил информацию, поделюсь с вами.

Разворачивать у себя его не обязательно, так как есть Demo. Но я все равно развернул, чтобы посмотреть, как он устроен. Это сделать не трудно. Он хоть и работает на базе Docker, но при этом предоставляет свой репозиторий, где есть всё, что надо для установки. Сделано удобно. На Debian 11 поставил так:

# echo 'deb http://download.opensuse.org/repositories/server:/eGroupWare/Debian_11/ /' \
| tee /etc/apt/sources.list.d/server:eGroupWare.list
# wget -nv https://download.opensuse.org/repositories/server:eGroupWare/Debian_11/Release.key -O - \
| apt-key add - | tee /etc/apt/trusted.gpg.d/server:eGroupWare.asc
# apt update && apt install egroupware-docker

Разворачивается Nginx в качестве прокси на самом хосте. А всё остальное живёт в Docker. Все данные вынесены в volumes для удобного бэкапа. Учётку для подключения смотреть в файле /var/lib/egroupware/egroupware-docker-install.log.

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

В публичной демке можно посмотреть, как Collabora Online работает, загрузить туда свои файлы. Кстати, хорошая возможность потестировать этот продукт. Он сильно отличается от Onlyoffice Docs как внешним видом, так и архитектурой. Если у Onlyoffice обработка выполняет на клиенте, что нагружает его, но снимает нагрузку с сервера, то Collabora Online всё обрабатывает на сервере. Мне кажется, это скорее плохо, чем хорошо. Ресурсов сервера потребляет в разы больше, чем Onlyoffice.

Мне не понравился внешний вид EGroupware. По нему сразу видно, что продукт из глубокого прошло (написан, кстати, на php). Интерфейс хоть и пытались освежить, но выглядит, как по мне, всё равно старовато. Ну не хочется им пользоваться. Хотя по настройкам и возможностям там всё очень хорошо. Добротный перевод на русский. Не возникло желания поскорее переключиться на английский язык. Более того, в настройках можно добавить свой перевод любой фразы и тут же применить изменения. Я попробовал, очень удобно. Перевёл один из пунктов меню по своему.

Из приятных особенностей EGroupware отмечу интеграцию с Rocket.Chat. По описанию все выглядит круто, но подозреваю, что будет куча нюансов. Надо будет ещё и Jitsi разворачивать, чтобы были видеозвонки. Я на практике знаю, что вся эта связка не так уж просто настраивается и обслуживается, особенно если работает за NAT и нужен доступ из интернета. Тем не менее, функционально всё это выглядит неплохо.

Если подыскиваете себе бесплатный groupware, то посмотрите EGroupware. Внешний вид — субъективный фактор. Возможно вам он будет некритичен.

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

#groupware #docs
Недавно планово обновлял один из серверов 1С в связке с PostgreSQL, работающий на Debian. Сервер настроен примерно так же, как описано в моей статье:
⇨ Установка и настройка 1С на Debian с PostgreSQL
А обновление делал по этой статье:
⇨ Обновление Сервера 1С под Linux

Статьи в целом актуальны. Обновление сделал сначала на тестовом сервере клоне. Обновил, проверил работу сервера, баз. Всё нормально. Потом перешёл к рабочему. Обновил штатно, но начались проблемы.

Выражалось это в том, что раза в 2-3 возросла нагрузка по CPU. В целом, всё работало, но очень медленно. Через панель администрирования было видно большое количество фоновых задач. При этом они не висели, но выполнялись явно медленно, поэтому их было в списке аномально много. Больше обычного в несколько раз.

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

Остановил сервер 1С, перезапустил postgresql и запустил заново 1С сервер. Работа нормализовалась. Контроль соединений к базе данных — один из ключевых параметров, которые надо мониторить. Здесь это не было сделано. Пришло время настроить.

На что ещё обратить внимание при обновлении:
1️⃣ Периодически установщик 1С ставит дополнительные пакеты. Например, в этот раз заметил, что он установил Apache. Мне он был не нужен, удалил.
2️⃣ Проверьте, что вы точно удалили из автозапуска службу со старой версией 1С. Я в одном месте ошибся и удалил неправильно. Там немного отличаются команды. Например, остановка сервиса выполняется командой:
# systemctl stop srv1cv8-8.3.22.1709@.default
А удаление из автозапуска:
# systemctl disable srv1cv8-8.3.22.1709@.service
Окончания в названиях службы разные. Я в одном месте ошибся и после перезагрузки получил две запущенные службы 1С сервера. Старая запустилась в качестве сервера, а новая версия валилась в ошибки постоянно. Самое удивительное, что заметили это только через 3 дня, так как платформа 1С у клиентов автоматически использовала старую версию и никто не обратил на это внимание.

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

Случайно заметил, что один гипервизор Proxmox недавно перезагрузился. Причём это закрытый контур и доступ к нему сильно ограничен. Перезагрузка гипервизора всегда нештатная ситуация и просто так не делается. Более того, сам я редко их перезагружаю, только для необходимых обновлений. Ещё и время странное было — 2:17 ночи. Я сразу как-то напрягся.

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

Первым делом пошёл в консоль гипервизора и посмотрел системный лог /var/log/syslog. Там как минимум увидел, что перезагрузка была штатная. Но в логе вообще никаких намёков на то, почему она произошла и кто её инициировал. Просто начали останавливаться службы. Если перезагрузка аварийная, или инициирована нажатием кнопки питания, то об этом в логе информация есть. Значит тут причина не в этом.

Далее я сразу же посмотрел лог SSH соединений в /var/log/auth.log. Увидел там авторизацию рутом, причём с IP адреса VPN сети. Проверил IP адрес — мой. Тут я немного расслабился, но до сих пор не понимал, что происходит. Запустил ещё пару команд для информации о последней перезагрузке:
# who -b
     system boot 2023-07-14 02:17

# last -x | head
root   pts/0    10.20.140.6   Mon Jul 17 11:24  still logged in
runlevel (to lvl 5)  5.15.39-3-pve  Fri Jul 14 02:17  still running
reboot  system boot 5.15.39-3-pve  Fri Jul 14 02:17  still running
shutdown system down 5.15.39-3-pve  Fri Jul 14 02:16 - 02:17 (00:00)
root   pts/0    10.20.140.6   Fri Jul 14 00:58 - down  (01:17)

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

Глянул на сервере историю команд:
# history
 380 apt update
 381 apt upgrade
 382 w
 383 reboot

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

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

Ещё полезные команды по теме:
# journalctl --list-boots
# journalctl -b 0
# last reboot

#linux #ошибка
​​Некоторое время назад я рассказывал про программу Vector, с помощью которой удобно управлять потоками данных. Сейчас покажу, как с её помощью отправить логи Nginx в сервис axiom.co, где бесплатно можно хранить и обрабатывать до 500 ГБ в месяц. Это отличная возможность быстро собрать дашборд для анализа логов веб сервера.

Сначала зарегистрируйтесь в axiom.co. Там не нужны ни кредитки, ни какая-то ещё информация, кроме email. Сразу получите аккаунт с очень солидными бесплатными лимитами. Там же создайте новый Dataset и к нему API ключ. Это условный аналог облака Elastic на минималках. Я собственно, про него и хотел рассказать, но решил сразу на конкретном примере. К тому же у вектора не очень очевидная документация, особенно в плане преобразований. В своё время долго разбирался, как там парсинг json и grok фильтры правильно настраивать и описывать в конфигах.

Установите Vector любым удобным способом из документации. Настройте логи Nginx в формате json. Это можно не делать, но тогда понадобится grok фильтр для обработки access лога, что дольше и сложнее, чем использование сразу json. Рисуем конфиг для Vector.

[sources.nginx_access_logs]
type     = "file"
include   = ["/var/log/nginx/access.log"]

[transforms.nginx_access_logs_parsed]
type = "remap"
inputs = ["nginx_access_logs"]
source = '''
. = parse_json!(.message)
'''

[sinks.axiom]
inputs = ["nginx_access_logs_parsed"]
type = "axiom"
token = "xaat-36c1ff8f-447f-454e-99fd-abe804aeebf3"
dataset = "webserver"

У Vector есть готовая интеграция с axiom, что я и указал в sinks. Теперь запускайте Vector и идите в axiom.co. На вкладке Streams увидите свои логи в режиме реального времени.

Теперь можно зайти в Dashboards и собрать любой дашборд на основе данных лога Nginx. Чем более насыщенный лог, что настраивается в конфиге Nginx, тем больше данных для визуализации. Я для тестового сервера собрал дашборд буквально за 10 минут. Смотрите во вложении к заметке.

Такая вот заметка-инструкция получилась. Vector я уже рекомендовал, теперь советую посмотреть на описанный сервис. Меня никто не просил его рекламировать. Он просто удобный и есть функциональный бесплатный тарифный план. В него включены также 3 оповещения. Например, можно настроить, что если у вас в минуту будет больше 10 500-х ошибок сервера, прилетит оповещение. Или что-то ещё. Там большие возможности для насыщения, аггегации и других манипуляций с данными. Разобраться проще, чем в ELK или OpenSearch.

Для любителей grok, как я, покажу пример transforms в Vector своего формата логов Nginx. Вот пример формата лога, который я обычно использую, где есть всё, что мне надо:

  log_format full   '$remote_addr - $host [$time_local] "$request" '
        'request_length=$request_length '
        'status=$status bytes_sent=$bytes_sent '
        'body_bytes_sent=$body_bytes_sent '
        'referer=$http_referer '
        'user_agent="$http_user_agent" '
        'upstream_status=$upstream_status '
        'request_time=$request_time '
        'upstream_response_time=$upstream_response_time '
        'upstream_connect_time=$upstream_connect_time '
        'upstream_header_time=$upstream_header_time';

Вот grok фильтр в Vector:

[transforms.nginx_access_logs_parsed]
type = "remap"
inputs = ["nginx_access_logs"]
source = '''
. = parse_grok!(.message, "%{IPORHOST:remote_ip} - %{DATA:virt_host} \\[%{HTTPDATE:access_time}\\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" request_length=%{INT:request_length} status=%{INT:status} bytes_sent=%{INT:bytes_sent} body_bytes_sent=%{NUMBER:body_bytes_sent} referer=%{DATA:referer} user_agent=\"%{DATA:user_agent}\" upstream_status=%{DATA:upstream_status} request_time=%{NUMBER:request_time} upstream_response_time=%{DATA:upstream_response_time} upstream_connect_time=%{DATA:upstream_connect_time} upstream_header_time=%{DATA:upstream_header_time}")
'''

#nginx #logs #devops
​​По мотивам вчерашней заметки по поводу того, как я перепутал и перезагрузил не тот сервер. В комментариях много разных советов дали. Приведу 3 из них, которые мне показались наиболее простыми и эффективными.

1️⃣ Установить пакет molly-guard.
# apt install molly-guard
Он делает очень простую вещь. При попытке через консоль перезагрузить или выключить сервер, требует в качестве подтверждения ввести имя сервера. Я впервые услышал про эту утилиту. Надо её добавить в список софта, обязательного для установки. На мой взгляд это самый простой и эффективный способ себя подстраховать.

2️⃣ Разукрасить консоль серверов. К примеру, в гипервизорах раскрасить приветствие консоли в красный цвет. Для этого добавьте в .bashrc:
PS1='\e[31m\u@\h:\e[31m\W\e[0m\$ '
Получите стандартный терминал, только имя пользователя и сервера в нём будут написаны красным цветом.

3️⃣ Настройте разные цвета вкладок у вашего SSH клиента. Мой, кстати, это поддерживает. Для некоторых серверов я использовал разные цвета, но мне быстро надоело их назначать. У меня много SSH соединений (больше сотни), так что постоянно заниматься раскраской лениво, хотя и стоит это делать. Это не сложнее, чем ставить molly-guard или раскрашивать терминал. По идее, это наиболее простой способ, который не требует выполнять дополнительные действия на самом сервере.

#linux
​​И ещё одна заметка по мотивам прошлой, где я упоминал кодирование видео и программу HandBrake. Один человек, впечатлённый удобством HandBrake, создал веб интерфейс, очень похожий на интерфейс этой программы, только после выбора всех настроек, вы получаете консольную команду для ffmpeg. Что-то типа такого:

# ffmpeg -i movie.mp4 -c:v libx264 -b:v 3000 -c:a copy -pass 1 /dev/null \
&& ffmpeg -i movie.mp4 -c:v libx264 -b:v 3000 -c:a copy -pass 2 output.mp4 

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

Вы можете запустить его у себя, либо воспользоваться публичной веб версией:
https://alfg.dev/ffmpeg-commander

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

Кстати, если воспользоваться другим проектом этого автора — ffmpegd, можно через веб интерфейс ffmpeg-commander выполнять непосредственно кодирование.

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

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

Речь пойдёт про сервис ntfy.sh. Сразу покажу, как им пользоваться, чтобы было понятно, о чём идёт речь. Идёте по ссылке в веб приложение: https://ntfy.sh/app. Разрешаете ему отправлять уведомления. Подписываетесь на новую тему. После этого получаете ссылку вида: ntfy.sh/Stkclnoid6pLCpqU

Теперь идёте в любую консоль и отправляете с помощью curl себе уведомление:

# curl -d "Test Message" ntfy.sh/Stkclnoid6pLCpqU

Получаете оповещение от веб приложения. То же самое можно сделать, установив на смартфон приложение. Сервис бесплатный. При этом серверная часть open source. Вы можете развернуть сервер у себя и отправлять уведомления через него. Есть репозитории под все популярные системы. Инструкция прилагается.

Таким образом любой сервис, умеющий выполнять вебхуки, может без проблем отправлять уведомления вам на смартфон или десктоп. Например, в Zabbix достаточно в способах оповещений добавить новый с типом Webhook, в качестве скрипта использовать примерно следующее:

var response,
  payload,
  params = JSON.parse(value),
  wurl = params.URL,
  msg = params.Message,
  request = new CurlHttpRequest();
  request.AddHeader('Content-Type: text/plain');
  response = request.Post(wurl, msg);

В качестве URL укажите свою подписку в ntfy. Теперь это оповещение можно добавлять пользователям. Им будет приходить уведомление с текстом, который передаёт макрос {ALERT.MESSAGE}.

Либо совсем простой пример для какой-то операции в консоли:

# rsync -a /mnt/data user_backup@10.20.1.1:/backups/srv01 \
 && curl -H prio:low -d "SRV01 backup succeeded" ntfy.sh/Stkclnoid \
 || curl -H tags:warning -H prio:high -d "SRV01 backup failed" ntfy.sh/Stkclnoid

Если бэкап успешен, отправляем одно уведомление, если нет, то другое.

Такой вот простой и удобный сервис.

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

#мониоринг #zabbix #devops
​​Маленькая простая программа для выполнения одной задачи - рисование топологии локальной сети, построенной на коммутаторах с включённой службой snmp - LanTopoLog. Я её знаю очень давно, ещё в бытность работы в техподдержке.

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

Программа условно-бесплатная. Без лицензии через некоторое время после запуска, отключается часть возможностей. Для разового просмотра схемы не критично. А если захотите пользоваться постоянно, то придётся купить лицензию. Благо она бессрочная, включает все последующие обновления и стоит 50$ для физиков или 9070₽ для юр. лиц.

📌 Помимо построения схемы, имеет другие возможности:
может публиковать схему на веб сервере;
следит за доступностью узлов и может уведомлять об этом в telegram или email;
отображает скорость портов коммутаторов, утилизацию канала;
умеет экспортировать схему в Draw.io;
🔥отслеживает все MAC адреса подключенных к коммутаторам устройств, осуществляет поиск по ним.

Описание можно послушать от админа, который реально пользуется этой программой на работе: https://www.youtube.com/watch?v=Js8N70nmYIg Смотрел раньше все видео с канала этого админа, но он что-то забросил его.

Программа, кстати, от нашего соотечественника. До сих пор поддерживается и обновляется, хотя ей уже 17 лет.

Сайт

#network #отечественное
​​Напомню тем, кто не знает. У Grafana есть облачный сервис по мониторингу и сбору логов с бесплатным тарифным планом. Называется, как нетрудно догадаться - Grafana Cloud. Для регистрации не надо ничего, кроме адреса почты. Есть бесплатный тарифный план с комфортными ограничениями: 50 GB логов в месяц, 10k метрик.

Это отличный способ оценить все возможности системы. Например, хотите посмотреть, как работает мониторинг Linux хоста. Идёте в раздел Connections, добавляете новое соединение типа Linux Server. Открывается готовая инструкция по добавлению хоста:

1️⃣ Устанавливаете Grafana Agent: выбираете тип системы и архитектуру, создаёте API токен, копируете команду для установки агента с интегрированным токеном, запускаете её на хосте. Дожидаетесь установки, проверяете соединение.

2️⃣ Настраиваете интеграцию с облаком — добавляете в конфигурацию агента информацию по сбору метрик и логов. Всё, что необходимо добавить, копируете в готовом виде. Перезапускаете агента на хосте.

3️⃣ Устанавливаете необходимые дашборды. Достаточно жмакнуть на кнопку Install. Всё само установится.

4️⃣ Идёте в раздел Dashboards и смотрите необходимые панели, выбирая в выпадающем списке добавленный хост.

5️⃣ Для просмотра логов (он автоматом все подтягивает из journald и /var/log) идёте в раздел Explore, выбираете в выпадающем списке источник данных с окончанием -log и смотрите логи. Можно как текстовые логи из файлов смотреть, так и systemd с разбивкой на сервисы, уровни важности и т.д.

Таким образом в полуавтоматическом режиме можно добавить все поддерживаемые системы и сервисы: Docker, Nginx, MySQL, Redis, Ceph и т.д. Список огромный.

Grafana - это давно уже не только графики и дашборды, но и полноценная система мониторинга и сбора логов. И всё это в одном месте. Выглядит очень круто и удобно. Если честно, мне всё труднее и труднее объяснить кому-нибудь зачем ему Zabbix. Глядя на Графану, понимаешь, каким простым, красивым и удобным может быть мониторинг. Zabbix удерживает только безграничными возможностями привычного велосипедостроения. Если мониторить что-то типовое, то он давно уже не лучший вариант.

#мониторинг #grafana
На неделе попался забавный мем, который сохранил себе. Понимая, как работают некоторые информационные системы, приходится реально подстраховывать себя.

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

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

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

#мем
​​Недавно в новостях проскочила информация о сервисе windowsupdaterestored.com. Группа энтузиастов задалась целью восстановить работу системы обновления для Windows архивных моделей: 95, NT, 98, Millennium, 2000, XP, Server 2003, Vista. Сразу поясню, что это не новые обновления для старых систем. Это всё те же обновления, что выпускала Microsoft в прошлом, а сейчас просто закрыла сайты с обновлениями для этих систем.

Пока полная поддержка только до XP, то есть работают версии Windows Update v3.1 и v4. У меня есть виртуалка с Windosw XP. Решил попробовать на ней этот сервис. Для неё нужна версия Windows Update v5, поддержка которой ещё не полная. Нужно выполнить некоторые манипуляции на самой системе. Я немного повозился, почти всё получилось, служба заработала в итоге, но обновления так и не пошли. Надо подождать, когда доделают. Хотя на сайте есть ролик, где уже всё работает. Но у меня почему-то не получилось.

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

А так сайт прикольный. Прям старина. Мне нравится иногда загрузить старую систему и там потыкать. XP на современном железе в виртуалке просто летает. Так непривычно нажать на ярлык Internet Explorer, и он загружается мгновенно. Быстрее, чем современный браузер на современном компьютере. Хотя я помню, как IE раньше тормозил при первом запуске и меня это жутко раздражало.

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

#windows
Когда настраиваешь мониторинг на ненагруженных машинах, хочется дать какую-то среднюю нагрузку, чтобы посмотреть, как выглядят получившиеся графики и дашборды. Для стресс тестов есть специальные утилиты, типа stress. Но чаще всего не хочется что-то устанавливать для этого.

Для этих целей в Linux часто используют псевдоустройства /dev/urandom или /dev/zero, направляя куда-нибудь их вывод. Вот простой пример:

# while true; do dd if=/dev/urandom count=30M bs=1 \
| bzip2 -9 > /tmp/tempfile  ; rm -f /tmp/tempfile  ; done

Получилась универсальная нагрузка, которая идёт как на дисковую подсистему, так и на процессор. Изменяя размер файла (30M) и степень сжатия (-9) можно регулировать эту нагрузку. Чем больше размер файла, тем больше нагрузка на диск, чем больше уровень сжатия, тем больше нагрузка на процессор.

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

# sync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync

Увеличивая размер блока данных (1M) или количество этих блоков (1024) можно управлять характером нагрузки и итоговым объёмом записываемых файлов.

Если хотите нагрузить только CPU, то достаточно вот такой простой конструкции:

# dd if=/dev/zero of=/dev/null

Она загрузит только одно ядро. Для двух можно запустить их в паре:

# cpuload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; \
cpuload; read; pkill dd

Процессы запустятся в фоне, по нажатию Enter в консоли, завершатся. Если у вас нет pkill, используйте killall. Процессор нагрузить проще всего. Можно также использовать что-то типа такого:

# sha1sum /dev/zero

Это так же нагрузит одно ядро. Для нескольких, запускайте параллельно в фоне несколько процессов расчёта. Вот ещё один вариант нагрузки на 4 ядра с ограничением времени. В данном случае 10 секунд:

# seq 4 | xargs -P0 -n1 timeout 10 yes > /dev/null

Причём эта нагрузка будет в большей степени в пространстве ядра. А показанная выше с sha1sum в пространстве пользователя. Пример на 2 ядра:

# seq 2 | xargs -P0 -n1 timeout 10 sha1sum /dev/zero

Если убрать timeout, то нагрузка будет длиться до тех пор, пока вы сами её не остановите по Ctrl-C.

Для загрузки памяти в консоли быстрее всего воспользоваться python3:

# python3 -c 'a="a"*1024**3; input()'

Съели 1G памяти.

#bash #linux #terminal