Системы мониторинга сервера linux

Описание работы простых проверок (simple check)

Стал искать материал на эту тему и прочитал про simple check (простые проверки) в zabbix. Оказалось, это то, что нужно. Их можно использовать для безагентских проверок удаленных сервисов. При этом требуется минимум настроек и только на сервере. Можно создать шаблон и распространить на любое количество хостов.

Принцип работы простых проверок следующий. Вы создаете item, в нем указываете тип simple check, в качестве ключа выбираете net.tcp.service, указываете соответствующие параметры в скобках и все. Сервер сам начинает опрашивать указанный сервис и возвращать в зависимости от его доступности или 1. Устанавливать агент на хост не нужно. Мониторить можно любую сетевую службу, к которой есть доступ по tcp.

Возвращаемые значения net.tcp.service
сервис недоступен
1 сервис работает

Всего в простых проверках доступны 5 ключей. Подробнее о них читайте в документации. В данном случае меня будет интересовать только ключ net.tcp.service. В нем предопределены алгоритмы проверок следующих служб: ssh, ntp, ldap, smtp, ftp, http, pop, nntp, imap, https, telnet. Детали реализации проверки каждой службы описаны тут. Если вы мониторите службу, которая не входит в указанный выше список, то происходит просто проверка возможности подключения, без отправки и получения каких-то данных.

Vnstat

Vnstat немного отличается от большинства других инструментов где Мониторинг сети Linux является основой. На самом деле он запускает фоновый сервис / daemon и постоянно фиксирует размер передачи данных. Кроме того, его можно использовать для создания отчета об истории использования сети.

:~$ sudo service vnstat status
 * vnStat daemon is running

Запуск vnstat без каких-либо параметров просто покажет общий объем передачи данных, который произошел с момента запуска демона.

:~$ sudo vnstat
Database updated: Mon Mar 17 15:26:59 2014

   eth0 since 06/12/13

          rx:  135.14 GiB      tx:  35.76 GiB      total:  170.90 GiB

   monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Feb '14      8.19 GiB |    2.08 GiB |   10.27 GiB |   35.60 kbit/s
       Mar '14      4.98 GiB |    1.52 GiB |    6.50 GiB |   37.93 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated      9.28 GiB |    2.83 GiB |   12.11 GiB |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
     yesterday    236.11 MiB |   98.61 MiB |  334.72 MiB |   31.74 kbit/s
         today    128.55 MiB |   41.00 MiB |  169.56 MiB |   24.97 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       199 MiB |      63 MiB |     262 MiB |

Чтобы отслеживать использование полосы пропускания в реальном времени, используйте параметр «-l» (режим «вживую»). Затем она покажет общую пропускную способность, используемую входящими и исходящими данными, но очень точным образом, без каких-либо внутренних сведений о хостах или процессах.

:~$ vnstat -l -i eth0
Monitoring eth0...    (press CTRL-C to stop)

   rx:       12 kbit/s    10 p/s          tx:       12 kbit/s    11 p/s

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

Vnstat поддерживает множество опций, подробности о которых можно найти на странице руководства.

Установить в Debian или Ubuntu

Установить в Fedora или CentOS

Если в CentOS при установке возникли проблемы, то скорее всего вам нужно подключить

А затем ввести команду установки заново.

Настройка сети с помощью Iproute2

Актуально для Debian 9 и выше.

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

ip a

На выходе будет что-то похожее на

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 30:f9:ed:d9:ea:d3 brd ff:ff:ff:ff:ff:ff
inet 192.0.2.131/24 brd 192.0.2.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::32f9:edff:fed9:ead3/64 scope link
valid_lft forever preferred_lft forever
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:76:3f:f5:c4:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.43.4/24 brd 192.168.43.255 scope global dynamic noprefixroute wlp1s0
valid_lft 2800sec preferred_lft 2800sec
inet6 fe80::ba76:3fff:fef5:c41f/64 scope link noprefixroute
valid_lft forever preferred_lft forever

Раньше интерфейсы назывались

eth0

,

eth1

