Руководство по устранению неполадок системного журнала для агента Azure Monitor для Linux

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

Общие сведения о коллекции Агента Azure Monitor для Системного журнала Linux и поддерживаемых стандартах RFC:

  • Агент Azure Monitor устанавливает выходную конфигурацию для управляющей программы системного журнала во время установки. Файл конфигурации указывает способ потока событий между управляющей службой Системного журнала и агентом Azure Monitor.
  • Для rsyslog (большинство дистрибутивов Linux) файлом конфигурации является /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf. Для syslog-ng это /etc/syslog-ng/conf.d/azuremonitoragent-tcp.conf.
  • Агент Azure Monitor прослушивает TCP-порт для получения событий.rsyslog / syslog-ng Порт для этого сообщения регистрируется в /etc/opt/microsoft/azuremonitoragent/config-cache/syslog.portжурнале.

    Примечание.

    Перед агентом Azure Monitor версии 1.28 он использовал сокет домена Unix вместо TCP-порта для получения событий из rsyslog. omfwd Выходной модуль в rsyslog предлагает механизмы spooling и повторных попыток для повышения надежности.

  • Управляющая программа системного журнала использует очереди, если прием агента Azure Monitor задерживается или когда агент Azure Monitor недоступен.
  • Агент Azure Monitor выполняет прием событий системного журнала с помощью ранее упоминание сокета и фильтрует их на основе сочетания средств или серьезности из конфигурации /etc/opt/microsoft/azuremonitoragent/config-cache/configchunks/правила сбора данных (DCR). Все facility или severity нет в DCR удаляются.
  • Агент Azure Monitor пытается проанализировать события в соответствии с RFC3164 и RFC5424. Он также знает, как анализировать форматы сообщений, перечисленные на этом веб-сайте.
  • Агент Azure Monitor определяет конечную точку назначения для событий системного журнала из конфигурации DCR и пытается передать события.

    Примечание.

    Агент Azure Monitor по умолчанию использует локальную сохраняемость. Все события, полученные от rsyslog или syslog-ng в очереди, /var/opt/microsoft/azuremonitoragent/events если они не будут отправлены.

Проблемы

Вы можете столкнуться со следующими проблемами.

Данные Rsyslog не отправляются из-за полного места на диске в агенте Azure Monitor для Linux

В следующих разделах описывается проблема.

Симптом

Данные системного журнала не передаются: при проверке журналов /var/opt/microsoft/azuremonitoragent/log/mdsd.errошибок по адресу вы увидите записи об ошибке при вставке элемента в локальное постоянное хранилище... Не осталось места на устройстве , как показано в следующем фрагменте кода:

2021-11-23T18:15:10.9712760Z: Error while inserting item to Local persistent store syslog.error: IO error: No space left on device: While appending to file: /var/opt/microsoft/azuremonitoragent/events/syslog.error/000555.log: No space left on device

Причина

Агент Azure Monitor для Linux буферизирует события /var/opt/microsoft/azuremonitoragent/events до приема. При установке агента Azure Monitor по умолчанию для Linux этот каталог занимает около 650 МБ места на диске бездействия. Размер диска увеличивается при постоянной нагрузке ведения журнала. Она очищается примерно каждые 60 секунд и уменьшается до ~650 МБ при возвращении нагрузки к простою.

Подтверждение проблемы с полным диском

В команде df почти нет места, /dev/sda1как показано в следующих выходных данных. Обратите внимание, что следует изучить элемент строки, который коррелирует с каталогом журнала (например, /var/log или /var/).

   df -h
Filesystem Size  Used Avail Use% Mounted on
udev        63G     0   63G   0% /dev
tmpfs       13G  720K   13G   1% /run
/dev/sda1   29G   29G  481M  99% /
tmpfs       63G     0   63G   0% /dev/shm
tmpfs      5.0M     0  5.0M   0% /run/lock
tmpfs       63G     0   63G   0% /sys/fs/cgroup
/dev/sda15 105M  4.4M  100M   5% /boot/efi
/dev/sdb1  251G   61M  239G   1% /mnt
tmpfs       13G     0   13G   0% /run/user/1000

С помощью du команды можно проверить диск, чтобы определить, какие файлы вызывают заполнение диска. Например:

   cd /var/log
   du -h syslog*
6.7G    syslog
18G     syslog.1

В некоторых случаях может не сообщать о больших файлах du или каталогах. Возможно, файл, помеченный как удаленный , занимает место. Эта проблема может возникать, когда некоторые другие процессы попытались удалить файл, но процесс с файлом по-прежнему открыт. Для проверка таких файлов можно использовать lsof команду. В следующем примере мы видим, что /var/log/syslog помечен как удаленный, но он занимает 3,6 ГБ дискового пространства. Он не был удален, так как по-прежнему открыт в процессе с PID 1484.

   sudo lsof +L1
COMMAND   PID   USER   FD   TYPE DEVICE   SIZE/OFF NLINK  NODE NAME
none      849   root  txt    REG    0,1       8632     0 16764 / (deleted)
rsyslogd 1484 syslog   14w   REG    8,1 3601566564     0 35280 /var/log/syslog (deleted)

Rsyslog по умолчанию регистрирует все объекты в /var/log/

В некоторых популярных дистрибутивах (например, Ubuntu 18.04 LTS), rsyslog поставляется с файлом конфигурации по умолчанию (/etc/rsyslog.d/50-default.conf), который записывает события из почти всех объектов на диск /var/log/syslog. События системного журнала redHat/CentOS хранятся в /var/log/ другом файле: /var/log/messages

Агент Azure Monitor не зависит от событий системного журнала, в которые регистрируется /var/log/журнал. Вместо этого служба rsyslog настраивает перенаправление событий через TCP-порт непосредственно в azuremonitoragent процесс службы (mdsd).

Исправление: удалите объекты большого объема из /etc/rsyslog.d/50-default.conf

Если вы отправляете большой объем журналов через rsyslog и система настроена для регистрации событий для этих объектов, попробуйте изменить конфигурацию rsyslog по умолчанию, чтобы избежать ведения журнала и хранения их в /var/log/. События для этого объекта по-прежнему будут перенаправляться в агент Azure Monitor, так как rsyslog использует другую конфигурацию для переадресации, размещенной в /etc/rsyslog.d/10-azuremonitoragent-omfwd.conf.

  1. Например, чтобы удалить local4 события из входа в систему /var/log/syslog или /var/log/messagesизменить эту строку из /etc/rsyslog.d/50-default.conf этого фрагмента кода:

    *.*;auth,authpriv.none          -/var/log/syslog
    

    В этот фрагмент кода (добавьте local4.none;):

    *.*;local4.none;auth,authpriv.none          -/var/log/syslog
    
  2. sudo systemctl restart rsyslog

Буфер событий Azure Monitor для Linux заполняет диск

Если вы наблюдаете, что /var/opt/microsoft/azuremonitor/events каталог растет без подключения (10 ГБ или выше), а не уменьшается размер, отправьте билет. Введите буфер событий агента Azure Monitor для заполнения диска. Для типа проблемы введите справку по настройке сбора данных из виртуальной машины.

Создание запроса

  1. Откройте правило сбора данных и в меню слева выберите новый запрос на поддержку. Вы также можете открыть область справки и поддержки и выбрать команду "Создать запрос на поддержку".
  2. Выберите:
    • Тип проблемы: Technical.
    • Подписка. Выберите подписку, в которой находятся компьютеры.
    • Тип службы: правила сбора данных и агент Azure Monitor.
    • Проблема связана с ресурсом?: Да. Выберите компьютер с помощью средства выбора ресурсов.
  3. Введите тип сводки и проблемы, как указано в шагах по устранению неполадок. Точную информацию приводит к более быстрому разрешению проблемы.
  4. Нажмите кнопку "Далее " и просмотрите рекомендуемые решения, чтобы узнать, помогут ли они.
  5. Если они не помогают, нажмите кнопку "Далее " и заполните следующий набор сведений.
  6. Нажмите кнопку "Далее", просмотрите окончательные сведения и нажмите кнопку "Создать".