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>