Не все поймут не многие выберут ARCH
Друг познается в чате
«Чат на чат» — новое развлекательное шоу RUTUBE. В нем два известных гостя соревнуются, у кого смешнее друзья. Звезды создают групповые чаты с близкими людьми и в каждом раунде присылают им забавные челленджи и задания. Команда, которая окажется креативнее, побеждает.
Реклама ООО «РУФОРМ», ИНН: 7714886605
Пффф... Буду я еще тратить время на всякие ненужности
- Может быть проверить контрольную сумму, прежде чем это запускать?
- Да не, и так сойдёт.
Утилиты Linux значительно облегчающие жизнь сисадмина
Linux для инженера это как правило bash через SSH. У каждого свой набор предпочтений, предлагаю поделиться своими фаворитами, думаю будет много полезной информации.
Самый простой к пониманию метод подачи материала:
Название
Практическая ситуация в которой утилита используется
Для затравки:
Утилита screen
Часто приходится делать продолжительные операции через SSH, например сжимать большие архивы, копировать значительный объем данных и если по ходу работы пропадет линк, операция прервется, неприятно. Или когда необходимо запустить несколько задач параллельно, переключаясь между ними по необходимости, например запущен снифер, копирование и проверка диска. Даже если вы отключитесь от консоли или разорвется соединение, всё запущенное в скрине продолжит работать и вы спокойно подключитесь и продолжите работать. Присутствует почти во всех репозиториях, но её придется устанавливать.
Консольная утилита screen это по сути оконный менеджер, разделяющий один физический терминал между несколькими процессами. Подходит для прямого либо удалённого администрирования. Подробнее читайте в Гугле
Комрады, большая просьба, постарайтесь воздержаться от негатива и понтов, а тех кто этим грешен, не стесняйтесь минусить.
Перенаправление логов из Fluentbit в Seq
Seq — это сервер поиска и анализа структурированных журналов приложений в режиме реального времени. Можно смотреть на него как на своего рода альтернативу для ELK. Хотя лицензия тут тоже не свободная, а использование для юрлиц платное. Но для домашней лаборатории для меня в своё время это оказался превосходный вариант (в принципе я до сих пор считаю так, потому что времени на развертывание Seq тратится несравнимо меньше чем на ELK. Для экспериментов самое то.
В данной статье проведу нехитрую операцию по развертыванию и настройке fluentbit и seq в docker, и настрою отправку собранных логов из fluentbit в seq.
Начнём с создания отдельной сети для наших контейнеров:
docker network create fluent-bit_seq
Установка Seq
Теперь захэшируем пароль, который будет использоваться.
PH=$(echo 'seqPass%%' | docker run --rm -i datalust/seq config hash)
Убедимся, что переменная действительно содержит пароль:
echo $PH
Запускаем контейнер:
docker run --name seq -d --network fluent-bit_seq \ -p8080:80 --restart unless-stopped \ -e ACCEPT_EULA=Y -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \ datalust/seq
Теперь, можем обратиться в браузере к localhost:8080 и залогиниться в Seq с помощью username=admin password=seqPass%%
Установка Fluentbit
Для начала экспортируем переменную, которая будет содержать каталог из которого будет взята конфигурация Fluentbit.
export sharedFolder=/var/fluent-bit_seq
Запустим временный контейнер, откуда скопируем дефолтный конфиг:
docker run -d --rm --name temp cr.fluentbit.io/fluent/fluent-bit
Скопируем сам конфиг с последующей остановкой ставшего ненужным контейнера:
docker cp temp:/fluent-bit/etc/ $sharedFolder docker stop temp
Теперь еще раз запустим контейнер fluentbit, но уже смонтировав в него каталог с конфигом:
docker run -dti --name fluent-bit --network fluent-bit_seq \ -v $sharedFolder:/fluent-bit/etc \ cr.fluentbit.io/fluent/fluent-bit
По дефолту fluentbit отправляет вывод на stdout. Так что с помощью docker log всегда можно посмотреть что с ним происходит. Наша задача как раз исправить дефолтное поведение.
docker logs fluent-bit
Настройка отправки логов в Seq
Отправляемся в конфиг fluentbit и ищем следующую секцию:
# fluent-bit.conf
[OUTPUT]
name stdout
match *
Заменяем её на указанную ниже, с последующим сохранением:
# fluent-bit.conf
[OUTPUT]
Name http
Match *
Host seq
Port 5341
URI /api/events/raw?clef
Format json_lines
Json_date_key @t
Json_date_format iso8601
Log_response_payload False
Теперь перезапустим контейнер с fluentbit для принятия изменений:
docker restart fluent-bit
Возвращаемся в браузер, открываем Seq, логинимся и теперь можем видеть, что логи из fluentbit отправляются прямиком туда:
Проверка скорости вашей локальной сети с помощью OpenSpeedTest
Давайте представим, что нам нужно развернуть приложение, у которого есть явные требования к скорости сети. Мы например можем просто взять, открыть браузер, забить в гугле "тест скорости сети", открыть любой из приглянувшихся нам тестов скорости и... вспомнить что все эти тесты могут проверить только скорость вашего подключения к внешнему миру.
Ок. А что насчёт тестов скорости в локальной сети? Ну, в принципе у нас вроде как есть iperf. Но может еще что-то менее кондовое?
Что-то еще есть. Это как раз https://github.com/openspeedtest/Speed-Test.
OpenSpeedTest - open source решение, предоставляющее возможность оценки производительности сети, и не требующее установки каких-либо агентов или плагинов на стороне клиента. После установки доступ к инструменту можно получить из любого современного браузера. Удобней всего развернуть docker-контейнер с OpenSpeedTest из готового образа (nginx+alpine).
Запустить OpenSpeedTest можно как с готовым, и автоматически обновляемым LetsEncrypt SSL сертификатом, так и без него. В статье мы рассмотрим оба варианта.
Для запуска приложения нам понадобится только какая-нибудь машина с Linux, где мы сможем запускать контейнеры. В статье все действия будут проводиться на виртуалке с Ubuntu 22.04. Для других ОС отличие будет в основном только в методе установки Docker.
Установка Docker
Понятно, что большинство этот пункт могут воспроизвести с закрытыми глазами, но пусть будет.
Итак. Для начала позаботимся о скачивании и установке GPG ключа:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
После выполнения команды добавим официальный репозиторий Docker:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Установим нужные зависимости:
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
Перед установкой Docker на всякий случай обновим систему:
sudo apt-get update
Ну и поставим уже сам Docker CE со всем необходимым:
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Во избежание запуска Docker с sudo и прочими повышениями привелегий, добавляем пользователя в группу docker:
sudo usermod -aG docker $USER
Для проверки работы нужно перелогиниться в систему, после чего выполнить например:
docker ps
Если всё хорошо, должна показаться примерно такая картина:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
Всё готово. Теперь можно приступить к более интересной части.
Развёртывание OpenSpeedTest
Сначала рассмотрим вариант запуска без LetsEncrypt. Всё, что вам нужно сделать для этого - запустить следующую команду:
docker run --restart=unless-stopped --name openspeedtest -d -p 3000:3000 -p 3001:3001 openspeedtest/latest
Запуск контейнера может занять некоторое время (вполне может повисеть пару минут). После того как контейнер запустится, откройте браузер и введите http://SERVER:3000, где SERVER - IP адрес сервера на котором размещён контейнер с OpenSpeedTest. После открытия веб-интерфейса приложения вам достаточно нажать кнопку Start, чтобы запустить проверку:
Никто не мешает так же подключаться к нему и по https, для этого в адресной строке браузера нужно будет ввести https://SERVER:3001.
Запуск с LetsEncrypt
Если вы предпочитаете разворачивать контейнеры с поддержкой LetsEncrypt SSL, вам нужно соблюсти несколько условий:
иметь белый IP
доменное имя, которое преобразуется в IP-адрес хост-сервера
почта
Если всё в наличие, то запуск контейнера с поддержкой LetsEncrypt SSL можно произвести следующей командой:
docker run -e ENABLE_LETSENCRYPT=True -e DOMAIN_NAME=yourdomain -e USER_EMAIL=youremail --restart=unless-stopped --name openspeedtest -d -p 80:3000 -p 443:3001 openspeedtest/latest
После удачного запуска контейнера, сервис будет доступен по адресу https://SERVER:443.
Заключение
В целом это все действия, которые потребуется сделать для запуска собственного сервера SpeedTest в своей локальной сети. Штука достаточно удобная и сильно упрощает поиск проблем в перспективе (при их появлении).
Меряем мир в сосисках!
Пройдя этот тест, вы узнаете, сколько нужно сосисок, чтобы спуститься по ним на дно Марианской впадины. А еще сколько их можно съесть, пока длится самый долгий в мире поцелуй. Не пропустите!
Сыграем в линуксойд-бинго?
Вещи которые следует ненавидеть каждому настоящему линуксойду.