10 полезных утилит для мониторинга linux-сервера

Введение

Любая работа с сервером после установки чаще всего начинается со стандартных обязательных действий, без которых либо не получится продвинуться дальше, либо будет неудобно работать. Например, вам в любом случае необходимо выполнить сетевые настройки, желательно обновить систему и установить часовой пояс. Рекомендуется сразу настроить автообновление времени, подрихтовать параметры sshd, установить midnight commander и выполнить другие настройки.

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

OPTIONS

-h
Print a summary of usage.
-n
Don’t do hostname lookups.
-N
Do not resolve port number to service names
-p
Run in promiscuous mode, so that traffic which does not pass directly through
the specified interface is also counted.
-P
Turn on port display.
-l
Display and count datagrams addressed to or from link-local IPv6 addresses.
The default is not to display that address category.
-b
Don’t display bar graphs of traffic.
-m limit
Set the upper limit for the bandwidth scale. Specified as a number with a ‘K’, ‘M’ or ‘G’ suffix.
-B
Display bandwidth rates in bytes/sec rather than bits/sec.
-i interface
Listen to packets on interface.
-f filter code
Use filter code to select the packets to count. Only IP packets are ever
counted, so the specified code is evaluated as (filter code) and ip.
-F net/mask
Specifies an IPv4 network for traffic analysis. If specified, iftop will only
include packets flowing in to or out of the given network, and packet direction
is determined relative to the network boundary, rather than to the interface.
You may specify mask as a dotted quad, such as /255.255.255.0, or as a
single number specifying the number of bits set in the netmask, such as /24.
-G net6/mask6
Specifies an IPv6 network for traffic analysis. The value of mask6 can be
given as a prefix length or as a numerical address string for more compound
bitmasking.
-c config file
Specifies an alternate config file. If not specified, iftop will use
~/.iftoprc if it exists. See below for a description of config files
-t text output mode

Use text interface without ncurses and print the output to STDOUT.

Мониторинг локальной службы в linux

С мониторингом удаленного tcp сервиса разобрались, а что делать, если служба работает локально и к ней невозможно подключиться из вне. Тут уже не обойтись без установки zabbix агента. Если он установлен на хосте, то можно воспользоваться итемом с ключом proc.num. Этот ключ возвращает в качестве значения количество запущенных процессов. И если таких процессов больше одного, можно считать, что служба запущена.

Рассмотрим на примере мониторинга службы postgrey, реализующей greylist для борьбы со спамом. Она работает локально на почтовом сервере linux и является критическим сервисом, так как без него почтовый сервер postfix не будет принимать почту, выдавая временную ошибку почтовой системы. Проверим работу ключа proc.num:

# zabbix_agentd -t proc.num
proc.num 

Все в порядке, zabbix агент возвращает значение 1 при запущенном сервисе. Идем на сервер мониторинга, выбираем хост или шаблон и создаем новый item.

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

Создаем триггер с оповещением о недоступности сервиса. При последних двух значениях равных срабатываем.

Я настраиваю триггер в шаблоне, поэтому сразу для удобства в названии триггера указываю маску для имени, чтобы было понятно в оповещении, на каком хосте сработал триггер. Как обычно, проверить поступаемые значения можно в Latest data.

Вот и все. Мы настроили мониторинг локальных служб linux в заббиксе.

