пятница, 1 сентября 2023 г.

Как посмотреть что грузит CPU на Mikrotik

Проверим службу, которая больше всего «отъедает» ресурсов процессор. Для этого, перейдем в раздел Tools  Profile:

Посмотреть службу, которая загружает процессор в Mikrotik

Мониторинг пропускной способности и скорости сети в Linux

 

Speedtest

Speedtest - старый фаворит. Это инструмент для проверки скорости загрузки и скачивания с использованием speedtest.net. Он реализован на Python, упакован в Apt, а также доступен с pip. Вы можете использовать его как инструмент командной строки или в скрипте Python.

Установите его с помощью:

sudo apt install speedtest-cli

Или:

sudo pip3 install speedtest-cli	

Затем запустите его с помощью команды speedtest:

speedtest
Retrieving speedtest.net configuration...
Testing from CenturyLink (65.128.194.58)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by CenturyLink (Cambridge, UK) [20.49 km]: 31.566 ms
Testing download speed................................................................................
Download: 68.62 Mbit/s
Testing upload speed......................................................................................................
Upload: 10.93 Mbit/s

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


Fast

Fast - это услуга, предоставляемая Netflix. Его веб-интерфейс расположен на Fast.com, а интерфейс командной строки доступен через npm:

npm install --global fast-cli	

И веб-сайт, и утилита командной строки предоставляют один и тот же базовый интерфейс - это простой тест скорости, и ничего лишнего:

fast

     82 Mbps v

Команда показывает вашу скорость скачивания (download) через Интернет. Чтобы получить скорость загрузки (upload), используйте флаг -u:

fast -u

   ? 80 Mbps v / 8.2 Mbps ^

iPerf

iPerf (iPerf3) - отличный способ проверить скорость вашей локальной сети (а не скорость Интернета, как это делают два предыдущих инструмента). Пользователи Debian, Raspbian и Ubuntu могут установить его с помощью apt:

sudo apt install iperf	[Debian/Ubuntu]

yum install epel-release [RHEL/CentOS]
yum install iperf3 [RHEL/CentOS]

iPerf также доступен в Window и Mac

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

Узнайте IP-адрес сервера:

ip addr show | grep inet.*brd

Запустите iperf на сервере:

iperf -s

Это компьютер входящих соединений от клиентов. Теперь запустите на втором компьютере iperf с флагом -c и укажите ip-адрес сервера.

iperf -c server_address

NetHogs

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

yum install epel-release [RHEL/CentOS]
yum install nethogs [RHEL/CentOS]

apt install nethogs [Debian/Ubuntu]

Для запуска используйте:

sudo nethogs
nethogs

Вы можете указать определенный интерфейс после команды:

sudo nethogs eth0	

Также у команды есть дополнительные параметры, такие как выбор задержки для частоты обновления -d, информации о версии -V, tracemode -t.


nload

nload позволяет отслеживать сетевой трафик и использование полосы пропускания в режиме реального времени, с большим количеством дополнительной информации, такой как: общий объем передаваемых данных, минимальное и максимальное использование сети и многое другое. Также nload строит графики входящего и исходящего трафика.

Опции nload:

  • device - выбор интерфейса
  • -a - промежуток в секундах, для подсчитывания среднего значения
  • -i - стопроцентная планка на графике пропускной способности в kBit/s
  • -m - отображение нескольких интерфейсов, без графика
  • -t - интервал обновления в миллисекундах
  • -u - режим отображения: Bit/s, kBit/s, MBit/s
nload

Для установки используйте:

sudo apt install nload [Debian/Ubuntu]

yum install epel-release [RHEL/CentOS]
um install nload [RHEL/CentOS]

Для запуска:

nload

CBM – Color Bandwidth Meter

CBM - очень простой инструмент, который отображает сетевой трафик на всех подключенных устройствах. Удобство заключается в том, что команды отображаются в нижней части терминала.

CBM

Для установки используйте команду:

sudo apt install cbm -y [Debian/Ubuntu]

yum install epel-release [RHEL/CentOS]
yum install cbm [RHEL/CentOS]

После этого просто запустите:

cbm

vnStat

vnStat - это монитор сетевого трафика, который использует статистику сетевого интерфейса, предоставляемую ядром, что означает что он не будет перехватывать трафик и в результате гарантирует низкую загрузку ЦПУ. Особенность vnStst в том, что он сохраняет все данные в собственной базе.

vnStat

vnStat также предоставляет веб-интерфейс на основе php для отображения графической статистики. Для настройки веб-интерфейса vnStat в вашей системе должны быть установлены пакеты Apachephp и php-gd.

Веб-интерфейс vnStat

Для установки используйте команду:

sudo apt install vnstat [Debian/Ubuntu]

sudo yum install epel-release [RHEL/CentOS]
sudo yum install vnstat [RHEL/CentOS]

Для запуска:

vnstat

iftop

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

iftop

Для установки используйте:

sudo apt install iftop [Debian/Ubuntu]

