Авторская информация о системном администрировании.
/var/spool/mail. Там создаётся файл для каждого системного пользователя, для которого было отправлено хотя бы одно письмо. Почта для root может складываться в файл root или другого пользователя, который был создан во время установки системы.
Узнать, куда точно отправляется почта для root, можно в файле с алиасами - /etc/aliases. В строке root: посте двоеточия будет указано, куда отправлять почту суперпользователя. Это может быть как обычный локальный пользователь:
root: user01
так и сам root:
root: root
Если вы хотите отправлять эту почту на какой-то внешний ящик, то можно его указать в алиасе:
root: [email protected]
После редактирования алиасов, нужно обновить локальную базу данных с ними:
# newaliases
Для того, чтобы отправить почту, вы должны установить локальный почтовый клиент или сервер. Например, postfix, либо любой другой (exim, msmtp и т.д.). Без дополнительной настройки этот почтовый сервер будет пытаться самостоятельно отправить почту. Если не выполнить предварительно настройку DNS, то с большой долей вероятности отправленное письмо попадёт в спам. В целом, это не проблема, если письмо получаете вы сами. Сделаете исключающее правило и можно больше ничего не настраивать.
Сейчас всё чаще отправка почты блокируется хостерами. Разрешить отправку по 25 порту либо вообще невозможно, либо нужно написать в тех. поддержку и объяснять, зачем вам это нужно. В большинстве случаев для системной почты заниматься этим не имеет смысла. Лучше использовать какой-то сторонний сервер для доставки почты. Для этого вам нужно настроить локальный почтовый клиент (либо сервер, работающий как клиент) на работу через внешний сервер. Настройка будет зависеть от типа сервера, который вы установите.
У меня есть статья с примером настройки почтового сервера postfix для отправки системной почты через внешний сервер. Отдельно я рассмотрел вопрос отправки почты через почту Яндекса, где нужно учесть один важный нюанс. Адрес отправителя должен совпадать с логином в почтовой системе. Рассказываю, как в postfix его изменить, потому что по умолчанию отправка будет идти от локального пользователя сервера.
Реализаций отправки системной почты может быть много. Подойдёт любой локальный почтовый клиент или сервер с возможностью отправки через внешний сервер. Я всегда использую postfix, потому что умею его настраивать. Но у него не самая простая и очевидная настройка для таких задач. Проще взять msmtp. Там вся настройка в одном файле. Вот пример для Debian.
А вы как решаете вопрос с доставкой системной почты? Собираете её? В целом, там не так много полезной информации, которую прям обязательно нужно читать. Если есть система сбора логов и мониторинг, то всё самое важное в системном логе тоже будет. В основном эта почта интересна для контроля за задачами cron. Иногда можно почитать о новых пакетах, которые предлагают к обновлению. Больше не припомню чего-то реально полезного.
#mailserver #linux# pvcreate /dev/sdb2
# vgcreate vg_root /dev/sdb2
# lvcreate -n lv_root -l +100%FREE /dev/vg_root
Создал файловые системы:
# mkfs.xfs /dev/vg_root/lv_root
# mkfs.xfs /dev/sdb1
3️⃣ Смонтировал новые разделы и скопировал туда данные с текущих:
# mount /dev/vg_root/lv_root /mnt
# mount /dev/sdb1 /mnt/boot
# xfsdump -J - /dev/centos/root | xfsrestore -J - /mnt
# xfsdump -J - /dev/sda1 | xfsrestore -J - /mnt/boot
/dev/centos/root - текущий корневой логический раздел.
4️⃣ Зашёл в окружение chroot нового корня:
# for i in /proc/ /sys/ /dev/ /run/ ; do mount --bind $i /mnt/$i; done
# chroot /mnt/
Обновил загрузчик и заменил в текущем раздел centos/root на vg_root/lv_root.
# grub2-mkconfig -o /boot/grub2/grub.cfg
# mcedit /boot/grub2/grub.cfg
Руками сделал автозамену centos/root на vg_root/lv_root.
# grub2-install /dev/sdb
Также в /etc/fstab надо изменить UUID или имена устройств на новые. Раздел /boot лучше указать по UUID устройства /dev/sdb1, а корень как /dev/vg_root/lv_root.
После этого вышел из chroot и перезагрузил систему, отключив старый диск. У меня она не загрузилась, вывалившись в grub rescue. Я не понял, почему. Тем не менее, в grub rescue я указал раздел с /boot и вручную дал команду на загрузку. Система загрузилась. Уже в ней ещё раз сделал:
# grub2-install /dev/sdb
и после этого система стала нормально перезагружаться. Возможно где-то ошибся, когда с загрузчиком работал. Это не пошаговое руководство, потому что я его не отлаживал. Написал по памяти, когда уже закончил. Рассказал просто саму идею.
❗️Если будете повторять, то потренируйтесь сначала на тестовых виртуалках. Я подобные манипуляции делал много раз, на разных ОС, разделах и файловых системах, начиная ещё с Freebsd (моя самая первая статья на сайте). Идея везде примерно одинаковая, разница в нюансах.
Нужно более ли менее понимать, что делать, если система совсем не грузится, если грузится grub, но не загружается ОС, если загружается ОС, но падает в emergency mode. В Linux в плане загрузки всё последовательно и чаще всего понятно, где проблема. Это не Windows, которая если падает при загрузке, то начинается какое-то шаманство, чтобы понять, в чём проблема.
#linux# apt install python3-pip
# pip3 install locust
Теперь надо подготовить сценарий для тестирования. В самом простом случае он выглядит вот так:
from locust import HttpUser, task
class TestUser(HttpUser):
@task
def test01(self):
self.client.get("/")
self.client.get("/forum")
self.client.get("/about")
Здесь мы просто шлём запросы на три урла: /, /forum, /about. Запускаем locust:
# locust -f locustfile.py
И отправляемся в браузер для запуска теста с указанными параметрами и просмотра статистики - http://0.0.0.0:8089.
В документации подробно разобран формат файлов сценария с готовыми примерами. А так как программа известная, в гугле легко найти много готовых примеров с авторизацией, куками, задержками, возрастанием нагрузки и т.д.
Locust в первую очередь хорош для автоматизации тестирования, во-вторую, для мониторинга. Для него есть готовый exporter для Prometheus. Вы можете регулярно запускать тесты и мониторить результаты. Вот хороший пример по этой теме (тесты api и отправка результатов в prometheus).
Аналоги Locust:
◽ artillery.io
◽ k6
◽ yandex.tank
◽ Taurus
⇨ Сайт / Исходники
#нагрузочное_тестирование# lsb_release -a
В Debian и Ubuntu по умолчанию обычно установлен пакет lsb-core, который содержит эту утилиту. В rpm дистрибутивах не всегда, поэтому там приходится проверять варианты:
# cat /etc/redhat-release
или
# cat /etc/os-release
Если не помогает ни то, ни другое, значит у вас какой-то специфичный дистрибутив и начать расследование стоит с команды uname.
# uanme -a
Она покажет архитектуру процессора и версию ядра. В ней же может быть и упоминание названия системы, например, Debian, но без указания конкретной версии, что не удобно, поэтому сначала использую lsb_release.
На Centos и её клонах по выводу uname -a можно по косвенным признаками понять, какая конкретно система используется. Например, в Centos 7 версия ядра Linux будет примерно такая:
3.10.0-1160.76.1.el7.x86_64
что намекает на 7-ю версию Centos.
А в Oracle Linux 8:
5.4.17-2136.308.9.el8uek.x86_64
что тоже может указывать на версию системы, хотя тут уже становится трудно ориентироваться. Лично я не знаю, что значит дополнение uek в имени ядра.
А вы как определяете версию Linux? Может есть способ проще и быстрее? И универсальный для всех систем.
#bash #linux