[ELMA3] Настройка расширенного мониторинга для отслеживания перезапуска сервера ELMA
В случае если необходимо вести учет фактов перезапуска сервера ELMA средствами платформы .NET, можно настроить конфигурацию веб-сервера таким образом, что факт каждого перезапуска сервера будет фиксироваться в журнале операционной системы с указанием даты, времени и причины перезапуска. Данная настройка может быть полезна как для ведения статистики работы веб-сервера, так и для поиска причин в случае возникновения незапланированного перезапуска – речь идет о возможных моделях поведения ASP.NET технологии, в ходе которых приложение самостоятельно перезапускается.
Для настройки автоматического создания записи в журнале операционной системы о перезапуске приложения, в данном случае веб-сервера ELMA, необходимо внести изменения в файл web.config, расположенный по умолчанию в директории C:\ELMA3-Standart\Web.
В файл необходимо добавить следующие строки:
1 2 3 4 5 6 7 8 9 10 11 12 13 | < healthMonitoring > < rules > < add name = "All Events" eventName = "All Events" provider = "EventLogProvider" profile = "Default" minInstances = "1" maxLimit = "Infinite" minInterval = "00:01:00" custom = "" /> < add name = "App Lifetime Events" eventName = "Application Lifetime Events" provider = "EventLogProvider" profile = "Default" minInstances = "1" maxLimit = "Infinite" minInterval = "00:01:00" custom = "" /> < add name = "App Audit Events" eventName = "All Audits" provider = "EventLogProvider" profile = "Default" minInstances = "1" maxLimit = "Infinite" minInterval = "00:01:00" custom = "" /> </ rules > </ healthMonitoring > |
Расположение данного участка должно быть в теге <system.web>, который должен содержать в себе теги «». Отдельно выделяю данное обстоятельство, так как тегов <system.web> может быть несколько и некорректное расположение может негативно сказаться на работе функционала системы. Пример размещения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | < system.web > < trust level = "Full" originUrl = "" /> < healthMonitoring > < rules > < add name = "All Events" eventName = "All Events" provider = "EventLogProvider" profile = "Default" minInstances = "1" maxLimit = "Infinite" minInterval = "00:01:00" custom = "" /> < add name = "App Lifetime Events" eventName = "Application Lifetime Events" provider = "EventLogProvider" profile = "Default" minInstances = "1" maxLimit = "Infinite" minInterval = "00:01:00" custom = "" /> < add name = "App Audit Events" eventName = "All Audits" provider = "EventLogProvider" profile = "Default" minInstances = "1" maxLimit = "Infinite" minInterval = "00:01:00" custom = "" /> </ rules > </ healthMonitoring > … </ system.web > |
После размещения тега <healthMonitoring> запись о перезапуске должна появляться в системном журнале Приложение, обратиться к которому можно через Панель управления – Администрирование – Просмотр событий – Журналы Windows – Приложение. Запись перезапуска категорируется как веб-событие и выглядит следующим образом, пример:
Код события: 1002
Сообщение о событии: Приложение закрывается. Причина: Остановка хостинг среды.
Время события: 02.04.2014 12:51:44
Время события (UTC): 02.04.2014 8:51:44
В данном случае причиной является поведение сервера IIS, так как он является хостинг средой для веб-сервера ELMA. Рассмотрим еще один случай:
Код события: 1002
Сообщение о событии: Приложение закрывается. Причина: Достигнуто максимальное число рекомпиляций.
Время события: 25.03.2014 16:49:37
Как видно из описания события, перезапуск произошел при достижении максимального числа рекомпиляций. В ходе работы при изменении файлов приложения платформа ASP.NET запускает его компиляцию, чтобы вносимые изменения вступили в силу. По инструкции при достижении определенного числа рекомпиляций платформа ASP.NET перезапускает приложение полностью, частным случаем возникновения данной ситуации является работа с файлами шаблонов. При написании собственных шаблонов для документов, задач, объектов на разметке Razor появляется вероятность перезапуска системы в случае, если за короткий промежуток времени было внесено множество изменений, каждое из которых было сохранено отдельно и проверено в веб-части, т.е. после каждого изменения веб-страница была перезагружена.