yum install epel-release[RHEL/CentOS]
yum install  iftop [RHEL/CentOS]

Для запуска:

sudo iftop

Будет произведен запуск с мониторингом всех интерфейсов.


slurm

slurm - это еще один инструмент мониторинга сетевой нагрузки для linux, который показывает результаты в графике ascii.

slurm

Команды для установки:

sudo apt-get install slurm [Debian/Ubuntu]

sudo yum install slurm -y [RHEL/CentOS]

Установка и использование fping в Linux

 

Что такое fping?

Fping – это инструмент, аналогичный утилите ping, но гораздо более производительный в случае, когда нам нужно сделать пинг до нескольких узлов. С fping можно использовать файлы со списком адресов или даже указывать целые диапазоны сетей с маской.


Установка

В большинстве дистрибутивов Linux пакет fping можно установить из репозиториев:

# sudo apt install fping  		[ДляDebian/Ubuntu]
# sudo yum install fping  	[Для CentOS/RHEL]
# sudo dnf install fping  	[Для Fedora 22+]
# sudo pacman -S fping    	[Для Arch Linux]

Если нужно установить из исходного пакета, то используются следующие команды:

$ wget https://fping.org/dist/fping-4.0.tar.gz
$ tar -xvf fping-4.0.tar.gz
$ cd fping-4.0/
$ ./configure
$ make && make install

Готово! Теперь посмотрим, что мы сможем сделать с помощью fping


Пинг множества адресов

Используйте команду fping, а затем через пробел укажите нужные IP адреса

# fping 192.168.1.1 192.168.1. 192.168.1.3

192.168.1.1 is alive
192.168.1.1 is unreachable
192.168.1.3 is unreachable

Пинг диапазона адресов

Используйте ключи –s и –g, после которых укажите первый и последний адрес диапазона.

# fping -s -g 192.168.0.1 192.168.0.9

192.168.0.1 is alive
192.168.0.2 is alive
ICMP Host Unreachable from 192.168.0.2 for ICMP Echo sent to 192.168.0.3
ICMP Host Unreachable from 192.168.0.2 for ICMP Echo sent to 192.168.0.3
ICMP Host Unreachable from 192.168.0.2 for ICMP Echo sent to 192.168.0.3
ICMP Host Unreachable from 192.168.0.2 for ICMP Echo sent to 192.168.0.4
192.168.0.3 is unreachable
192.168.0.4 is unreachable

8      9 targets
       2 alive
       2 unreachable
       0 unknown addresses

       4 timeouts (waiting for response)
       9 ICMP Echos sent
       2 ICMP Echo Replies received
      2 other ICMP received

 0.10 ms (min round trip time)
 0.21 ms (avg round trip time)
 0.32 ms (max round trip time)
        4.295 sec (elapsed real time)

Пинг целой подсети

Укажите маску подсети через слеш, чтобы пропинговать всю подсеть. Ключ –r 1 указывает на то, что будет одно повторение операции

# fping -g -r 1 192.168.0.0/24

Пинг с адресами из файла

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

# fping < fping.txt

192.168.1.20 is alive
192.168.1.100 is alive

среда, 30 августа 2023 г.

Установить openvpn server на ubuntu через скрипт

 https://github.com/angristan/openvpn-install

First, get the script and make it executable:

curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh

Then run it:

./openvpn-install.sh

понедельник, 28 августа 2023 г.

УСТАНОВКА И ИСПОЛЬЗОВАНИЕ DOCKER НА UBUNTU 18, 20, 22

 

Что такое Docker?

Docker – это платформа, позволяющая создавать, распространять и управлять специальными контейнерами, которые могут содержать в себе определенный набор ПО или даже целую ОС, но запускаются в изолированной среде, что позволяет безопасно запускать приложения без риска навредить основной ОС в случае ошибки или сбоя приложения. Эта система чем-то напоминает виртуализацию, но контейнеры не виртуализируют оборудование, поэтому куда менее требовательны к ресурсам.

Личный опыт

Я познакомился с Docker, когда мне нужно было протестировать одно приложение с гитхаба, написанное на Python с использованием кучи библиотек. Мне не хотелось устанавливать столько всего себе в ОС и тут в описании я увидел упоминание Docker. Разобравшись в теме, я понял, что Docker дает возможность запустить это приложение из готового образа, внутри которого уже содержится нужная версия Python и всех зависимостей приложения, что гарантирует 100% работоспособность приложения и позволит в будущем легко удалить контейнер и образ, не оставляя следов в системе. Хочу добавить, что на гитхабе вы можете встретить как приложения, образы для которых официально распространяются через Docker Hub и могут быть установлены с помощью всего одной команды, так и приложения, чьи образы, которые нужно компилировать самому (об этом позже). Существуют готовые образы Docker для множества известных приложений, например, можно в пару кликов развернуть веб-сервер с mysql или vpn сервер. Docker значительно упрощает развертывание сложных приложений.

Устанавливаем Docker на Ubuntu

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

Обновляем кэш репозиториев:

