DevOps Portal | Linux
13.4K subscribers
865 photos
112 videos
10 files
879 links
Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
GoReplay

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

Установка

Загрузите последнюю версию бинарника и соберите

Как оно работает

Самый простейший вариант: sudo ./gor --input-raw :8000 --output-stdout который действует как tcpdump. Если у вас уже есть тестовая среда, вы можете сделать так: sudo ./gor --input-raw :8000 --output-http http://staging.env

Дополнительная информация: FAQ, Troubleshooting, Issues

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
⚡️ Интересная коллекция приёмов по bash-у

Цель этого материала — задокументировать методы выполнения различных задач с использованием только встроенных функций bash.

Использование фрагментов из этой библии может помочь удалить ненужные зависимости из скриптов и в большинстве случаев ускорить их выполнение

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151
Справочник сисадмина. Все, что нужно, под рукой

Автор:
Левицкий Н.Д., Матвеев М.Д.
Год:
2024

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍165
⚡️ Шпаргалка по ZFS

modinfo zfs | head -n 9 — узнать версию ZFS и другие подробности

Информация о пулах / файловых системах (ФС) на пулах
zpool list — статус пулов
zpool status -v — статус пулов подробный
zfs list — список ФС, так называются монтируемые разделы в пулах
zfs get all — вся информация по пулам

Управление пулами / дисками
ls -lha /dev/disk/by-id/ — выяснить id дисков чтобы потом на них создать пул (не юзайте имя диска типа sda — они динамически меняются)
zpool create zfspool disk-id-1 disk-id-2 — может быть сколько угодно дисков
zpool create -m /mnt/backups zfspool disk-id-1 — создать пул с указанием папки 
zpool destroy zfspool — уничтожить пул
mkfile 100m disk1 disk2 — создать файлы дисков
zpool create backups /disk1 /disk2- создать пул backups на созданных файлах
zpool create zfspool mirror /disk1 /disk2 — создать пул zfspool с зеркалированием на 2 диска
zpool add zfspool /disk3 — добавить диск в пул
zpool attach zfspool /disk3 — добавить устройство в пул, если он в зеркале — добавится в зеркало, если простой — пул расширится
zpool detach zfspool /disk3 — исключить устройство из пула
zpool remove zfspool /disk3 — удаление устройства из пула
zpool add zfspool spare /disk3 — добавление диска горячей замены в пул
zpool remove zfspool spare /disk3 — удаление диска горячей замены из пула
zpool offline zfspool /disk1 — отключить устройство, на него не будет чтения/записи, если добавить ключ -t, то после ребута станет онлайн
zpool online zfspool /disk1 — включить disk1
zpool replace zfspool /disk1 /disk3 — заменить disk 1, на disk3
zpool upgrade -v — увидеть версию, и фичи текущего ZFS, -a обновит все пулы до новейшей версии

Создание и свойства ФС
zfs create zfspool/data — создать ФС data
zfs create zfspool/backups создать ФС backups, обе ФС будут бесконтрольно расти, пока не выставлены квоты
zfs destroy -fr zfspool/backups/old — уничтожит ФС old, ключ -r — рекурсивно, если внутри ещё несколько ФС, -f — форсить
zfs set reservation=1G zfspool/data — зарезервировать 1 Гигабайт, который ФС гарантированно получит, а другие не займут
zfs list -o quota zfspool/backups — выяснить квоту в пуле на ФС backups
zfs set quota=1G zfspool/backups — установить квоту в 1 Гигабайт на ФС backups
zfs list -o compression — проверить включена компрессия или нет
zfs set compression=on zfspool/backups — включить компрессию на ФС backups в пуле zfspool
zfs set sharesmb=on zfspool/backups
 — расшарить по SMB ФС backups средствами ZFS
zfs set sharenfs=on zfspool/backups — расшарить по NFS ФС backups средствами ZFS

Монтирование
zfs mount — показать все примонтированные ФС
zfs mount zfspool/backups — примонтировать backups
zfs umount zfspool/backups — размонтировать ФС backups
zfs mount -a — смонтировать все ФС
zfs umount -a Umount — размонтировать все ФС

