Где записываются сообщения драйвера Ethernet для Linux?

Вопрос или проблема

Я хочу проанализировать ошибки сети и поэтому включил дополнительные уровни сообщений для драйвера Ethernet. После прочтения документации Linux для моего драйвера я выполнил ethtool -s eno2 msglvl 4805.

Теперь ethtool eno2 показывает:

[...]
        Текущий уровень сообщений: 0x000012c5 (4805)
                               drv link rx_err tx_err intr pktdata
[...]

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

Где я могу увидеть эти сообщения журнала от драйвера?

Это на Ubuntu 22.04, с ядром “5.15.0-92-lowlatency #102-Ubuntu”.

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

https://devconnected.com/linux-logging-complete-guide/

Ответ или решение

Ваша задача состоит в том, чтобы анализировать сетевые ошибки на локальной машине с операционной системой Ubuntu 22.04 и ядром 5.15.0-92-lowlatency. Вы включили дополнительные уровни сообщений для сетевого драйвера с помощью утилиты ethtool, однако не наблюдаете ожидаемых логов в стандартном выводе командной строки, таком как dmesg. Давайте рассмотрим, где и как эти сообщения могут быть зафиксированы.

Теория

В Linux сообщения драйверов сетевого оборудования обычно отправляются в системный журнал, который управляется подсистемой журнала ядра — klog. Эти сообщения могут содержать информацию о событиях, таких как ошибки приема и передачи пакетов, состояния устройств и другие информационные сообщения, которые могут быть полезны для диагностики и отладки. Типичными местами, где можно ожидать появление этих сообщений, являются:

  1. dmesg — вывод ядра, который показывает сообщения, записанные в кольцевой буфер ядра.

  2. Системные лог-файлы — зачастую на основе системных демонов, таких как rsyslog или systemd-journald, эти логи могут сохраняться в /var/log/syslog или /var/log/messages.

  3. journalctl — утилита для работы с журнальными файлами, которая позволяет просматривать логи, записанные systemd-journald.

Пример

Вы установили уровень сообщений драйвера на 0x000012c5, что указывает на вывод сообщений, связанных с драйверами (drv), состояниями соединения (link), ошибками приема (rx_err) и передачи (tx_err), прерываниями (intr) и данными пакетов (pktdata). Это настраивается через следующую команду:

ethtool -s eno2 msglvl 4805

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

Применение

  1. Проверка dmesg: Возможно, сообщения слишком быстро пересекают кольцевой буфер ядра в силу его ограниченного размера. Доступ на чтение старых сообщений может быть более удобным с помощью dmesg --level=err,warn,info. Попробуйте использовать эту команду для получения сообщений на разных уровнях логирования.

  2. Проверка /var/log/: Обычно, системные сообщения ядра сохраняются в файлы, например, /var/log/syslog или /var/log/kern.log. Используйте команды less или tail, чтобы просматривать эти файлы, например:

    sudo less /var/log/syslog
    sudo less /var/log/kern.log
  3. Использование journalctl: Демон systemd-journald собирает и сохраняет журнальные данные, их можно просмотреть с помощью:

    sudo journalctl -k

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

    sudo journalctl -k | grep eno2
  4. Настройка логгирования: Чтобы убедиться в том, что уровень логгирования достаточен и нужные сообщения включены, вам может понадобиться отредактировать конфигурационные файлы rsyslog или systemd-journald, чтобы убедиться, что все необходимые уровни сообщений записываются.

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

Заключение

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

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

Капча загружается...