Qlik
December 4, 2023
Получаем ошибки выполнения заданий из Qlik Sense в почту
Привет! Уже не однократно было описано в разных местах, но я повторюсь.
Есть вариант отправки уведомлений в почту, если у вас какое либо задание упало с ошибкой в Qlik Sense, и всё это без стороннего вмешательства, нам нужно лишь создать правильный конфиг файл для log4net.
Создаем файл LocalLogConfig.xml и помещаем его на сервер Qlik Sense в папку C:\ProgramData\Qlik\Sense\Scheduler\, если у вас кластер – то файлик нужно закинуть на каждую ноду. Для отличий, чтобы понимать с какого сервера приходят письма – я указываю имя сервера в теме письма.
<?xml version="1.0"?>
<configuration>
<appender name="sendMailQlik" type="log4net.Appender.SmtpAppender">
<evaluator type="log4net.Core.LevelEvaluator">
<param name="threshold" value="ERROR"/>
</evaluator>
<!-- Указываем получателя, если их несколько - то через запятую, это важно! -->
<param name="to" value="qlikteam@mydomain.com" />
<!-- Указываем отправителя -->
<param name="from" value="qlik@mydomain.com" />
<!-- Почтовый сервер -->
<param name="smtpHost" value="mail.mydomain.com" />
<!-- Порт на почтовом сервере -->
<param name="port" value="25" />
<!-- При использовании SSL, можно комментировать, необязательный параметр-->
<param name="EnableSsl" value="true" />
<!-- Можно указывать 3 варианта - NTLM, None, Basic
При None - авторизации не будет
NTLM - авторизация будет от службы которая запускает QS сервер
Basic - авторизация по логину и паролю -->
<param name="Authentication" value="Basic" />
<!-- Если авторизации нет - то можно закомментировать 2 следующие строки-->
<param name="username" value="XXXXX" />
<param name="password" value="YYYYY" />
<param name="bufferSize" value="0" /> <!-- обязательный параметр -->
<param name="lossy" value="true" /> <!-- обязательный параметр -->
<!-- тут указываем тему письма -->
<param name="subject" value="Qlik Sense Server: App reload failed" />
<layout type="log4net.Layout.PatternLayout">
<!-- Дальше с шаблоном можно строить что угодно, для примера -->
<param name="conversionPattern"
value="Date: %date %newline
Task Name: %property{TaskName}%newline
AppName: %property{AppName}%newline
AppId: %property{AppId}%newline
Error Message: %message%newline%newline%newline
Task link: https://QS1/qmc/tasks?ID=%property{TaskId}" />
</layout>
</appender>
<!-- Какой тип события проверяется для нашего письма
-->
<logger name="System.Scheduler.Scheduler.Slave.Tasks.ReloadTask">
<!-- тут название должно быть таким же как и в строке <appender name="sendMailQlik" -->
<appender-ref ref="sendMailQlik" />
</logger>
<!-- вот тут я не увидел разницы, работает и на событии "Slave" -->
<!-- <logger name="System.Scheduler.Scheduler.Master.Tasks.ReloadTask">
<appender-ref ref="sendMailQlik" />
</logger> -->
</configuration>