sudo apt update

Устанавливаем пакеты, позволяющие apt загружать пакеты по защищенному протоколу HTTPS:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

Добавляем в свою ОС GPG ключ Docker:

На Ubuntu 18 и 20:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

На Ubuntu 22:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Добавляем в список источников репозиторий Docker:

На Ubuntu 18:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"

На Ubuntu 20:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

На Ubuntu 22:

echo "deb [arch=$(dpkg --print-architecture) 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

Обновляем базу репозиториев, чтобы получить информацию о пакетах Docker из нового источника:

sudo apt update

Устанавливаем Docker:

sudo apt install docker-ce

Использование Docker

Проверить статус процесса Docker можно следующей командой:

sudo systemctl status docker

Если все хорошо, вы должны увидеть примерно следующее:

Статус процесса Docker

По умолчанию, для использования команды docker требуются права sudo. Вы можете избежать этого, если добавите своего пользователя в группу docker. Например, ваш пользователь “alex”, тогда добавить его в группу docker можно так:

sudo usermod -aG docker alex

После этого вам придется перелогиниться в системе.

Если вы введете команду docker, вы получите подсказку о доступных командах. Для каждой команды можно ввести docker COMMAND --help чтобы увидеть список доступных аргументов.

Работа с образами Docker:

Список установленных образов:

docker images

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

Вы также можете искать образы в Docker Hub прямо в консоли, например поищем Apache:

docker search apache

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

Загружать образы нужно командой docker pull. Пример для официального образа Apache:

docker pull httpd

Запускать контейнеры из образов можно по как по IMAGE ID, так и по названию образа (REPOSITORY), которые указаны в списке образов по команде docker images.

Небольшие open-source проекты могут не распространять готовый образ в Docker Hub, но могут иметь Dockerfile, который позволит вам создать образ. Для этого вам потребуется клонировать репозиторий к себе и перейти в папку репозитория, например:

git clone https://github.com/test/test && cd test

Затем останется только собрать образ с помощью команды:

docker build -t test .

Обычно инструкции по сборке образа присутствуют в описаниях репозиториев.

Удалить любой образ можно с помощью следующей команды с указанием ID образа:

docker rmi f75571d82318

Работа с контейнерами Docker:

Вы можете создать контейнер из образа и он будет сразу запущен:

docker run f75571d82318

Список работающих в данный момент контейнеров можно увидеть по команде:

docker ps

Также можно посмотреть список всех контейнеров, включая не активные:

docker ps -a

При желании, запуская контейнер из образа, вы можете дать ему имя, чтобы потом обращаться по нему:

docker run --name apache f75571d82318

Если у вас интерактивный контейнер, т.е. позволяющий выполнять команды внутри него, то вы можете запустить его с ключами -it, включающими интерактивный режим:

docker run --name apache -it f75571d82318

После запуска, ваша командная строка изменится, сообщая что вы находитесь внутри контейнера с указанием его ID. Выглядит это примерно так:

root@e2f464551004:/#

Если у вас уже запущен контейнер, вы все равно можете попасть внутрь, для этого используйте команду:

docker exec -it apache /bin/bash

Здесь я использовал имя контейнера, но если вы не указывали его при запуске, используйте ID контейнера. Это касается и других команд с обращением к контейнерам далее по тексту.

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

Если вы создали контейнер из образа с помощью docker run и потом он был остановлен вами или завершил свою работу, то запускать его снова нужно будет уже другой командой:

docker start apache

Остановить контейнер можно с помощью команды:

docker stop apache

Контейнеры также можно перезапускать:

docker restart apache

Если вам больше не нужен контейнер, удалить его можно так:

docker rm apache

Обратите внимание, это удалит контейнер, но образ, из которого он был создан, все еще будет находиться в вашей системе.

Если ваш контейнер должен выполнить какую-то задачу, после чего больше не понадобится, вы можете запустить его из образа с ключем --rm:

docker run --rm test

Тогда контейнер будет создан из образа, запущен и будет автоматически удален, когда завершит свою задачу.

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

Пример: вы находитесь в директории /home/alex/project1 (будем считать ее рабочей директорией) и создали в ней директорию reports для получения отчетов из контейнера test. Также вы узнали, что отчеты внутри контейнера складываются в директорию /app/reports. Тогда вам остается лишь запустить контейнер, добавив специальный аргумент -v с указанием сначала директории в вашей ОС, затем директории внутри контейнера (через двоеточие):

docker start -v "$PWD/reports:/app/reports" test

Таким образом, контейнер test выполнит свою работу и отчет, который он обычно сохраняет внутри себя в /app/reports, попадет в вашу основную ОС, в директорию /home/alex/project1/reports

Этот метод я постоянно использую в своих проектах и это работает как для существующих контейнеров, запускаемых с помощью docker start, так и для контейнеров, создаваемых из образа через docker run.

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

docker run --rm -v "$PWD/reports:/app/reports" test "google.com" --proxy "5.5.5.5.5:3128" --pdf