Процессинг файлов и информации

  • Для того, чтобы найти файл в текущей директории сделайте find. -iname ‘*something*’. Для того, чтобы искать файл по всей системе используйте locate something (но не забывайте, что updatedb мог еще не проиндексировать недавно созданные файлы).

  • Для основого поиска по содержимому файлов (более сложному, чем grep -r) используйте ag.

  • Для конвертации HTML в текст: lynx -dump -stdin

  • Для конвертации разных типов разметки (HTML, маркдаун и т.д.) попробуйте pandoc.

  • Если нужно работать с XML, есть старая но хорошая утилита – xmlstarlet.

  • Для работы с JSON используйте jq.

  • Для работы с Excel и CSV-файлами используйте csvkit (программа предоставляет команды in2csv, csvcut, csvjoin, csvgrep и т.д.)

  • Для работы с Amazon S3 удобно работать с s3cmd и s4cmd (последний работает быстрее). Для остальных сервисов Амазона используйте стандартный aws.

  • Знайте про sort и uniq, включая флаги -u и -d, смотрите примеры ниже. Еще гляньте на comm.

  • Знайте про cut, paste, и join для работы с текстовыми файлами. Многие люди используют cut забыв про join.

  • Знайте о wc: для подсчета переводов строк (-l), для символов – (-m), для слов – words (-w), для байтового подсчета – (-c).

  • Знайте про tee, для копирования в файл из stdin и stdout, что-то типа ls -al | tee file.txt.

  • Не забывайте, что Ваша локаль влияет на многие команды, включая порядки сортировки, сравнение и производительность. Многие дистрибутивы Linux автоматически выставляют LANG или любую другую переменную в подходящую для Вашего региона. Из-за этого результаты функций сортировки могут работать непредсказуемо. Рутины i18n могут значительно снизить производительность сортировок. В некоторых случаях можно полностью этого избегать (за исключением редких случаев), сортируя традиционно побайтово, для этого export LC_ALL=C

  • Знайте основы awk и sed для простых манипуляций с данными. Например, чтобы получить сумму всех чисел, которые находятся в третьей колонки текстового файла можно использовать awk ‘{ x += $3 } END { print x }’. Скорее всего, это раза в 3 быстрее и раза в 3 проще чем делать это в Питоне.

  • Чтобы заменить все нахождения подстроки в одном или нескольких файлах:

Для того, чтобы переименовать сразу много файлов по шаблону, используйте rename. Для сложных переименований может помочь repren:

Используйте shuf для того, чтобы перемешать строки или выбрать случайную строчку из файла.
Знайте флаги sortа. Для чисел используйте -n, для работы с человекочитаемыми числами используйте -h (например du -h). Знайте как работают ключи (-t и -k). В частности, не забывайте что вам нужно писать -k1,1 для того, чтобы отсортировать только первое поле; -k1 значит сортировка учитывая всю строчку. Так же стабильная сортировка может быть полезной (sort -s)

