Перейти к содержанию

Устранение неполадок при установке OneAgent

  • Устранение неполадок

Узнайте, как устранять неполадки при установке OneAgent на AIX, Linux и Windows.

Общее устранение неполадок

Почему OneAgent не начинает мониторинг процесса Apache после перезапуска?

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

Дополнительную информацию о различных типах доступных перезапусков см. в разделе Остановка и перезапуск HTTP-сервера Apache.

Как выполнить полный перезапуск

Linux и AIX

Возможно, вы привыкли перезапускать Apache командой apachectl restart. Однако эта команда приводит лишь к частичному перезапуску Apache.

Чтобы выполнить полный перезапуск Apache и включить глубокий мониторинг с Dynatrace OneAgent, необходимо сначала выполнить полную остановку командой apachectl stop. Только после этого можно перезапустить сервер командой apachectl start.

На системах Ubuntu допустимо использовать service apache2 restart. Обратите внимание, что какие бы команды вы ни использовали, вам, скорее всего, потребуются права суперпользователя (sudo).

Windows

В Windows вы можете использовать встроенное управление службами Windows или Apache Service Monitor (httpd.exe) для перезапуска служб Apache. Перезапуск службы Apache через управление службами Windows гарантирует полный перезапуск. С httpd.exe вы, возможно, привыкли перезапускать Apache командой httpd.exe -k restart -n "Apache2.4". Однако эта команда приводит лишь к частичному перезапуску Apache.

Чтобы выполнить полный перезапуск Apache и включить глубокий мониторинг с OneAgent, необходимо сначала выполнить полную остановку командой httpd.exe -k stop -n "Apache2.4". Только после этого можно перезапустить сервер командой httpd.exe -k start -n "Apache2.4".

Что делать, если OneAgent занимает нужный мне порт?

Устарело

Начиная с версии OneAgent 1.301, OneAgent не использует TCP-порты для собственного межпроцессного взаимодействия. Если OneAgent занимает порты ваших приложений, обновите OneAgent до версии 1.301+.

OneAgent состоит из различных процессов, которые взаимодействуют через TCP-порт со сторожевым процессом (watchdog). При запуске сторожевой процесс OneAgent пытается открыть первый доступный порт в диапазоне от 50000 до 50100. В некоторых случаях этот порт может потребоваться для ваших собственных приложений, запускаемых после OneAgent. В таких случаях вы можете изменить диапазон портов, используемый сторожевым процессом OneAgent, вызвав интерфейс командной строки OneAgent.

Вы можете изменить порт прослушивания сторожевого процесса с помощью set-watchdog-portrange через инструмент командной строки oneagentctl:

Например, чтобы изменить диапазон портов на 50005:50105, перейдите в каталог oneagentctl и выполните следующую команду:

  • На Linux или AIX: ./oneagentctl --set-watchdog-portrange 50005:50105
  • На Windows: .\oneagentctl.exe --set-watchdog-portrange 50005:50105 Перезапустите службу OneAgent для применения изменений.

Информацию о портах, используемых Dynatrace, см. в разделе Какие сетевые порты использует Dynatrace Server?.

Ошибка проверки сертификата сервера

OneAgent поставляется с доверенными SSL-сертификатами Dynatrace, которые используются для проверки успешного подключения OneAgent к Dynatrace Server или ActiveGate.

Если ваша среда использует прокси-сервер (что требует обновления SSL-сертификата удаленного сервера) или у вас есть Environment ActiveGate с собственным пользовательским сертификатом, вы можете столкнуться с сообщением Server certificate check failed при первоначальной проверке соединения.

Для решения этой проблемы см. Безопасность OneAgent.

Процессы не обнаружены?

Возможно, произошло одно из следующего:

  • Процесс не поддерживается нашей технологией мониторинга. Вы всегда можете проверить, какие типы процессов поддерживает Dynatrace.
  • Процесс не работает на вашем сервере. Убедитесь, что ваши серверы запущены и процессы работают.
  • Произошла задержка связи между Dynatrace и вашим OneAgent. В этом случае подождите некоторое время и повторите попытку.
  • Ваш OneAgent работает неправильно. Перейдите в Settings > Monitoring > Monitoring overview, чтобы убедиться, что мониторинг включен для хоста, на котором работает ваше программное обеспечение.

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