и так далее, сейчас уenp0s31f6: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 54:05:db:cd:b2:af txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xef380000-ef3a0000

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 2465 bytes 795656 (795.6 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2465 bytes 795656 (795.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vboxnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.1 netmask 255.255.255.0 broadcast 192.168.56.255
inet6 fe80::800:27ff:fe00:0 prefixlen 64 scopeid 0x20<link>
ether 0a:00:27:00:00:00 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 678 bytes 51442 (51.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.1.70.158 netmask 255.255.240.0 broadcast 10.1.79.255
inet6 fe80::9708:9f80:20b5:4777 prefixlen 64 scopeid 0x20<link>
ether 8c:8d:28:c5:a2:2e txqueuelen 1000 (Ethernet)
RX packets 1103516 bytes 1061399166 (1.0 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 320242 bytes 110222925 (110.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
них более разнообразные названия.
1: Первый интерфейс это
lo
он направлен на локальную машину и имеет IP
127.0.0.1/8
2: Второй интерфейс
enp3s0 это моё поключение к по Ethernet к другому ПК.

В этом примере компьютер с Debian (1) соединён с компьютером
с

Windows

(2) напрямую через Ethernet кабель

Через это подключение я захожу на комп номер 1 по SSH.

IP компьютера с Debian вы видите выше
192.0.2.131/24
, а у компа с Windows IP
192.0.2.130/24
его здесь, естественно не видно.

Как настроить этот IP читайте

3: Третий интефейс
wlp1s0
это подключение к местному Wi-Fi от мобильного телефона.
IP получен динамически
192.168.43.4/24

2.4 Связь между статусом

Подробные сведения см. в исходном тексте:https://blog.51cto.com/net881004/2164020 Рисунок1: Схематическая диаграмма волнообразного процесса установления соединения между клиентом и сервером  Рисунок 2: диаграмма перехода состояний TCP  Рисунок 3. Диаграмма переходов между состояниями закрытой части

3. Использование ss.

Если вы не добавите параметр , команда ss по умолчанию выведет все установленные соединения (не включая порт прослушивания), включая tcp, udp и unix socket три типа соединений: $ ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 192.168.31.177:38885 60.227.167.98:24932 tcp ESTAB 0 0 192.168.31.177:35846 89.42.31.211:polestar tcp CLOSE-WAIT 32 0 127.0.0.1:59638 127.0.0.1:socks tcp CLOSE-WAIT 1 0 127.0.0.1:59612 127.0.0.1:socks tcp FIN-WAIT-2 0 0 127.0.0.1:socks 127.0.0.1:59606 tcp ESTAB 0 0 192.168.31.177:34970 89.42.31.211:polestar

top — мониторинг активности процессов

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

Часто используемые горячие клавиши с лучшими инструментами мониторинга Linux

Ниже приведен список полезных горячих клавиш:

Горячая клавиша Применение
t Отображает, включена или выключена опция представления сводных данных
m Отображает, включена или выключена опция представления информации о памяти
A Сортирует задачи по активности потребления различных системных ресурсов. Полезно для быстрой идентификации задач, требующих высокой производительности в системе.
f Вход в интерактивный экран конфигурации для команды top. Полезно для настройки top под конкретную задачу.
o Позволяет выбрать способ упорядочивания информации для команды top.
r Выполняет команду renice.
k Выполняет команду kill.
z Включает или выключает цвет/моно

Pktstat

Pktstat отображает все активные соединения в реальном времени и скорость, с которой данные передаются через них. Он также отображает тип соединения, т.е. TCP или UDP, информации об HTTP-запросах.

Опции:

  • -B — Скорость передачи данных в (Bps) а не в (bits);
  • -F — Показать полное имя хоста;
  • -i — Указать интерфейс на котором слушать трафик;
  • -n — Отключение преобразования хоста в имя, другими словами отключение DNS resolver;
  • -p — В качестве еденицы измерения показывает число пакетов;
  • -t — Режим «Топ» Делает сортировку по обьему трафика;
  • -w — Частота обновления екрана, по умолчанию 5 секунд;
  • -1 — Делает снапшот сетевых соеденений на протяжении времени указанного ключем «-w» или по умолчанию соответственно 5 секунд;

Пример:

Установка:

Netstat

Netstat – это мощная утилита, которая может выводить сетевые соединения, таблицы маршрутизации, статистику интерфейсов, маскарадить соединения и т.д.

Мы будем использовать его для достижения целей этого руководства.

Установка Netstat

В системах на основе Debian и Debian, таких как Ubuntu, используйте apt.

В системах на базе Red Hat Enterprise Linux и Red Hat используйте yum,

В системах на основе Arch используйте pacman.

Просмотр сетевых процессов

Во-первых, давайте рассмотрим процессы.

Для этого введите следующую команду:

В этой команде t отображает TCP-соединения, u отображает UDP-соединения, l показывает только прослушивающие сокеты, p показывает программу, к которой принадлежит соединение, e показывает расширенную информацию, а n представляет адреса, пользователей и порты в числовом виде.

При рассмотрении модели клиент-сервер, на которой основано большинство сетевого программного обеспечения, процессы  можно рассматривать как программное обеспечение, работающее в «серверном» режиме

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

Здесь следует отметить одно важное отличие.

Для подключений tcp4/udp4 (просто перечисленных как tcp и udp), где локальный адрес указан как 0.0.0.0, процесс прослушивает соединения с любого компьютера, который может подключиться к нему по сети, тогда как когда он указан как 127.0 .0.1 он только прослушивает соединения на локальном хосте (машине, на которой он запущен или сам) и не может быть подключен к другим компьютерам в сети. Такое же различие справедливо для tcp6/udp6 при сравнении локального адреса : : (обращенного к сети) и ::1 (только localhost).

Теперь давайте посмотрим на все текущие сетевые подключения.

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

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

Просмотр установленных подключений

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

ss

Команда netstat долгое время была фаворитом у системных администраторов, однако недавно ее заменила команда ss, которая может похвастаться тем, что работает быстрее, проще и удобочитаемее, чем netstat.

Давайте посмотрим, как выполнить те же действия, что и выше, с помощью ss.

Ss также имеет параметр -e для просмотра расширенной информации, но этот параметр был опущен в приведенных ниже примерах, поскольку он дает дополнительную информацию, которая может привести к менее читаемому выводу.

Просмотр процессов

Для просмотра всех процессов введите следующее:

В этой команде t отображает TCP-соединения, l показывает только прослушивающие сокеты, u отображает UDP-соединения, n представляет адреса, пользователей и порты в числовом виде, а p показывает программу, к которой принадлежит соединение.

Просмотреть все сетевые подключения

Чтобы просмотреть все сетевые соединения, введите следующее, где a заменяет l и показывает все сетевые сокеты, а не только слушающие.

Просмотр установленных подключений

Если -a или -l не включены, то ss покажет только установленные соединения.

Для просмотра только установленных соединений введите следующее.

lsof

На случай, если вам не хватило netstat и ss, мы представляем lsof. Lsof используется для вывода списка открытых файлов.

GNU/Linux унаследовал принцип проектирования UNIX, согласно которому все является файлом; это включает  в себя и сетевые подключения.

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

#11. Pandora FMS

Ключевые особенности:

  • Pandora FMS расшифровывается как Pandora Flexible Monitoring Solution.
  • Pandora FMS – это инструмент мониторинга ИТ-инфраструктуры в единой консоли.
  • Элементы Pandora FMS состоят из консоли, базы данных, серверов, агентов.

Используя Pandora FMS, мы можем отслеживать:

  • Сеть
  • Логи
  • Базы данных
  • Облака
  • Приложения
  • Серверы
  • IPAM
  • SAP
  • Интернет вещей

Он может выполнять как удаленный мониторинг, так и мониторинг на основе агентов, установленных на серверах.

Преимущества:

  • Pandora FMS имеет версию с открытым исходным кодом.
  • У него также есть также версия Enterprise, которая используется многими ИТ-компаниями.
  • Версия Pandora FMS с открытым исходным кодом и корпоративная версия регулярно обновляются каждый месяц.
  • Имеет прямой доступ с консоли.

Мы рассмотрели инструменты мониторинга с открытым исходным кодом для Linux-Prometheus, Grafana, Elastic search, Nagios Core, Zabbix, Cacti, Icinga, MRTG, Netdata, Sensu, Pandora FMS.

Ipband

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

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

Как вы видели, у нас есть десятки инструментов для мониторинга сети нашего сервера с операционной системой Linux, наш любимый — iptraf, потому что он предоставляет нам большой объем информации.

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

Iptraf

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

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

Меню программы логичное и интуитивно понятное, особое внимание уделять интерфейсу не будем

Рассмотрим основные опции:

  • -i — Позволяет указать интерфейс для мониторинга, или указать опцию «all» для мониторинга всех адаптеров «iptraf -i all»;
  • -g — Мониторинг общей статистики интерфейсов;
  • -d — Подробный мониторинг определенного интерфейса;
  • -s — Подробный мониторинг активности по TCP/UDP протоколам, на определенном интерфейсе;
  • -z — Позволяет проводить сбор статистики количества пакетов по их размеру на указанном интерфейсе;
  • -l — Позволяет провести мониторинг локальной сети LAN определенного интерфейса или всех их «iptraf -i all»;
  • -t — Позволяет задать время работы программы в минутах. Не работает в интерактивном режиме;
  • -B — Отправляет весь вывод в /dev/null и выполнение происходит в фоне, полезно для скриптов. Работает вместе с ключами -i, -g, -d, -s, -z, или -l;
  • -L — Позволяет указать альтернативный файл журнала, указывать необходимо абсолютный путь. ;

«******** IP traffic monitor started ********»«******** IP traffic monitor stopped ********»Пример:

/home/igor/iptraf.logУстановка:

Мониторинг доступности сервиса по сети

В качестве примера настроим мониторинг доступности прокси сервера squid. Он запущен на linux сервере и этот хост уже добавлен на сервер мониторинга. Данные поступают с помощью агента, но мы не будет его использовать. Просто создадим одиночный item для проверки доступности squid и trigger для отправки уведомления, если сервис не работает. В данном примере я рассмотрю настройку на примере конкретного хоста. Если у вас несколько серверов с squid, которые вы хотите мониторить, то все элементы лучше создать не отдельно на каждом хосте, а сразу сделать template и назначить его нужным хостам.

Итак, идем в Configuration -> Hosts и выбираем там хост, на котором установлен squid. Переходим в раздел Items и нажимаем Create item.

Заполняем необходимые параметры элемента.

Обязательно заполнить первые 3, остальные на ваше усмотрение. Я считаю, что проверять каждые 30 секунд и хранить 90 дней информацию излишне, поэтому изменяю эти параметры в сторону увеличения.

Squid status Имя итема.
Simple check Тип итема.
net.tcp.service Проверять tcp порт 3128 на указанном хосте. Если вы проверяете статус службы, расположенной не на том же хосте, к которому прикрепляете item, то после первой запятой можно указать необходимый адрес.

Сразу создадим триггер, который в случае возврата в последних двух проверках значения итемом 0, будет отправлять уведомление о том, что служба недоступна. Для этого идем в раздел triggers и жмем Create trigger. Заполняем параметры элемента.

Выражение {xm-proxy:net.tcp.service.last(#2)}=0 означает, что триггер срабатывает, если 2 последних значения были равны 0.

Ждем пару минут и идем в Latest data проверять поступаемые значения.

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

3.3 Общие комбинации

Просмотр порта, контролируемого хостом, локального IP-адреса и номера цифрового порта TCP (t: tcp; n: цифровой дисплей; l мониторинг) $ ss -tnl отображаемое имя, например 127.0.0.1:53 выше, отображается как tigger: domain; порт 22 отображается как ssh и т. д. $ ss -tlr $ ss -tnl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:1080 0.0.0.0:* LISTEN 0 5 0.0.0.0:8999 0.0.0.0:* LISTEN 0 5 :8999 :* $ ss -trl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 localhost:socks 0.0.0.0:* LISTEN 0 5 0.0.0.0:bctp 0.0.0.0:* LISTEN 0 5 :bctp :* плюс p, отображать pid $ ss -tlrp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 localhost:socks 0.0.0.0:* users:((«sslocal»,pid=1123,fd=3)) LISTEN 0 5 0.0.0.0:bctp 0.0.0.0:* users:((«qbittorrent»,pid=618,fd=29)) LISTEN 0 5 :bctp :* users:((«qbittorrent»,pid=618,fd=28)) все соединения TCP ss -tan State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:1080 0.0.0.0:* LISTEN 0 5 0.0.0.0:8999 0.0.0.0:* TIME-WAIT 0 0 127.0.0.1:1080 127.0.0.1:32874 TIME-WAIT 0 0 127.0.0.1:1080 127.0.0.1:32890 ESTAB 0 0 127.0.0.1:1080 127.0.0.1:32910 ESTAB 0 0 192.168.31.177:37342 89.42.31.211:1060 ESTAB 0 0 127.0.0.1:32898 127.0.0.1:1080 CLOSE-WAIT 0 0 192.168.31.177:57108 58.250.136.56:8080 ESTAB 0 0 127.0.0.1:1080 127.0.0.1:32894 ESTAB 0 0 192.168.31.177:37330 89.42.31.211:1060 ESTAB 0 0 127.0.0.1:1080 127.0.0.1:32902 ESTAB 0 0 127.0.0.1:32894 127.0.0.1:1080 ESTAB 0 0 192.168.31.177:37334 89.42.31.211:1060 ESTAB 0 0 127.0.0.1:32906 127.0.0.1:1080 ESTAB 0 0 127.0.0.1:32910 127.0.0.1:1080 ESTAB 0 0 127.0.0.1:1080 127.0.0.1:32898 ESTAB 0 0 192.168.31.177:49443 60.227.167.98:24932 ESTAB 0 0 192.168.31.177:37346 89.42.31.211:1060 ESTAB 0 0 127.0.0.1:1080 127.0.0.1:32906 ESTAB 0 0 192.168.31.177:37338 89.42.31.211:1060 ESTAB 0 0 127.0.0.1:32902 127.0.0.1:1080 LISTEN 0 5 :8999 :* Просмотреть все протоколы TCP, UDP, цифровой дисплей, идентификатор дисплея $ ss -tuanp Просмотреть все протоколы TCP, UDP, отображение имени, идентификатор отображения $ ss -tuarp Другие команды: ‘nc’ means ‘netcat’, not ‘netconsole’. Install gnu-netcat and try again. https://wiki.archlinux.org/index.php/Netconsole https://wiki.archlinux.org/index.php/Network_tools#Netcat https://en.wikipedia.org/wiki/Netcat https://www.archlinux.org/packages/?name=socat

Проверка подключения

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

  1. обнаружен и включён. В противном случае, проверьте драйвер устройства – см. и .
  2. Вы подключены к сети: воткнут сетевой кабель или есть подключение к беспроводной сети.
  3. Сетевому интерфейсу присвоен .
  4. Правильно настроена .
  5. Возможно локальный IP-адрес (например, шлюз по умолчанию).
  6. Возможно публичный IP-адрес (например, — DNS-сервер Google).
  7. Работает (например, ).

Ping

Для проверки соединения с хостом, используется утилита ping.

$ ping www.example.com
PING www.example.com (93.184.216.34): 56(84) data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.632 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=11.726 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=10.683 ms
...

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

Примечание: Если вы получили сообщение об ошибке при запуске ping, то попробуйте переустановить пакет .

Решение проблем

Проблема масштабирования TCP window

Заголовк TCP-пакета содержит поле «Window», которое определяет, какое количество данных может быть прислано в ответ другим хостом. Ширина поля составляет 16 бит, следовательно, размер окна не может превышать 64 Kбайт. С учётом кэширования пакетов, связанного с необходимостью восстановить их исходный порядок, значение окна легко может быть превышено.

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

В итоге соединение в лучшем случае очень медленное или часто прерывается.

Диагностика

Прежде всего, необходимо пояснить: это довольно странная проблема. В некоторых случаях вы вообще не сможете использовать соединения TCP (HTTP, FTP и т.д.), в других — сможете обращаться к некоторым узлам (лишь нескольким).

Если у вас появилась такая проблема, вывод будет нормальным, логи — чистыми, а сообщит о нормальном состоянии… Все будет выглядеть нормально.

Если вы не можете просматривать никакие веб-сайты, но можете отправлять запросы ping на некоторые узлы, высока вероятность, что у вас именно эта проблема: ping использует ICMP, поэтому проблемы TCP на него не влияют.

С помощью Wireshark можно будет увидеть, что UDP- и ICMP-соединения работают, а TCP-соединение с внешними узлами установить не удаётся.

Способы решения проблемы

Плохой

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

# echo "4096 87380 174760" > /proc/sys/net/ipv4/tcp_rmem
Хороший

Просто отключите масштабирование. Эта функция — довольно приятное дополнение к стандартному TCP, и без неё может быть некомфортно, особенно если вы не имеете возможности перенастроить неправильно работающий маршрутизатор. Есть несколько способов отключения масштабирования, и, кажется, наиболее надёжный из них (работает с большинством ядер) — добавить следующую строку в файл (см. также sysctl):

net.ipv4.tcp_window_scaling = 0
Лучший

Проблема вызвана неправильно работающим маршрутизатором/межсетевыми экранами, поэтому просто замените его. Некоторые пользователи отмечали, что таким маршрутизатором был их собственный маршрутизатор DSL.

Дополнительная информация

На странице LKML есть также несколько ссылок по теме.

Нет подключения к локальной сети через мост

Первый компьютер подключён к двум локальным сетям. Второй — к одной локальной сети и первому компьютеру. Выполните следующие команды, чтобы дать второму компьютеру доступ к сети за мостовым интерфейсом (на первой машине):

# sysctl net.bridge.bridge-nf-filter-pppoe-tagged=0
# sysctl net.bridge.bridge-nf-filter-vlan-tagged=0
# sysctl net.bridge.bridge-nf-call-ip6tables=0
# sysctl net.bridge.bridge-nf-call-iptables=0
# sysctl net.bridge.bridge-nf-call-arptables=0

speedometer

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

Опции:

  • -f filename — Отображает скорость чтения/записи файла;
  • -r network-interface — Отображает скорость полученных байт интерфейса;
  • -t network-interface — Отображает скорость переданных байт интерфейса;
  • -i interval-in-seconds — Интервал в секундах, например «5» или «0,25», по умолчанию «1»;
  • -k — Установить количество цветов терминала, доступны значения: (1|16|88|256);
  • -l — Использовать линейные графики;
  • -m/-n — Установить максимальый(m)/минимальный(n) потог отображения bytes/second;
  • -s — Использовать bits/s вместо bytes/s;

Пример: Установка:

Как установить статический IP

Чтобы подлкючиться к другому компьютеру через Ethernet нужно в Windows выставить
параметры адаптера через контольную панель. То же самое нужно было сделать и
в Linux.

Для этого нужно выполнить команду

sudo vi /etc/network/interfaces

И добавить туда

Обратите внимание, что gateway не указан.

И перезапустить сеть

/etc/init.d/networking restart

или

sudo service networking restart

Второй вариант проще запомнить, но, чтобы он заработал
нужно наличие service

Теперь если у Вас установлен SSH можно зайти на компьютер с Linux по ssh с помощью

или

Если нужно установить SSH выполните

sudo apt install openssh-server

sudo apt-get install openssh-client

4 curl

Curl – это многоцелевой инструмент.

Знаете ли вы, что вы можете использовать подключение по telnet к порту с помощью curl?

Ну, теперь вы знаете.

Ниже приведен рабочий пример.

И, когда нет проблем с портом прослушивания или брандмауэром, вы увидите, что-то вроде такого вывода.

Вы также можете использовать curl для загрузки данных. Он поддерживает несколько протоколов – HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER и т. д.

Интересные статьи про инструмент Curl

  • ️ Как установить CURL на Windows 10
  • ? Как проверить внешний IP-адрес с помощью службы DNS
  • Как настроить прокси в CentOS / RHEL / Fedora

3.2 фильтрация

3.2.1 фильтрация статуса

$ ss state syn-recv Доступны следующие параметры, число позади — это количество строк, запрошенных в данный момент машиной по статусу | wc -l syn-sent отправить сигнал синхронизации syn-recv получает сигнал синхронизации установлен для установления соединения fin-wait- {1,2} дождитесь завершения 2 время ожидания 2 закрыто 111 Закрыть-ждать, дождаться закрытия 2 Last-ack Окончательное подтверждение прослушивание 32 закрытие закрытие 1 all: все 10 указанных выше состояний. connected: все остальные состояния, кроме прослушивания и закрытия (8 состояний) synchronized: все подключены, кроме syn-sent (7 состояний) bucket: Состояние отображения поддерживается как мини-розетки, например time-wait и syn-recv. ( 2 состояния) big: противоположен сегменту (8 состояний)

$ ss state all |wc -l 1036 $ ss state connected |wc -l 889 $ ss state synchronized |wc -l 904 $ ss state bucket |wc -l 18 $ ss state big |wc -l 1023 $ ss state listening |wc -l 34

3.2.2 фильтр по семейству

{inet|inet6|link|unix|netlink|vsock|tipc|help} $ ss -f inet $ ss -f inet |wc -l 33 $ ss -f link |wc -l 6 $ ss -f unix |wc -l 851 $ ss -f netlink |wc -l 62 $ ss -f vsock |wc -l

3.2.3 Использовать фильтрацию адресов и портов

Источник и место назначения, порт источника и порт назначения соединения можно отфильтровать с помощью синтаксиса dst / src / dport / sprot. соответствует локальному адресу и номеру порта. $ ss src 192.168.31.177 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 192.168.31.177:60412 89.42.31.211:polestar tcp ESTAB 0 0 192.168.31.177:51972 58.250.136.56:http-alt tcp LAST-ACK 0 1 192.168.31.177:57926 220.194.95.148:https соответствует удаленному адресу и номеру порта. $ ss dst 89.42.31.211 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 192.168.31.177:60476 89.42.31.211:polestar tcp ESTAB 0 0 192.168.31.177:60452 89.42.31.211:polestar $ ss dst 192.168.31.113:http $ ss dst 192.168.31.113:80 Фильтрация портов $ ss dport OP PORT $ ss sport OP PORT OP оператора может представлять любое из следующего:<= le меньше или равен определенному номеру порта> = ge больше или равно определенному номеру порта== eq равно определенному номеру порта! = Ne не равно определенному номеру портаGt больше определенного номера порта<Lt меньше определенного номера порта $ ss -tunl sport lt 50 $ ss -tunl sport \< 50

Вместо поскриптума

Если нужно выключить и включить сеть в операционной системе Linux, используем всё ту же известную нам команду ifconfig.

Например, следующей командой мы выключим сетевую карту eth0:

sudo ifconfig eth0 down

А вот команда, включающая сетевую плату в Linux:

sudo ifconfig eth0 up

Также мы можем полностью остановить работу сетевых интерфейсов:

service network stop

Либо так:

/etc/init.d/network stop

Теперь включаем всё обратно:

service network start

Либо так:

/etc/init.d/network restart

На этом всё. Если хотите получить более профессиональные навыки Linux-администрирования, добро пожаловать на специальный курс в OTUS:

По материалам статей:
— https://set-os.ru/network-linux-setup/;
— https://itshaman.ru/articles/54.

3.1 пример использования

Отображение сводной статистики для каждого протокола. $ ss -s Total: 916 TCP: 75 (estab 15, closed 26, orphaned 4, timewait 18) Transport Total IP IPv6 RAW 1 1 0 UDP 14 13 1 TCP 49 48 1 INET 64 62 2 FRAG 0 0 0 Просмотреть все сокеты: ss -a $ ss |wc -l 901 $ ss -a |wc -l //898State 1 CLOSE-WAIT 2 ESTAB 749 FIN-WAIT-2 2 LAST-ACK 1 LISTEN 32 TIME-WAIT 2 UNCONN 110 Всего результат 898 Отобразить прослушивающие сокеты, перечислить все открытые порты сетевого подключения, ss -l или — прослушивание $ ss -l |wc -l //147 Отображать числовые адреса вместо попытки определить символический хост, порт или имя пользователя (пропустить преобразование DNS) ss -n или —numeric $ ss -n отображает символическое имя хоста, порта или пользователя вместо числового представления. Netstat делает это по умолчанию. ss -r или —resolve $ ss -r отображает идентификатор процесса (PID) и имя программы, которой принадлежит каждый сокет. $ ss -p включает информацию, относящуюся к сетевым таймерам. ss -o или —options $ ss -o отображает подробную информацию более высокого уровня. ss -e или —extended $ ss -e Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 0 192.168.31.177:34970 89.42.31.211:polestar uid:1001 ino:3316553 sk:750 <-> tcp ESTAB 0 0 127.0.0.1:59570 127.0.0.1:socks timer:(keepalive,38sec,0) uid:1001 ino:3335889 sk:76a <->

Заключение

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

Разница тут получается вот в чем. Допустим, сервер squid у вас запущен и работает на сервере. Проверка работы локальной службы показывает, что сервис работает и возвращает значение 1. Но к примеру, вы настраивали firewall и где-то ошиблись. Сервис стал недоступен по сети, пользователи не могут им пользоваться. При этом мониторинг будет показывать, что все в порядке, служба запущена, хотя реально она не может обслужить запросы пользователей. В таком случай только удаленная проверка покажет, что с доступностью сервиса проблемы и надо что-то делать.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: