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
​​Поделюсь простой и маленькой утилитой, которую я ставлю почти всегда по дефолту на сервера, которые настраиваю сам, наравне с screen, htop и mc. Речь пойдет об iftop - утилита для просмотра загруженности сетевого интерфейса. Она обычно присутствует в стандартных репозиториях linux дистрибутивов. Для Centos живет в epel.

С помощью iftop можно быстро через консоль оценить, кто и как загружает сеть на сервере. В какую сторону и какой трафик идет, по каким портам.

Наиболее частые ключи, которые использую, следующие:

iftop -i ens18 -n -P

Ключ n отключает резолв ip адресов, а P добавляет в вывод информацию о задействованных портах, i, понятное дело, сетевой интерфейс, который слушаем.

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

#утилита
​​Мне очень нравится утилита rsync для синхронизации файлов между Linux серверами. Очень долгое время с ее помощью я бэкапил и файловые сервера Windows, монтируя их по smb к любому linux серверу. А далее запускал локально rsync, копируя файлы с примонтированного диска. В таком режиме бэкап выполнялся медленно, а именно за скорость синхронизации я и предпочитаю rsync. Когда файлов на сервере сотни тысяч разница в скорости заметная.

Потом в какой-то момент попробовал установить и настроить rsync сервер напрямую в винде. Оказалось, что это сделать достаточно просто. Есть программа cwRsyncServer, с помощью которой можно запустить как службу rsync сервер на Windows.

Я не знаю историю этой программы. Не понятно, кто разработчик и где официальный сайт. Информация не гуглится. Много ссылок битых. Есть вот такая ссылка - https://itefix.net/cwrsync, но там программу предлагают купить.

У меня давно сохранен архив cwrsyncserver_4.1.0_installer.zip, который я использую в случае необходимости. Скачать его можно, например, вот тут. Ставится обычным инсталлятором, настройка такая же, как в Linux. Формат конфигов один в один, только пути другие.

Вот пример моего конфига для бэкапа двух файловых шар на винде:

uid = 0
gid = 0
use chroot = false
strict modes = false
hosts allow = 10.1.3.5 10.1.4.4
log file = rsyncd.log

[fp]
path = /cygdrive/e/final_projects
read only = true
transfer logging = yes

[documents]
path = /cygdrive/d/documents
read only = true
transfer logging = yes

Шары, соответственно, в директориях E:\final_projects и D:\documents. Авторизацию не настраиваю, ограничиваю просто по ip. Дополнительно на firewall имеет смысл ограничить доступ к порту rsync.

#утилита #backup
​​Существует любопытный инструмент для автоматизации выполнения и планирования задач - Rundeck. Эдакий продвинутый планировщик cron для большого количества задач. С его помощью можно управлять задачами на множестве узлов. Все управление работает через веб интерфейс.

Для того, чтобы быстро познакомиться и попробовать Rundeck, можно запустить его в докере.

docker run --name rundeck -e RUNDECK_GRAILS_URL=http://10.20.1.23:4440 -p 4440:4440 -v data:/home/rundeck/server/data rundeck/rundeck:3.3.10

Не забудьте поменять url на свой. Без его корректного указания работать веб интерфейс не будет, так как там работает редирект на этот url. Учетка по умолчанию admin / admin. Можно сразу заходить и пробовать, как работает эта штука.

Чтобы быстро понять принцип действия, рекомендую добавить новый проект. В нем создать job. В качестве ноды для установки выбрать локальный сервер. Добавить первый шаг для выполнения в виде какой-то bash команды, например df -h и запустить этот job. Увидите результат работы команды в виде консольного вывода в веб интерфейсе.

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

Если честно, я до конца не понял, где это может понадобиться сейчас. У меня сложилось впечатление, что это инструмент из прошлого, когда еще только начинали строить системы ci/cd. Сейчас мне кажется, эти велосипеды на bash скриптах заменили всякие Jenkins / Gitlab / Teamcity и т.д. Там в целом все то же самое можно делать, но с упором на разработку. А тут инструмент общего назначения. Например, чтобы дергать скрипты бэкапа в том случае, если нет единой системы.

Кто-нибудь использовал Rundeck? Какие задачи с его помощью решали?

#утилита #devops
​​Как быстро и просто проследить за сетевой активностью с помощью консоли Linux? Ранее я для этого предлагал использовать iftop. Но есть более функциональная программа - iptraf, которая живет в стандартных системных репозиториях. Так что с установкой нет проблем.

dnf install iptraf
apt install iptraf

Если нужна самая свежая версия, то придется собрать самостоятельно: https://github.com/iptraf-ng/iptraf-ng

dnf groupinstall "Development Tools"
dnf install ncurses-devel.x86_64
git clone https://github.com/iptraf-ng/iptraf-ng
cd iptraf-ng/
make

Далее запускаем:

./iptraf-ng

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

В итоге, наглядно оценить сетевую активность на сервере удобнее с iftop. А если нужно собрать лог за какой-то период и спокойно проанализировать, то удобнее использовать iptraf.

#утилита
​​Познакомился с любопытной утилитой, которая недавно вышла в свет. Первая альфа версия была в январе этого года. Речь идет о Zellij - https://zellij.dev. Опенсорсный продукт с репой на гитхабе https://github.com/zellij-org/zellij.