Проблемы с OneAgent начались после значительного обновления ОС хоста.

Мы не поддерживаем серьезные модификации операционной системы на хосте, на котором установлен OneAgent.

Изменения ОС, которые могут повлиять на OneAgent, включают обновления или модификации, такие как:

  • Патч ядра системы
  • Крупное обновление ОС
  • Любая другая модификация конфигурации системы, приводящая к значительному обновлению или изменению ОС

Серьезные модификации ОС могут привести к проблемам, таким как:

  • Проблемы мониторинга OneAgent
  • Перезапуск или удаление службы OneAgent
  • Удаление OneAgent

Для выполнения серьезных модификаций ОС на хосте с OneAgent

  1. Удалите OneAgent
  2. Примените модификации ОС
  3. Переустановите OneAgent Переустановка может потребовать предоставления данных подключения установщику. Однако часть конфигурации OneAgent сохранится после удаления, например идентификация хоста.

Эта информация относится ко всем операционным системам, на которых поддерживается полная установка OneAgent.

Инициализация SDK и обработка ошибок

Если заглушка SDK сталкивается с проблемами при загрузке или инициализации модуля OneAgent (особенно если onesdk_initialize или onesdk_initalize_2 возвращает код ошибки), включите логирование для заглушки SDK для диагностики проблемы.

Используйте один из следующих вариантов для включения логирования:

  • Установите переменную окружения DT_LOGLEVELSDK={level} (самый простой вариант).
  • Вызовите функцию onesdk_stub_set_logging_level(ONESDK_LOGGING_LEVEL_{LEVEL}).
  • Если ваша программа передает аргументы командной строки в SDK (onesdk_stub_process_cmdline_args), используйте аргумент командной строки --dt_loglevelsdk={level}.

Какой бы вариант вы ни выбрали, обязательно примените его перед вызовом onesdk_initialize или onesdk_initalize_2.

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

Если инициализация завершается неудачей, наиболее часто встречаемый код ошибки -- ONESDK_ERROR_LOAD_AGENT (числовой код 2952658951, -1342308345 или 0xaffe0007, сообщение об ошибке "Could not load agent.").

Две основные причины этой проблемы:

  • Причина: OneAgent не установлен на хосте, где выполняется программа.

Решение: Установите OneAgent и перезапустите программу. * Причина: Программа запущена с отладчиком, поэтому OneAgent не выполнит внедрение.

Решение: Запустите программу без отладчика. Вы можете подключить отладчик позже, после запуска программы.

Устранение неполадок SDK после инициализации

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

Точное расположение файлов журналов см. на следующих страницах:

  • Безопасность OneAgent в Windows
  • Безопасность OneAgent в Linux

Вы можете повысить уровень логирования OneAgent, установив переменную окружения DT_LOGLEVELFILE={level} или передав аргумент командной строки --dt_loglevelfile={level} в SDK.

В качестве альтернативы можно использовать DT_LOGLEVELCON={level} или --dt_loglevelcon={level}, если вы хотите получать вывод журнала OneAgent через stderr. * В определенных сценариях onesdk_agent_get_current_state может предоставить дополнительную информацию.

Устранение неполадок для конкретных ОС

Linux

OneAgent, установленный на развертываниях Chef Habitat, не внедряется в процессы

Хотя вы можете успешно установить OneAgent на машинах, где размещены службы, развернутые через Chef Habitat, OneAgent не сможет внедриться в процессы, поскольку в таких развертываниях Chef Habitat использует собственную glibc супервизора, специфичную для хоста, а не системную glibc, на которую полагается OneAgent.

Обходное решение

В качестве обходного решения создайте файл ld.so.preload для каждой версии glibc, установленной Chef, содержимое которого указывает на модуль процесса OneAgent на хосте супервизора Chef Habitat. Выполните следующую команду от имени root:

[ -d /hab/pkgs/core/glibc ] && for v in $(find /hab/pkgs/core/glibc -type d -name etc); do sudo echo "/opt/dynatrace/oneagent/agent/bin/current/linux-x86-64/liboneagentproc.so" > $v/ld.so.preload && echo "Installed workaround in '$v'"; done