Например для того, чтобы отсортировать самое важное по второму полю, а второстепенное по первому можно использовать sort -k1,1 | sort -s -k2,2`.
Если вам когда-нибудь придется написать код таба в терминале, например для сортировки по табу с флагом -t, используйте шорткат ctrl-v или напишите $’\t’. Последнее лучше, потому что его можно скопировать.
Стандартные инструменты для патчинга исходников это diff и patch

Так же посмотрите на diffstat для просмотра статистики диффа. diff -r работает для по всей директории. Используйте diff -r tree1 tree2 | diffstat для полной сводки изменений.
Для бинарников используйте hd для простых hex-дампом и bvi для двоичного изменения бинарников.
strings (в связке grep или чем-то похожем) помогает найти строки в бинарниках.
Для того, чтобы посмотреть разницу в бинарниках (дельта кодирование) используйте xdelta3.
Для конвертирования кодировок используйте iconv. Для более сложных задач – uconv, он поддерживает некоторые сложные фичи Юникода. Например эта команда переводит строки из файла в нижний регистр и убирает ударения (кои бывают, например, в Испанском)

  • Для того, чтобы разбить файл на куски используйте split (разбивает на куски по размеру), или csplit (по шаблону или регулярному выражению)

  • Используйте zless, zmore, zcat, и zgrep для работы с сжатыми файлами.

3 Февраль 2013

Утилита iotop показывает статистику нагрузки на жесткие диски, в том числе она показывает процессы и пользователей, которые эту самую нагрузку создают. Но на CentOS 5.9 Final, стандартный iotop из репозитория может не запуститься. В таком случае делаем следующее:
Если при запуске iotop, получаем ошибку:

Не хватает опций ядра.
Пересобираем ядро, включив эти опции (сборка ядра — это отдельная тема, найти и включить эти опции можно воспользовавшись командой make menuconfig)
После установки нового ядра и успешной перезагрузки, iotop, все еще может не заработать и выдать ошибку типа:

Traceback (most recent call last):
  File "/usr/bin/iotop", line 16, in ?
    main()
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 567, in main
    main_loop()
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 557, in 
    main_loop = lambda: run_iotop(options)
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 465, in run_iotop
    return curses.wrapper(run_iotop_window, options)
  File "/usr/lib64/python2.4/curses/wrapper.py", line 44, in wrapper
    return func(stdscr, *args, **kwds)
  File "/usr/lib/python2.4/site-packages/iotop/ui.py", line 457, in run_iotop_window
    process_list = ProcessList(taskstats_connection, options)
  File "/usr/lib/python2.4/site-packages/iotop/data.py", line 375, in __init__
    self.update_process_counts()
  File "/usr/lib/python2.4/site-packages/iotop/data.py", line 431, in update_process_counts
    stats = self.taskstats_connection.get_single_task_stats(thread)
  File "/usr/lib/python2.4/site-packages/iotop/data.py", line 158, in get_single_task_stats
    reply = self.connection.recv()
  File "/usr/lib/python2.4/site-packages/iotop/netlink.py", line 229, in recv
    raise err
OSError: Netlink error: Недопустимый аргумент (22)

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

После этого, запускайте — заработало? 🙂

Ну и пара полезных аргументов команды:

— показывать только процессы, реально использующие жесткие диски в текущий момент времени

— где вместо NUM нужно указать количество повторов, прежде чем программа завершит работу

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

Категория: Заметки линуксоида, Памятка, Процессы, окружение, Решение проблем, Серверы;

iperf

Iperf является инструментом для выполнения измерений пропускной способности сети. Он может испытать TCP/UDP пропускную способность. Чтобы выполнить тест Iperf пользователь должен запустить сервер и клиент.

Опции глобальные:

  • -f, —format — Формат вывода: Kbits, Mbits, KBytes, MBytes;
  • -i, —interval n — Интервал в секундах между периодами измерения шырины полосы пропускной способности канала;
  • -l, —len n — Длина чтения/записи буфера (По умолчанию 8 KB);
  • -m, —print_mss — Печать максимальный TCP размер сегмента (MTU — заголовок TCP / IP);
  • -o, —output filename — Выводить отчет или собщение об ощибке в файл;
  • -p, —port n — Установить порт для прослушивания/подключения (по умолчанию 5001);
  • -u, —udp — использовать UDP, а не TCP (по умолчанию TCP);
  • -w, —window n — Размер окна TCP (размер буфера сокета);
  • -B, —bind host — Связатся с хостом, интерфейсом или групповой адресов;
  • -M, —mss — Установить максимальный TCP размер сегмента (MTU — 40 байт);
  • -N, —nodelay — не устанавливать задержки в TCP, отключение алгоритма Nagle’s;
  • -x, —reportexclude — Исключать C(connection) D(data) M(multicast) S(settings) V(server) поля;
  • -y — Использовать CSV формат (значения, разделенные запятыми);

Опции для сервера:

-s, —server — Запустить в режиме сервера;

-U, —single_udp — Запуск в одном многопоточном режиме UDP;

-D, —daemon — Запустить программу как демон;
Опции для Клиента:

-b, —bandwidth n — Установка целевой пропускной способности bits/sec (по умолчанию 1 Мбит/сек). Этот параметр требуется для UDP;

-c, —client — Работать в режиме клиента, подключение к хост;

-d, —dualtest — Выполнить двунаправленный тест соединения одновременно (download/upload);

-n, —num n — количество байт для теста (вместо -t);

-r, —tradeoff — Выполнить двунаправленный тест соединения по очереди (download/upload);

-t, —time n — Время теста секундах (по умолчанию 10 секунд);

-F, —fileinput — Входные данные передаются из файла;

-I, —stdin — Входные данные должны быть переданы из стандартного ввода;

-P, —parallel n — Количество параллельных клиентских потоков;

— ;

Пример:

Установка:

Linux iotop Check What’s Stressing & Increasing Load On Hard Disks

I recommend that you start the iotop command with --only option to see only processes or threads actually doing I/O, instead of showing all processes or threads (you can set this mode dynamically too see keyboard shortcut o for more info): Sample outputs:


Fig.02: Only See Process Eating Your Disk I/O

Other supported options by iotop command:

Options Description
--version show program’s version number and exit
-h, --help show this help message and exit
-o, --only only show processes or threads actually doing I/O
-b, --batch non-interactive mode
-n NUM, --iter=NUM number of iterations before ending
-d SEC, --delay=SEC delay between iterations
-p PID, --pid=PID processes/threads to monitor
-u USER, --user=USER users to monitor
-P, --processes only show processes, not all threads
-a, --accumulated show accumulated I/O instead of bandwidth
-k, --kilobytes use kilobytes instead of a human friendly unit
-t, --time add a timestamp on each line (implies –batch)
-q, --quiet suppress some lines of header (implies –batch)

Important keyboard shortcuts for iotop command

  1. Hit the left and right arrow keys to change the sorting.
  2. Hit r to reverse the sorting order.
  3. Hit o only to see processes or threads actually doing I/O, instead of showing all processes or threads.
  4. Hit p only show processes. Normally iotop shows all threads.
  5. Hit a display accumulated I/O instead of bandwidth. In this mode, iotop shows the amount of I/O processes have done since iotop started.
  6. Ht i to change the priority of a thread or a process’ thread(s) i.e. ionice.
  7. Hot q to quit iotop.

Обновление системы, отличие apt upgrade от dist-upgrade и full-upgrade

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

# apt update

Посмотреть список пакетов, готовых к обновлению, можно с помощью команды:

# apt list --upgradable
# apt upgrade

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

Ключ dist-upgrade или full-upgrade (это одно и то же) в дополнение к upgrade обрабатывает все изменения зависимостей для новых пакетов и во время работы может удалять ненужные и ставить необходимые пакеты для обновления. Вот выдержка из документации по поводу этих двух ключей.

Так что после обычного обновления, делаем еще full-upgrade.

# apt full-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  dh-python guile-2.0-libs libbind9-140 libdns162 libicu57 libisc160 libisccc140 libisccfg140 liblvm2app2.2 liblvm2cmd2.02 liblwres141 libperl5.24
  libpython3.5-minimal libpython3.5-stdlib linux-image-4.9.0-3-amd64 python3-distutils python3-lib2to3 python3.5 python3.5-minimal rename sgml-base tcpd
  xml-core
Use 'apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

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

# apt autoremove

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

На этом обновление системы закончено. Если вы хотите обновить версию релиза, например Debian 9 обновить до Debian 10 Buster, то читайте отдельный материал.

Tutorial

Let’s begin. The iotop package is included in the official CentOS 7 package repositories, so we only need to install it.

Now we run the newly-installed iotop command, at which point we’ll get regularly updated statistics on disk use.

At the moment the iotop results aren’t terribly interesting. If you’ve followed this guide’s recommendation, you’ve installed it on a server that is mostly idle.

The SwapIn column lets you determine how much a given process is hitting swap. This may be an indication that the process’s memory use should be reduced somehow. While it would still be writing to disk, letting a process persist storage using its own mechanisms is likely faster than having it page memory in and out of swap.

If the current iotop display is too coarse, there are ways to run it that display more precise details. For instance, maybe you only want global disk usage data. The following command accomplishes this:

You can also run iotop with multiple iterations. This gives you more snapshots of disk usage, giving a more accurate picture of how disk bandwidth is being used.

You can also have iotop only report an application if it is using an excessive amount of resources. This filters out apps that aren’t likely to be causing issues. If an app begins using large amounts of resources, it will appear in iotop’s output.

Similarly, you can have iotop only output the top applications currently consuming disk bandwidth. This command takes five samples of disk usage, displaying only the top applications that are hitting the disk.

If you know that disk use on your server is heavy but can’t watch iotop constantly, it can be used to output a log of disk use in the background. The log can then be checked later to identify problematic applications. This command will log iotop output for later analysis:

When editing your crontab, add the below line. Edit the line to suit your needs. This example logs only certain applications for later investigation.

Save this file and wait a minute for it to run. You’ll see logs in /var/log/iotop.

Указываем сетевые параметры

Итак, у нас в наличии только что установленная система. Узнать или проверить ее версию можно командами:

# uname -a
Linux debian10 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5 (2019-06-19) x86_64 GNU/Linux

# lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster

Очень подробно про настройку сети в Debian я написал в отдельной статье. Рекомендую с ней ознакомиться. Здесь же кратко выполним основное. Для настройки сети, необходимо отредактировать файл /etc/network/interfaces. Сделаем это:

# nano /etc/network/interfaces

Для получения IP адреса по dhcp достаточно будет следующего содержания:

allow-hotplug eth0
iface eth0 inet dhcp

Если у вас статический адрес, то его настроить можно следующими параметрами в файле:

allow-hotplug eth0
iface eth0 inet static
address 192.168.1.24
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1

Сохраняем файл. Теперь нужно выполнить перезапуск сети. В Debian это делается командой:

# systemctl restart networking.service

В системном логе /var/log/syslog при этом будут записи:

debian10 systemd: Stopping Raise network interfaces...
debian10 systemd: networking.service: Succeeded.
debian10 systemd: Stopped Raise network interfaces.
debian10 systemd: Starting Raise network interfaces...
debian10 systemd: Started Raise network interfaces.

Будьте аккуратны при настройке и перезапуске сети, если подключаетесь к серверу удаленно. Обязательно должен быть доступ к консоли на случай, если где-то ошибетесь и потеряете доступ к серверу.

К сетевым настройкам я отношу установку пакета net-tools, в состав которого входят старые и привычные утилиты для работы с сетью — ifconfig, netstat, route и другие. В современных дистрибутивах их заменили одной командой ip, но лично мне вывод некоторых старых команд, конкретно, netstat, нравится больше, поэтому я иногда ими тоже пользуюсь.

# apt install net-tools

На этом настройка сети закончена.

Conclusion

And there you have it, you just learned how to display bandwidth usage on an interface by host. To get more info type the following man command or visit this page:

iftop command options

Option Description
-h display this message
-n don’t do hostname lookups
-N don’t convert port numbers to services
-p run in promiscuous mode (show traffic between other hosts on the same network segment)
-b don’t display a bar graph of traffic
-B Display bandwidth in bytes
-i interface listen on named interface
-f filter code use filter code to select packets to count (default: none, but only IP packets are counted)
-F net/mask show traffic flows in/out of IPv4 network
-G net6/mask6 show traffic flows in/out of IPv6 network
-l display and count link-local IPv6 traffic (default: off)
-P show ports as well as hosts
-m limit sets the upper limit for the bandwidth scale
-c config file specifies an alternative configuration file
-t use text interface without ncurses
-o 2s Sort by first column (2s traffic average)
-o 10s Sort by second column (10s traffic average)
-o 40s Sort by third column (40s traffic average)
-o source Sort by source address
-o destination Sort by destination address
-s num print one single text output afer num seconds, then quit
-L num number of lines to print

Настройка ssh

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

Существует расхожее мнение, что менять порт ssh это наивность, а не защита. Надо просто настроить сертификаты, fail2ban или еще каким-то образом защитить ssh порт, к примеру, с помощью ограничений iptables, и т.д. Тем не менее, я все же рекомендую порт сменить на нестандартный. Даже если у вас все защищено от подбора паролей, так как вы используете сертификаты, лишние запросы к ssh порту тратят ресурсы сервера, хоть и не очень большие. Идет установка соединения, обмен рукопожатиями и т.д. Зачем вам это нужно?

По-умолчанию в Debian, впрочем как и в любом другом дистрибутиве Linux, ssh сервер работает на 22 порту. Изменим этот порт, к примеру, на 23331. Так же я еще изменяю конфигурацию для разрешения подключения по ssh пользователя root с использованием пароля. В Debian из коробки пользователь root по ssh паролем авторизовываться не может. Изменим и это. Открываем файл настроек:

# nano /etc/ssh/sshd_config

И изменяем там следующие строки. Приводим их к виду:

Port 23331
PermitRootLogin yes

Сохраняем изменения и перезапускаем сервер ssh следующей командой:

# service sshd restart

Проверяем изменения:

# netstat -tulnp | grep ssh

tcp 0 0 0.0.0.0:23331 0.0.0.0:* LISTEN 925/sshd
tcp6 0 0 :::23331 :::* LISTEN 925/sshd

Все в порядке, сервер слушает 23331 порт. Теперь новое подключение будет осуществлено только по порту 23331. При этом, после перезапуска ssh, старое подключение не будет разорвано.

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

Отдельно тему подключения к серверу под root я рассмотрел в статье про sudo. Кому интересно, переходите в нее и делитесь своим мнением на этот счет.

Установка и настройка screen

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

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

Позже я решил подробнее ознакомиться с этим инструментом и обнаружил, что там есть несколько удобных моментов, которые можно использовать в ежедневной работе. Вот как использую утилиту screen я. При подключении к серверу у меня запускается screen с тремя окнами 1, 2, 3. Первое окно автоматически переходит в каталог /, второе в /etc, третье в /var/log. Я осмысленно назвал эти окна: Main, etc, logs соответственно. Внизу находится строка состояния, в которой отображен список всех открытых окон и подсвечено активное окно.

С помощью горячих клавиш я очень быстро переключаюсь между окнами в случае необходимости. Вот как выглядит мое рабочее окно ssh подключения:

Переключаюсь между окнами с помощью стандартных горячих клавиш screen: ctrl+a 1,  ctrl+a 2, ctrl+a 3. Я специально изменил нумерацию, чтобы она начиналась не с 0 по-дефолту, а с 1. Так удобнее на клавиатуре переключать окна. Кнопка 0 находится слишком далеко от 1 и 2.

Чтобы настроить такую же работу screen, как у меня, достаточно выполнить несколько простых действий. Сначала устанавливаем screen:

# apt install screen

Создаем в каталоге /root конфигурационный файл .screenrc следующего содержания:

# mcedit /root/.screenrc
#Выводим строку состояния
hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"

# Добавляем некоторые настройки
startup_message off
defscrollback 1000
defutf8 on
shell -$SHELL

# Создаем несколько окон
chdir
screen -t Main 1
chdir /etc
screen -t etc 2
chdir /var/log
screen -t logs 3

# Активное первое окно после запуска
select 1

Для знакомства с настройками, горячими клавишами и вариантами применения утилиты screen можно по адресу http://itman.in/ssh-screen/ Мне помог этот материал. Написано кратко, по делу и доходчиво.

Developers Reference Links

  • ActionScript 3 guides, tutorials, and samples
  • ActionScript 3.0 Developer’s Guide
  • Adobe Dreamweaver CS4 manual
  • Adobe Flash Professional CS5 Ref. Manual
  • Adobe FMS 3.5 Reference Manual
  • Adobe Help Resource Center
  • BlazeDS Developer Guide
  • Flash AC3 Language reference
  • Flash AC3 ref.manual
  • Flash and AS3 links – documentation
  • Flash CS3 documentations
  • Flex – Getting started
  • Flex 2 Getting started ref. manual
  • Flex 3 Reference Manual
  • Flex 3.5 Language Reference Manual
  • Linux on-line books paradise
  • Linux on-line man pages
  • Linux on-line man pages
  • Linux Red-Hat admin guide
  • Mysql Reference Manual

QUIRKS (aka they’re features, not bugs)

There are some circumstances in which iftop may not do what you expect. In most cases what it is doing is logical, and we believe it is correct behaviour,
although I’m happy to hear reasoned arguments for alternative behaviour.

Totals don’t add up

There are several reasons why the totals may not appear to add up. The most obvious is having a screen filter in effect, or screen ordering frozen. In this
case some captured information is not being shown to you, but is included in the totals.

A more subtle explanation comes about when running in promiscuous mode without specifying a -F option. In this case there is no easy way to assign
the direction of traffic between two third parties. For the purposes of the main display this is done in an arbitrary fashion (by ordering of IP addresses),
but for the sake of totals all traffic between other hosts is accounted as incoming, because that’s what it is from the point of view of your interface. The
-F option allows you to specify an arbitrary network boundary, and to show traffic flowing across it.

Peak totals don’t add up

Again, this is a feature. The peak sent and peak received didn’t necessarily happen at the same time. The peak total is the maximum of sent plus received in
each captured time division.

Changing the filter code doesn’t seem to work

Give it time. Changing the filter code affects what is captured from the time that you entered it, but most of what is on the display is based on some
fraction of the last 40s window of capturing. After changing the filter there may be entries on the display that are disallowed by the current filter for up to
40s. DISPLAY FILTERING has immediate effect and does not affect what is captured.

Run iftop using options

Turn on Port display

To turn on port display, add -P option with iftop

# iftop -P

The port will be displayed in both side. With this option turn on, we can analyze what kind of communication that happened the most.

Display bandwidth rates in bytes/sec

By default, iftop will display rates in bits/sec. To display it in bytes/sec, we can use -B option.

# iftop -B

We know that iftop display rates in bytes/sec is from the capital B letter on the data sent (TX) and received (RX). While if we show the b letter on the data sent and received it tell us that the rates is in bits/sec.

Specifies a network for traffic analysis

We can also ask iftop to only monitor specified network mask. To use this, we can use -F option followed by network mask.

# iftop -F 255.255.0.0

The above command will ask iftop to monitor network which has network mask 255.255.0.0.

Specify a listening interface

If your system has more than 1 interfaces to monitor, we can specify particular interface. Let say if we want to monitor eth0 interface, we can use -i option followed by the interface name.

# iftop -i eth0

Limit the upper bandwidth

Iftop provide an option to limit the upper bandwidth. To use this we can -m option followed by how much the limit.

# iftop -m 2000

The above command will tell iftop to limit 2 Kb (2 Kilobits).

On-screen command

Another part that makes iftop is interesting that iftop provides on-screen command. Press the question mark (?) button on the iftop screen to display the available command.

To exit from the on-screen command help, press the question mark button again.

Заключение

Вот так легко и быстро можно настроить роутер, маршрутизатор или шлюз в интернет. Названия разные, а суть одна. В данном случае я использовал операционную систему Debian, но схожий функционал легко организовать на Freebsd или CentOS. Для решения текущей задачи разница в работе не будет заметна. Каждый выбирает то, что больше нравится и к чему привык.

Пройдемся быстренько по этапам того, что сделали:

  1. Подготовили сервер Debian к настройке шлюза.
  2. Настроили маршрутизацию, iptables, нат. Проверили, что весь функционал восстанавливается после перезагрузки.
  3. Установили и настроили простой dhcp сервер и кэширующий dns сервер — dnsmasq. С его помощью автоматизировали поучение сетевых настроек пользователями.
  4. Установили простое средство мониторинга сетевой активности в консоли в режиме реального времени с помощью утилиты iftop.

На этом мы закончили настройку. Как продолжение развития темы интернет шлюза можно заняться настройкой прокси сервера для управления доступам к ресурсам интернета, или сервера openvpn для подключения филиалов или удаленных сотрудников. Для примера привел ссылки на другие дистрибутивы. Со временем планирую описать реализацию этого функционала на debian. Принципиальных отличий нет, только нюансы разных дистрибутивов.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Онлайн курс «Сетевой инженер»

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные сети, рекомендую познакомиться с онлайн-курсом «Сетевой инженер» в OTUS. Это авторская программа в сочетании с удалённой практикой на реальном оборудовании и академическим сертификатом Cisco! Студенты получают практические навыки работы на оборудовании при помощи удалённой онлайн-лаборатории, работающей на базе партнёра по обучению — РТУ МИРЭА: маршрутизаторы Cisco 1921, Cisco 2801, Cisco 2811; коммутаторы Cisco 2950, Cisco 2960.

Особенности курса:

  • Курс содержит две проектные работы.;
  • Студенты зачисляются в официальную академию Cisco (OTUS, Cisco Academy, ID 400051208) и получают доступ ко всем частям курса «CCNA Routing and Switching»;
  • Студенты могут сдать экзамен и получить вместе с сертификатом OTUS ещё сертификат курса «CCNA Routing and Switching: Scaling Networks»;

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

Помогла статья? Подписывайся на telegram канал автора

Рекомендую полезные материалы по Debian:
Настройки системы
  • Установка
  • Базовая настройка
  • Настройка сети
  • Обновление 8 до 9
  • Обновление 7 до 8
  • Включение логов cron

Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика.

Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования.

Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др.

Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления.

Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления.

Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog.

Настройка программных комплексов
  • Proxmox
  • Шлюз в интернет
  • Установка Asterisk
  • Asterisk+Freepbx
  • PostgreSQL для 1С
  • Настройка pptp

Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке.

Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop.

Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk.

Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки.

Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива.

Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети.

Разное
  • Бэкап с помощью rsync
  • Тюнинг postgresl для 1C

Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows.

Ускорение работы 1С с postgresql и диагностика проблем производительности

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *