Настройка и сбор логов
Расположение логов
Логи всех .Net компонентов и утилит пишутся в текстовые файлы, расположенные в папках logs
:
/etc/indeed/indeed-pam/logs/Имя_Компонента/
C:\inetpub\wwwroot\pam\Имя_Компонента\logs\
C:\Program Files\Indeed\Indeed PAM\Gateway\ProxyApp\logs\
[indeed-pam-windows\MISC]\папки утилит\logs\
Описание логов компонентов Core, IDP, LS
Файл | core | idp | LS | Содержимое |
---|---|---|---|---|
commands.log | + | + | все логи команд | |
queries.log | + | + | все логи запросов | |
errors.log | + | + | + | все ошибки PAM/LS |
jobs.log | + | все логи задач (job) | ||
events.log | + | все логи, связанные с Событиями | ||
connections.log | + | все логи сервисных подключений | ||
db.log | + | + | + | логи, связанные с доступом к БД |
hangfire.log | + | + | + | все логи от Hangfire |
ils.log | + | все логи от LogServer client | ||
full-yyyy-MM-dd.log | + | + | + | все логи PAM/LS с указанием имени логгера и traceId |
stdout_yyyyMMddHHmmss_xxxx.log | + | + | + | логи c ошибками от IIS |
Логирование скрипта установки
Скрипт установки run-deploy.sh может прерваться с ошибкой. В этом случае нужно отправить файл с логами в техническую поддержку.
Пример ошибки скрипта:
Расположение файла с логами: indeed-pam-linux/logs/deploy.log.
По умолчанию в логи записывается краткая информация. Чтобы получить расширенный вывод логов нужно запустить скрипт с опцией -vvv
:
run-deploy.sh -vvv
ProxyApp
Логи пишутся в папку C:\Program Files\Indeed\Indeed PAM\Gateway\ProxyApp\logs\``shortDate\processId
,
чтобы разделить логи от нескольких запусков в один день. В папке может быть 2 файла с логами:
ffmpeg.log
— отладочная информация от ffmpegPam.Proxy.App.log
— все прочие логи
Утилиты
Все логи пишутся в один файл без даты в имени, с названием утилиты, например Pam.Tools.Migrator.log
Логирование нативных компонент
К нативным компонентам относятся:
- MstscAddin
- WindowsAgent
- Pam.Service
- Pam.Putty
- ProcessCreateHook
Для включения / получения логов можно использовать утилиту Indeed GetLog.
Логи сохраняются в директорию C:\\Windows\\System32\\LogFiles\\Indeed-ID
. Для каждого процесса создается своя отдельная директория.
Логирование в nix компонентах
SSH Proxy
Все логи пишутся в один файл, ${ISODate}.log
.
Файлы располагаются по пути /etc/indeed/indeed-pam/logs/ssh``/
PAMSU
Все логи, генерируемые нашим кодом, пишутся в один файл, ${ISODate}.log
.
Файлы располагаются по пути /opt/Indeed-PAM/pamsu/logs/
.
Помимо этого существует возможность активировать логирование кода, предоставленного sudo
.
Это делается через изменения в файле /etc/pamsu.conf
. Правила настройки и управления такие же как у sudo
. См.: man sudo.conf
Настройка логирования
Конфигурация логирования компонентов .Net находится в файлах appsettings.json.
Настройка appsettings.json
Файлы appsettings.json располагаются по пути:
- C:\inetpub\wwwroot\pam\Имя_Компонента\appsettings.json — сервер управления Windows
- C:\Program Files\Indeed\IndeedPAM\Gateway\ProxyApp\appsettings.json — сервер доступа Windows
- /etc/indeed/indeed-pam/Имя_Компонента/appsettings.json — сервер управления или доступа Linux
Секция NLog
- Параметр variables — раздел, в котором можно задать переменные для дальнейшей настройки логирования. Количество переменных не ограничено. (не обязательный параметр).
"variables": {
"minLevel": "Trace",
"dbMinLevel": "Info"
}
Чтобы вызывать заданную переменную при дальнейшей настройке ее необходимо будет записывать в виде ${Имя_Переменной}
Для каждого лога можно настроить свой уровень логирования.
Существуют следующие уровни логирования:
Уровень логирования | Порядковый номер | Строгость логирования |
---|---|---|
Trace | 0 | Самый подробный уровень. Используется для разработки и редко используется в производстве. |
Debug | 1 | Отладка поведения приложения по интересующим внутренним событиям. |
Info | 2 | Информация, отражающая ход выполнения или события жизненного цикла приложения. |
Warn | 3 | Предупреждения о проблемах проверки или временных сбоях, которые можно устранить. |
Error | 4 | Ошибки, при которых функциональность не удалась или было получено исключение. |
Fatal | 5 | Самый критический уровень. Приложение будет прервано. |
Обычная конфигурация заключается в указании минимального уровня, в который включены этот уровень и более высокие уровни. Например, если минимальный уровень равен Info, то Info, Warn, Error и Fatal регистрируются, но Debug и Trace игнорируются.
- Параметр rules — определяет правила маршрутизации логов.
- У каждого типа лога есть свое имя, которое не рекомендуется редактировать.
"Rules": {
"03_Hangfire": {
"logger": "Hangfire.*",
"minLevel": "Info",
"writeTo": "hangfireFile",
"final": true
},
"20_Errors": {
"logger": "*",
"minLevel": "Error",
"writeTo": "errorsFile"
},
"40_Commands": {
"logger": "Idp.Application.*Command",
"minLevel": "${minLevel}",
"writeTo": "commandsFile",
"Enabled": false
},
}
- У каждого типа лога есть свое имя, которое не рекомендуется редактировать.
Для каждого типа лога можно указать следующие теги:
logger — Имя логгера — обычно это имя ассоциированного со строчкой лога элемента в коде (имя класса). Может содержать подстановочные символы (* и ?) Таким образом имя правила '*' соответствует любому имени логгера, а 'Common*' соответствует всем логгерам, чьи имена начинаются с 'Common'. Не рекомендуется редактировать этот параметр.
LogLevel — уровни логирования, можно указать сразу несколько:
- minlevel — минимальный уровень логирования
- maxlevel — максимальный уровень логирования
- level — один уровень для логирования
- levels — уровни логирования, записанные через запятую
writeTo — разделенный запятыми список файлов для записи логов
final — Если текущее правило помечено как final и его имя соответствует имени логгера, то NLog завершает на нем построение цепочек для всех уровней логирования, включенных для данного правила. Или Логи, помеченные как final, перестают записываться в логи, находящиеся по цепочке ниже.
enabled — для отключения правила логирования без его удаления необходимо проставить флаг false
- Параметр targets – определяет log targets/outputs (необязательный параметр)
- Параметр extensions – загружает расширения NLog из файла *.dll (необязательный параметр)
- Параметр include – включает внешний конфигурационный файл (необязательный параметр)
Сборка логов из браузера
Chrome, Edge, Yandex
- Запустите браузер, перейдите на страницу в которой выходит ошибка, запустите Инструменты разработчика (нажмите Ctrl+Shift+I или F12).
- Во вкладке Консоль нажмите иконку для очистки консоли, включите опции Детализация, Информация, Предупреждения, Ошибки:
- Нажмите значок шестеренки (Настройки консоли) и отметьте опции Сохранять журнал, Журнал запросов XMLHttpRequests:
- Во вкладке Сеть включите настройки Сохранять журнал, Отключить кеш, тип фильтра Все, как на скриншоте ниже:
- Нажмите иконку для сброса списка запросов и не закрывая консоль разработчика выполните последовательность действий, приводящих к ошибке.
- Нажмите по полю запросов правой кнопкой мыши, выберите пункт Сохранить все как HAR с контентом и сохраните файл:
- Перейдите во вкладку Консоль, нажмите правой кнопкой по сообщениям консоли, выберите пункт Сохранить как и сохраните файл:
- Сохраненные файлы перешлите в техническую поддержку.
Firefox
- Запустите браузер, перейдите на страницу в которой выходит ошибка, запустите Инструменты веб-разработчика (нажмите Ctrl+Shift+I или F12).
- Во вкладке Консоль нажмите иконку корзины для очистки, включите опции Ошибки, Предупреждения, Лог, Инфо, Отладка. В настройках консоли отметьте все опции, в т.ч. Непрерывные логи:
- Во вкладке Сеть также нажмите иконку корзины для очистки, отключите фильтр, выбрав “Все”, нажмите значок шестеренкии отметьте опцию Непрерывные логи.
- Не закрывая консоль разработчика выполните последовательность действий, приводящих к ошибке.
- Далее в консоли разработчика во вкладке Сеть нажмите значок шестеренки, выберите пункт Сохранить всё как HAR и сохраните файл:
- Перейдите во вкладку Консоль, нажмите правой кнопкой по сообщениям консоли, выберите пункт “Экспортировать видимые сообщения в > Файл” и сохраните файл.
- Сохраненные файлы перешлите в техническую поддержку.