Эту команду необходимо выполнять каждый раз, когда Chef Habitat обновляет версию glibc. Вы также можете запускать ее как задание cron. В таком случае убедитесь, что она выполняется до запуска службы, которую вы хотите мониторить. В противном случае вам потребуется перезапустить службу для включения внедрения OneAgent.

Операция запрещена

Если вы видите ошибку Operation not permitted в консоли Linux или журналах установки, убедитесь, что установка OneAgent не блокируется антивирусным программным обеспечением, установленным на хосте.

Проблемы связи OneAgent при включенном SELinux

OneAgent поддерживает SELinux только при загруженной целевой политике (targeted policy), политика многоуровневой безопасности не поддерживается. Если вы попытаетесь установить OneAgent в системе, где SELinux работает с политикой многоуровневой безопасности, вы получите следующее сообщение об ошибке: Installation with SELinux loaded in multi-level security mode is not supported. Dynatrace OneAgent may not work correctly.

Если вы используете систему с SELinux в режиме принудительного применения (enforcing) и внедренные OneAgent не могут установить связь, хотя модуль ОС OneAgent работает нормально, попробуйте следующие действия. Обратите внимание, что пример ниже основан на процессе httpd, но это может происходить и с NGINX и другими процессами.

  1. Проверьте /var/log/audit/audit.log или journalctl на наличие отказов, например:

# grep type=AVC /var/log/audit/audit.log


# journalctl --utc -a -t "audit"
2. Если вы обнаружите отказ для рассматриваемого процесса, например:

type=AVC msg=audit(1535366769.867:209537): avc:  denied  { name_connect } for  pid=8348 comm="httpd" dest=9999 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:jboss_management_port_t:s0 tclass=tcp_socket`

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

# sesearch -AC -s httpd_t -t jboss_management_port_t

Для интерпретации вывода команды см. Использование булевых переменных SELinux. 3. Чтобы узнать, запрещена ли связь, выполните следующую команду:

# setsebool -P httpd_can_network_connect on

Эта команда постоянно (сохраняется при перезагрузке хоста) включит булеву переменную SELinux httpd_can_network_connect, позволяя OneAgent внедряться в процесс httpd для установления соединения с ActiveGate. 4. Перезапустите процесс и убедитесь, что связь работает.

OneAgent на дисках NFS

Было отмечено, что OneAgent на Linux работает нестабильно при развертывании на NFS-дисках низкого качества. Для корректной работы автоматического внедрения и автоматических обновлений убедитесь, что ваше развертывание OneAgent соответствует следующим рекомендациям:

Пользовательский путь установки

Настройте установку OneAgent так, чтобы он не располагался в каталогах NFS (по умолчанию OneAgent устанавливается в /opt/dynatrace). Используйте параметр INSTALL_PATH OneAgent. Подробнее см. Настройка установки OneAgent на Linux.

Путь выполнения

Убедитесь, что путь выполнения /var/lib/dynatrace/oneagent не расположен в каталогах NFS.

Доступность файловой системы

Доступность файловой системы критически важна не только для мониторинга OneAgent, но и для запуска любых процессов на хосте. Даже при настроенной пользовательской установке OneAgent все равно создает символические ссылки на /opt/dynatrace для своих модулей глубокого мониторинга и автоматического внедрения. Убедитесь, что /opt/dynatrace доступен во время загрузки системы как можно раньше. OneAgent запускается относительно рано, поэтому /opt/dynatrace должен быть доступен на как можно более ранней стадии процесса загрузки.

Остановка процессов для обновления OneAgent

Если при наличии NFS вы наблюдаете проблемы с обновлением OneAgent, убедитесь, что все процессы, для которых могут быть включены модули глубокого мониторинга кода OneAgent, остановлены перед началом обновления OneAgent.

FUSE не поддерживается

Любая файловая система, основанная на FUSE, не поддерживается.

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

Несовместимость со Splunk

Компонент splunkd версии Splunk 8.2+ аварийно завершается при включенном автоматическом внедрении OneAgent.

Проблема

Согласно проблеме Splunk SPL-207550 (внешняя ссылка), Splunk не запускается после установки на Linux при наличии Dynatrace OneAgent с ошибкой ERROR: pid XXXX terminated with signal 4 (core dumped), поскольку существует конфликт между сторожевым процессом Splunk и библиотеками Dynatrace OneAgent.

Обходное решение

Установите следующее в server.conf, [watchdog]: usePreloadedPstacks = false

Совместимость с антивирусным ПО

Блокирующий мьютекс в ядре Linux может привести к тому, что CrowdStrike Falcon блокирует OneAgent при чтении данных процесса из /proc, который содержит один подкаталог для каждого запущенного процесса в системе.

  • Когда OneAgent пытается прочитать /proc/<pid>, CrowdStrike Falcon блокирует мьютекс в ядре для создания каталога идентификатора процесса. OneAgent переходит в состояние непрерываемого ожидания, что означает, что вы можете очистить процессы только перезагрузкой сервера или ожиданием ответа ввода-вывода.
  • Установка OneAgent может быть затронута в любой момент из-за отсутствия единого правила, вызывающего проблему.

Oracle Database Server 19c не отвечает

Проблема

Автоинструментирование OneAgent невозможно при установленном Oracle Database Server 19c из-за несовместимости с модулем процесса OneAgent.

Подробности

Модуль процесса OneAgent требует базовой функциональности от системной библиотеки libc для выполнения автоинструментирования. Когда другой продукт переопределяет эту функциональность (функция __errno_location в данном случае), модуль процесса не может различить символ, предоставленный libc, и продуктом. Вызов символа, предоставленного продуктом, приводит к сбою, так как он еще не инициализирован к этому моменту.

Область применения

Хосты Linux с Oracle Database Server 19c

Решение

Достаточно одного из следующих вариантов:

  • Используйте Oracle Database Server 21c или новее
  • Отключите внедрение агента процесса через oneagentctl --set-auto-injection-enabled false
  • Выполните следующий фрагмент кода, заменив [PATH-TO-DATABASE-EXECUTABLE] на путь к исполняемому файлу Oracle Database 19c

unshare -m -- sh -c 'mount --bind /dev/null /etc/ld.so.preload && [PATH-TO-DATABASE-EXECUTABLE]'
* Установите переменную окружения LD_AUDIT так, чтобы она применялась к Oracle Database при запуске. Подробнее, включая конкретные шаги, см. Предотвращение загрузки модуля процесса на Linux. * Отключите внедрение агента процесса через схему / интерфейс builtin:host.monitoring.advanced. Warning Предупреждение Это отключит все модули кода на этом хосте, включая вручную включенные модули кода.

Если на хостах есть процессы, которым требуется внедрение модуля кода, их можно включить вручную через переменную окружения LD_PRELOAD=/lib{64}/liboneagentproc.so. Для дополнительной помощи обратитесь к специалистам поддержки Dynatrace в чате.

Windows

Совместимость с антивирусным ПО

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

Мы также рекомендуем настроить антивирусное ПО так, чтобы оно считало процесс OneAgent доверенным и незлонамеренным. Обратитесь к документации вашего антивирусного решения, чтобы узнать, как это сделать.

Если вы используете McAfee, вы можете столкнуться с повышенной нагрузкой на процессор. Для решения этой проблемы установите McAfee в Режим совместимости защиты от эксплойтов (Exploit Prevention Compatibility Mode).

  1. Отключите самозащиту и защиту от эксплойтов в консоли ENS.
  2. Установите следующие значения реестра как DWORD:

  3. HKEY_LOCAL_MACHINE\SOFTWARE\McAfee\Endpoint\Ips\BO\dwBOCompatibilityMode=1

  4. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\McAfee\EndPoint\Ips\BO\dwBOCompatibilityMode=1
  5. Повторно включите самозащиту и защиту от эксплойтов в консоли ENS.

Процессы не обнаружены?

Возможно, произошло одно из следующего:

  • Процесс не поддерживается нашей технологией мониторинга. Вы можете проверить, какие типы процессов поддерживает Dynatrace.
  • Процесс не работает на вашем сервере. Убедитесь, что ваши серверы запущены и процессы работают.
  • Произошла задержка связи между Dynatrace и вашим OneAgent. В этом случае подождите некоторое время и повторите попытку.
  • Ваш OneAgent работает неправильно. Перейдите в Settings > Monitoring > Monitoring overview, чтобы убедиться, что мониторинг включен для хоста, на котором работает ваше программное обеспечение.

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

Как восстановить установку OneAgent?

Установщик OneAgent для Windows не поддерживает операции изменения и восстановления. Вы не можете переустановить OneAgent, используя установщик той же версии, что и установленный OneAgent.

Для переустановки OneAgent в Windows либо удалите его и переустановите, либо установите более новую версию поверх существующей.

Ошибка обновления OneAgent из-за отсутствующего MSI-пакета в кэше установщика Windows

Установщик OneAgent для Windows использует кэш установщика Windows, который по умолчанию расположен в C:\Windows\Installer. В нем хранятся важные файлы, необходимые для удаления и обновления продукта. Если в журнале установки (расположение по умолчанию: C:\ProgramData\dynatrace\oneagent\log\installer\installation_msiexec_*.log) вы обнаружите записи, подобные следующим:

MSI (s) (C0:E4) [09:27:14:308]: Warning: Local cached package 'C:\Windows\Installer\312c0.msi' is missing.


...


Error 1714. The older version of Dynatrace OneAgent cannot be removed.  Contact your technical support group.  System Error 1612.


MSI (s) (C0:54) [09:27:56:489]: Product: Dynatrace OneAgent -- Error 1714. The older version of Dynatrace OneAgent cannot be removed.  Contact your technical support group.  System Error 1612.

Попробуйте следующие шаги для решения проблемы:

  1. Скачайте и распакуйте MSI-пакет из установщика текущей установленной версии, следуя инструкциям в разделе Получение MSI-пакета.
  2. Скопируйте MSI-пакет в C:\Windows\Installer и переименуйте его в соответствии с именем, указанным в журнале (в данном примере -- 312c0.msi).

Подробнее см. Отсутствие кэша установщика Windows требует пересборки компьютера.

Папка AI_RecycleBin заполняет дисковое пространство

Это известная проблема с Advanced Installer. В качестве обходного решения установщик OneAgent очищает AI_RecycleBin в конце установки. Однако эта очистка может не сработать, если установка завершилась неудачей на ранней стадии, например в случае отсутствующего MSI-пакета в кэше установщика Windows. Подробнее см. обсуждение на форумах Advanced Installer.

AIX

Внедрение не работает из-за ручной настройки предыдущей версии

Если вы использовали OneAgent для AIX до версии 1.137, возможно, вы настраивали его через JAVA_OPTS с помощью скрипта dynatrace-java-env.sh. Вам необходимо удалить эту настройку перед использованием унифицированных скриптов мониторинга dynatrace-agentXX.sh.

  • Убедитесь, что dynatrace-java-env.sh не вызывается нигде в вашей оболочке при использовании скрипта dynatrace-agentXX.sh. dynatrace-java-env.sh устарел и должен использоваться только в качестве резервного варианта.
  • Проверьте и удалите следующий параметр из командной строки Java или скриптов запуска (конкретный каталог может отличаться):

-agentpath:/opt/dynatrace/oneagent/agent/lib64/liboneagentloader.so

LDR_PRELOAD64: параметр не установлен

Вы можете столкнуться с такой ошибкой при использовании dynatrace-agentXX.sh в сценарии оболочки.

Info: using DT_HOME: /opt/dynatrace/oneagent


.profile[33] LDR_PRELOAD64: parameter not set

Это происходит, если вы используете set -u для обработки неустановленных переменных и параметров как ошибок. Скрипт dynatrace-agentXX.sh экспортирует переменные, которые, хотя и могут еще не существовать в вашем скрипте, тем не менее необходимы для правильной работы. Чтобы обойти это, вызовите set +u перед скриптом dynatrace-agentXX.sh.

# avoid error


set +u


export DT_HOME=/opt/dynatrace/oneagent


. $DT_HOME/dynatrace-agent64.sh