Прошел почти месяц без новых статей, что не очень хорошо. Но вот все предновогодние и послепраздничные задачи решены. Продолжим.
Рассмотрим задачу мониторинга работы сервиса Workflow. Т.е. каким образом можно определить остановку сервиса, или его медленную работу. Сервис бизнес-процессов постоянно сохраняет новые записи в журналах бизнес-процессов, если в экземплярах включено журналирование. А все строки содержаться в одной таблице [dbo].[dvtable_{388F390F-139E-498E-A461-A24FBA160487}].
Значит если
Каким может быть решение.
Процедура определяет, завис ли сервис Workflow, в случае если завис, то отправляет письмо, и может (если задан соответствующий параметр) перезапустить сервис Workflow.
Как настроить.
1. Необходимо включить возможность отправки почтового сообщения сервером MS SQL. Как это сделать, можно посмотреть, например, здесь http://www.kodyaz.com/articles/sql2005-database-mail.aspx.
2. Создать job на базе данных, который бы с некоторой периодичностью будет вызывать процедуру. Формат вызова.
Пример:
Отправка уведомления на два почтовых адреса admin1@example.com и admin2@example.com, при зависании, либо при разнице между двумя записями лога более 30 секунд. Сервис Workflow не перезапускать.
execute dvsp_support_check_workflow 'admin1@example.com; admin2@example.com','server1','mail_profile',30,0
Примечание 1: Процедура корректно работает только в случае если не настроен кластер Workflow. Если остановится один из узлов кластера, то зафиксировать это можно будет только косвенно - записи в журналах будут появляться реже
Примечание 2: Хотя бы в одном экземпляре процесса должен вестись журнал.
Примечание 3: Указывать имя сервера Workflow нужно только только для того, чтобы была возможность перезапустить его.
Читать дальше
Рассмотрим задачу мониторинга работы сервиса Workflow. Т.е. каким образом можно определить остановку сервиса, или его медленную работу. Сервис бизнес-процессов постоянно сохраняет новые записи в журналах бизнес-процессов, если в экземплярах включено журналирование. А все строки содержаться в одной таблице [dbo].[dvtable_{388F390F-139E-498E-A461-A24FBA160487}].
Значит если
- новых записей в таблице в таблице не появляется,
- записи в таблице появляются гораздо медленнее чем нужно,
Каким может быть решение.
- Job на MS SQL, который периодически запускает процедуру проверки
- Процедура, которая проверяет, появляются ли новые записи в таблице, и если появляются, то какой временной интервал между ними.
- При возникновении проблем процедура отправляет уведомление по электронной почте администратору, средствами sp_send_dbmail.
Процедура определяет, завис ли сервис Workflow, в случае если завис, то отправляет письмо, и может (если задан соответствующий параметр) перезапустить сервис Workflow.
Как настроить.
1. Необходимо включить возможность отправки почтового сообщения сервером MS SQL. Как это сделать, можно посмотреть, например, здесь http://www.kodyaz.com/articles/sql2005-database-mail.aspx.
2. Создать job на базе данных, который бы с некоторой периодичностью будет вызывать процедуру. Формат вызова.
exec dvsp_support_check_workflow 'адреса e-mail через точку с запятой', 'имя сервера, где работает сервис workflow', 'имя профиля', максимальная задержка между двумя записями лога, перезапускать или нет сервисы
Пример:
Отправка уведомления на два почтовых адреса admin1@example.com и admin2@example.com, при зависании, либо при разнице между двумя записями лога более 30 секунд. Сервис Workflow не перезапускать.
execute dvsp_support_check_workflow 'admin1@example.com; admin2@example.com','server1','mail_profile',30,0
Примечание 1: Процедура корректно работает только в случае если не настроен кластер Workflow. Если остановится один из узлов кластера, то зафиксировать это можно будет только косвенно - записи в журналах будут появляться реже
Примечание 2: Хотя бы в одном экземпляре процесса должен вестись журнал.
Примечание 3: Указывать имя сервера Workflow нужно только только для того, чтобы была возможность перезапустить его.
0 коммент.:
Отправить комментарий