Она умеет в рамках одной ssh сессии открывать несколько панелей с командной строкой. Посмотреть, как это выглядит, можно тут - https://zellij.dev/screenshots/

Для запуска, достаточно скачать бинарник из релизов на github. Я немного потестил, в целом понравилось. То же самое привык делать с помощью отдельных сессий ssh в клиенте.

Из особенностей можно выделить:
 🔹 преднастройка с помощью yaml конфига
 🔹 поддержка плагинов

В будущем обещают сделать веб клиент для работы в консоли через браузери шаринг своей сессии зрителям.

#утилита
​​Вчера потестировал любопытную утилиту, которая умеет отправлять логи напрямую в Telegram. Называется Logram - https://github.com/mxseev/logram

Ставится и настраивается очень просто. Качаем deb или rpm пакет из репозитория и ставим на машину:

wget https://github.com/mxseev/logram/releases/download/v2.0.0/logram-2.0.0.amd64.deb
dpkg -i logram-2.0.0.amd64.deb

Далее редактируем конфиг /etc/logram.yaml. Я поменял только следующие строки:

telegram:
 token: <bot_token>
 chat_id: <id чата>

 filesystem:
  enabled: true
  entries:
   - /var/log/auth.log

С такой настройкой бот будет отправлять вам в чат все новые строки лога /var/log/auth.log

Остается только запустить его:

systemctl start logram

Быстро узнать id чата можно с помощью бота и logram. Добавьте вашего бота в чат и запустите в консоли:

logram echo_id -t <bot_token>
The chat ID of group "srvadmin_zabbix_group": -1001998787756

На Centos 7 у меня эта штука не завелась, ругнулась на неподходящую версию glibc:

/usr/bin/logram: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by /usr/bin/logram)

А вот на ubuntu 20 сразу заработала.

#утилита
​​Любопытный проект на github для совместной работы в консоли - TermPair.

https://github.com/cs01/termpair

Идея такая. Ты запускаешь у себя в консоли сервер:
termpair serve --port 8000

Дальше можно расшарить консоль:
termpair share --port 8000

Вы получите ссылку вида:
http://ip-server:8000/?terminal_id=fd96c0f8476872950e19c

Можно подключаться через браузер и смотреть, что происходит в консоли, либо управлять ей. Очевидно, что для доступа через интернет нужен либо белый ip, либо придётся пробрасывать порт через nat. Клиентов может подключиться сколько угодно.

Можно расшарить консоль и через внешний хост. Для этого надо будет воспользоваться каким-то внешним сервером. Например, вот так:
termpair share --host "https://chadsmith.dev/termpair/" --port 443

Сразу получите внешнюю ссылку и через браузер окажетесь в консоли.

Программа написана на python, так что поставить можно через pip:
pip install termpair

Перед установкой обновите pip до последней версии. У меня сначала не прошла установка из-за каких-то проблем с криптографией. Когда обновил pip, все прошло успешно.

Гифка с демонстрацией работы - https://raw.githubusercontent.com/cs01/termpair/master/termpair_browser.gif

#утилита
​​Есть в линуксе полезный архиватор - pigz (Parallel Implementation of GZip). На мой взгляд, он не очень известный. Редко его вижу где-то в статьях или чьих то скриптах. Сам я его использую постоянно. Главная его особенность - он жмёт всеми ядрами. Большинство привычных консольных архиваторов жмут только одним ядром. Когда архивируете большие объемы, разница в скорости огромная.

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

Одиночный файл:
pigz -c filename > /tmp/filename.gz
Распаковываем:
unpigz filename.gz

Либо сразу дамп базы:
pg_dump -U postgres base | pigz > /tmp/base.sql.gz

Жмём директорию:
tar cf - directory | pigz - > directory.tar.gz
Распаковываем:
cat directory.tar.gz | unpigz - | tar xf -

Жмём несколько файлов по маске:
find /data -type f -name *filemask* -exec pigz -c '{}' \;
Распаковываем:
find /data -type f -name *filemask.gz -exec unpigz '{}' \;

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

#утилита
​​Очень удобная и простая утилита наподобие top, только для пропускной способности сети - nethogs.

dnf install nethogs (живёт в epel)
apt install nethogs

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

Утилита очень удобна для того, чтобы быстро понять, кто конкретно нагружает сеть на сервере или вирутальной машине.

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

#утилита #сеть
​​Просматривал вчера в консоли большие дампы mysql с помощью утилиты less и подумал, что неплохо было бы о ней рассказать. Я её чаще всего использую, чтобы быстро посмотреть начало или конец какого-то объемного файла с текстовой информацией. Если файл небольшой (до 100 мб), то сразу открываю в mcedit или vi и смотрю там.

А вот если у вас дамп на пару гигов, к примеру, и хочется посмотреть, он вообще корректно завершился, то less очень подходит. Открываете файл, дальше жмёте shift + G и оказываетесь сразу в самом конце файла. Альтернативным способом можно сделать так:
tail -n 10 20210707_12-35_vdakernel.sql
Но с less быстрее и удобнее, как по мне.

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

Горячие клавиши:
Стрелка вверх – перемещение на одну строку вверх
Стрелка вниз – перемещение на одну строку вниз
Пробел или PgDn – перемещение на одну страницу вниз
b или PgUp – переместить на одну страницу вверх
g – переместить в начало файла
G – переместить в конец файла
ng – перейти на n-ю строку

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

#bash #утилита