Снапшоты
zfs list -t snapshot — отобразить все снапшоты
zfs list -o space — сколько занимают места снапшоты
zfs snapshot zfspool/backups@test — создать снапшот ФС backups с названием test
zfs rollback zfspool/backups@test — вернуться к снапшоту backups с названием test, с ключом -r рекурсивно уничтожит промежуточные снапшоты, с ключом -f форсит анмаунт и ремаунт
zfs destroy zfspool/backups@test — уничтожить снапшот backups с названием test
zfs send zfspool/backups@march2021 > /home/backups/march2021.bak — сделать локальный бекап снапшота march2021
zfs receive zfspool2/backups2 < /home/backups/march2021.bak — восстановить из локального снапшота ФС на другом пуле
zfs send zfspool/backups@march2021 | ssh COMP02 «zfs receive testpool/testfs» — отправить снапшот по SSH на хост COMP02
zfs clone zfspool/backups@march2021 /clones/backups — клонировать существующий снапшот
zfs destroy zfspool/backups@march2021 — уничтожить клон

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Шпаргалка по Расширенным параметрам в Bash

Что такое расширенные параметры? Допустим у вас есть переменная ${var%}, что такое знак %?

${var%} удалит короткий суффикс
$(var%%} удалит длинный суффикс
${var#} & ${var##} удалит короткий и длинный префикс

var='hello world'
echo ${var%world}


На экран выведется слово hello. То есть произошло удаление короткого суффикса. Вот еще пример:

var='hello world'
echo ${var%o*} # hello w
echo ${var%%o*} # hell


Более подробно про расширенные параметры можно почитать на официальной странице.


🔜 PDF можно забрать отсюда

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Самоучитель системного администратора, 7-е издание

Автор:
Кенин А.М.
Год:
2024

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🕒 Увеличение времени сессии SSH

Бывает, что выполнение удаленно запущенной команды может затянуться, а необходимо дождаться ее выполнения (кстати, в этом случае весьма полезным может стать использование screen), или пришлось отвлечься, а сессия SSH в это время отвалилась.

На сервере в конфигурационном файле /etc/ssh/sshd_config прописываем:

TCPKeepAlive yes
ClientAliveInterval 300
ClientAliveCountMax 60

TCPKeepAlive — установлен в «yes», значит сервер будет периодически пинговать клиента, проверяя жив ли он.
ClientAliveInterval — задает интервал пинга для проверки состояния клиента (в секундах). Параметр работает только для протокола версии 2 (Protocol 2).
ClientAliveCountMax — количество пингов клиента.
Таким образом в примере таймаут сессии будет равен 60*300/60 = 300 минут = 5 часов.
После изменения настроек не забудьте перезапустить сервис ssh.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
PowerShell для сисадминов

Автор:
Адам Бертрам
Год:
2021

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111🤯1
👩‍💻 10 практик безопасности Docker

Предпочитайте минимальные базовые образы

Выбирайте наименее привилегированного пользователя. Просто так root не нужен.

Подписывайте и проверяйте образы для предотвращения MITM-атак

Поиск, исправление и мониторинг уязвимостей с открытым исходным кодом

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

Используйте фиксированные теги для неизменности

Используйте COPY вместо ADD (рекурсивно копирует локальные файлы, неявно создает каталог назначения)

Используйте метки метаданных

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

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

🔜 Вот тут подробно описаны все нюансы

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Unix и Linux. Руководство системного администратора, 5-е издание

Автор:
Дэн Макин
Год:
2021

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
Держите полезные сочетания клавиш для повышения эффективности работы в bash

Навигация
Ctrl+A переместить курсор в начало строки
Ctrl+E переместить курсор в конец строки
Ctrl+F переместить курсор на один символ вправо
Ctrl+B переместить курсор на один символ влево
Alt+B / Esc+B переместить курсор влево на одно слово


Редактирование
Ctrl+U удалить все и вернуться в начала строки
Ctrl+K удалить все после курсора
Ctrl+W удалить слово перед курсором
Alt+D удалить слово после курсора
Ctrl+Y вернуть удаленное
Ctrl+D удалить символ под курсором
Ctrl+H аналогично backspace
Alt+T смена позиции текущего слова на предыдущее
Ctrl+T замена местами двух символа перед курсором
Alt+U перевод слова в заглавные после курсора
Alt+L перевод слова в строчные после курсора
Ctrl+_ отмена последнего ввода


Bash History
Ctrl+R режим обратного поиска
Ctrl+P переход к предыдущей команде
Ctrl+N переход к следующей команде
Ctrl+O выполнить найденную команду
Ctrl+G выход из режима поиска
!! выполнить предыдущую команду
!vim выполнить последнюю команду, которая начиналась на vim
!vim:p вывести последнюю команду, которая начиналась на vim
!n запустить n команду из history


Общие хоткеи
Ctrl+C завершить команду
Ctrl+L очистить экран
Ctrl+S приостановить вывод, остановить прокрутку
Ctrl+Q возобновить прокрутку
Ctrl+D закрыть оболочку
Ctrl+Z приостановить процесс


👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥7
Что такое docker и какие инструменты linux лежат в основе? Для чего он используется?

Docker базируется на технологиях:

namespaces — обеспечивает изоляцию (например, можно айдишники процессов разместить в разных контейнерах)
cgroups — позволяет управлять группой процессов, и управлять их ресурсами
capabilities — позволяет дать некоторые рут привелегии процессам или исполняемым файлам. Например, изменить UID процесса на 0, или дать возможность монтировать файловые системы.
overlay namespaces — (overlayFS, overlay2-драйвер) - файловая система, которая умеет работать "слоями". Не сохранять каждый раз новые файлы, а наслаивать один слой на другой, тем самым экономя место на диске и время создания контейнера.

А вот докер — это уже штука, которая всеми этими технологиями рулит, удобным для нас образом.

Компоненты докера:

Docker Daemon — тот самый Container Engine; запускает контейнеры.
Docker CLI — утилита по управлению Docker.
Dockerfile — инструкция по тому, как собирать образ.
Image — образ, из которого раскатывается контейнер.
Container
Docker registry — хранилище образов.

На Docker_host работает Docker daemon и запускает контейнеры.
Client — передаёт команды: собери образ, скачай образ, запусти контейнер. Docker daemon ходит в registry и выполняет их. Docker-клиент может обращаться и локально (к юникс-сокету), и по TCP с удалённого хоста.

Docker daemon (демон) — это серверная часть, работающая на хост-машине: скачивает образы и запускает из них контейнеры, создаёт сеть между контейнерами, собирает логи. Когда мы говорим «создай образ», этим тоже занимается демон.

Docker CLI — клиентская часть Docker, консольная утилита для работы с демоном. Может работать не только локально, но и по сети.

👉 DevOps Portal | #собес
Please open Telegram to view this post
VIEW IN TELEGRAM
👍131
Стратегии развертывания Kubernetes

🔜 Сине-зеленое развертывание (Blue/Green)

Эта стратегия базируется на двух продуктивных средах: «синяя» — там, где живут старые версии приложения, и «зеленая» — зона, где мы запускаем новую версию приложения.

🔜 Shadow

Теневое развертывание заключается в выпуске версии 1.1 наряду с версией 1.0, перехвате входящих запросов с первой версии и отправке на вторую без влияния на трафик. Это особенно полезно для тестирования production нагрузки на новую функцию.

🔜 Постепенное развертывание (Rolling)

Все инстансы приложения будут последовательно обновляться до новой версии.

🔜 A/B testing

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

🔜 Повторное создание (Recreate)

Сперва удаление текущей версии приложения, затем развертывание новой версии.

🔜 Канареечное развертывание (Canary)

«Канареечный» деплой схож с зелено-синей стратегией. Часть текущих инстансов приложения заменяется новой версией, на которую переключается часть трафика.

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

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥31
Ngrok — это сервис, который позволяет сделать локальный порт доступным из интернета без настройки NAT, роутера, DDNS и других протоколов. Программа создает туннель между вашим компьютером и удалённым сервером и предоставляет доступ к нему с уникального домена.

Такой способ не подойдёт если вам нужно чтобы ваш сервис был доступен постоянно, но показать как работает ваш локальный сайт или потестировать работу Callback API довольно удобно.

🔜 Как пользоваться Ngrok — Читаем здесь

👉 DevOps Portal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍2
Задача: провести техническое обслуживание на сервере и всех выгнать с него

Создаем пустой файл /etc/nologin. Теперь только root сможет авторизоваться по ssh. Предварительно нужно разрешить вообще заходить под root’ом.

Теперь нужно всех уведомить, кто в данный момент что-то делает в терминале.

Для этого воспользуемся утилитой wall.

Wall — утилита командной строки, которая отображает сообщение на терминалах всех вошедших в систему пользователей.

Запускаем команду:

wall "... текст сообщения ..."


Все кто был подключен к серверу, получают сообщение:

Broadcast message from root@dev (pts/0) (текущая дата/время):
... текст сообщения ...


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

В указанное время запускаем ассасина:

pkill -9 -u `who | awk '{print $1}'| grep -v root|head -1


Выгнали всех с сервера, кроме root’а и проводим технические работы, удаляем /etc/nologin.

Wall можно заменить например на такое:

echo "какой-то текст" | write user


Но тут сообщение уйдет конкретному пользователю user. Конечно, если по какой-то причине, в системе отсутствует wall, можно и через цикл выгрести всех юзеров и через echo отправить им уведомление.

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

Или так:

echo "какой-то текст" > /dev/pts/1


👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍313
Идиомы bash

Авторы: Олбинг Карл, Фоссен Джей Пи
Год: 2023

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍4
Для отладки bash-скриптов существует инструмент set -xve. Это мастхев фича именно на момент, создания чего-либо т. к. не всегда логика может работать правильно, а с set -xve, можно вовремя увидеть все значения переменных и т.п. не используя мусорные конструкции, например, echo «Error in function xxx».

Применяется так:
#!/bin/bash -xve
set -xve


Основные флаги set:

x — вывести команды и их аргументы по мере их выполнения.
v — вывести строки ввода командной строки по мере их считывания.
e — выход, если команда завершается с ненулевым статусом.

Пример:

Изменяем PS4 и добавляем вывод номера строки во включенный дебаг режим:
#!/bin/bash -xve

PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'

bar=10
echo ${bar}
echo $((6 + 6))


После выполнения мы видим:
bar=10
+(./script.sh:6): foo=10
echo ${bar}
+(./script.sh:7): echo 10
10
echo $((6 + 6))
+(./script.sh:8): echo 12
4


Теперь если скрипт где-то вылетает с плохим статусом, всегда можно узнать в какой строке это приключилось

Немного украшательств, экспортируем PS4:
PS4='\033[0;33m+(${BASH_SOURCE}:${LINENO}):\033[0m ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'


Происходит подкрашивание запускаемых строчек.

С помощью PS4 можно отладить shell-скрипт, задав при его выполнении set -x, что позволяет выводить каждую команду, а затем ее результаты. Перед каждой командой ставится знак +, эту строку подсказки «+» можно изменить, определив переменную PS4.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍192
Не можете вспомнить команду в Linux? Я вам помогу!

Вот бывает такое, что команда вылетела из головы. Причем прихватила не только свое название, но и какие-то команды с ключами. Что делать? Воспользуемся утилитой man с нужными ключами:
man -k <ключевое слово>

Например, вы забыли название команды, но помните, что она как-то связана с диском. Поэтому вводим следующую строку в терминал:
man -k disk

В выхлоп попадают все команды, связанные с дисками. Легко найти необходимую, вспомнить ее название и нужные ключи. Правда, все очень просто? Так что, пользуемся и наслаждаемся!

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45🔥8
👩‍💻 Карта наиболее часто используемых команд Linux

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

Управление файлами и каталогами
Просмотр и редактирование файлов
Управление процессами
Информация о системе
Управление пользователями и группами
Конфигурация и мониторинг сети
Управление пакетами

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍165
Простой способ записать ваши терминальные сессии 💾

Не хотите ли сохранить информацию о вашей терминальной сессии? Команда script спасет вас! Она фиксирует всё: ваши вводы, выводы и даже временные метки.

Для начала записи, просто выполните:

script history_log.txt

Теперь можете спокойно вводить команды, например, ls, cal, w.

Когда закончите, завершите запись, введя команду exit в терминале. После этого вы увидите:

Script done, file is history_log.txt

Теперь все, что вы делали в терминале, сохранено в файле history_log.txt. Полезно, не правда ли?

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥3👀3
Linux для сетевых инженеров

Авторы: Роб Ванденбринк
Год: 2024

📂 Скачать книгу

👉 DevOps Portal | #книги
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14