Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
fernando_tonial
Partner - Specialist
Partner - Specialist

Enviar e-mail na falha de uma tarefa no Qlik Sense Enterprise

Sim, é possível enviar e-mail na falha de tarefa com o Qlik Sense. E mais impressionante, sem uso de softwares adicionais.

 

O log do Qlik Sense Enterprise é baseado no log4net framework, onde podemos fazer algumas customizações com os appenders.

Para isso é necessário seguir alguns passos.

 

1-Criar o arquivo LocalLogConfig.xml

Para isso, basta copiar XML e colar em seu editor preferido.

Nesse exemplo foi utilizado a configuração do gmail, recomendo utilizar de sua empresa.

<?xml version="1.0"?>
<configuration>
    <!-- Mail appender-->
    <appender name="MailAppender" type="log4net.Appender.SmtpAppender">
        <filter type="log4net.Filter.LevelRangeFilter">
            <param name="levelMax" value="ERROR" />
        </filter>
        <filter type="log4net.Filter.DenyAllFilter" />
        <evaluator type="log4net.Core.LevelEvaluator">
            <param name="threshold" value="ERROR"/>
        </evaluator>
        <param name="to" value="fernando@tonial.xyz" /> <!-- informe o e-mail de quem receberá -->
        <param name="cc" value="" />
        <param name="from" value="SuaContaGmail@gmail.com" /> <!-- informe o e-mail remetente -->
        <param name="subject" value="[QSPCENTRAL] - Qlik Sense - Falha Tarefa!!!" />
        <param name="smtpHost" value="smtp.gmail.com" />
        <param name="username" value="SuaContaGmail@gmail.com" /> <!-- informe seu login SMTP -->
        <param name="password" value="SuaSenhaGmail" /> <!-- informe sua senha SMTP -->
        <param name="port" value="587" /> <!-- informe a porta SMTP (25, 465, 567)-->
        <param name="EnableSsl" value="true" /> <!-- Pode ser false -->
        <param name="Authentication" value="Basic" /> <!-- Pode ser none caso seu SMPT aceite (None Basic NTML) -->
        <param name="bufferSize" value="0" /> <!-- Defina como 0 para envio a cada Erro -->
        <param name="lossy" value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <!-- Você pode alterar o valor abaixo caso deseje personalisar a mensagem-->
            <param name="conversionPattern" value="%newline%date %-5level %newline%property{TaskName}%newline%property{AppName}%newline%message%newline%newline%newline" />
        </layout>
    </appender>
    <!--Send mail on task failure-->
    <logger name="System.Scheduler.Scheduler.Slave.Tasks.ReloadTask"> <!-- Filtrar que tipo de exceção será capturado -->
        <appender-ref ref="MailAppender" />
    </logger>
</configuration>

 

2-Salve o arquivo no local correto

Vamos salvar o aquivo criado anteriormente na local correto. É importante destacar, caso você tenha ambiente multi-node, é necessário fazer esse passo e o passo 3 em todos o nodes que possuem o serviço do SCHEDULER habilitado, mais detalhes de como habilitar ou desabilitar um serviço em seu node, veja aqui. Veja também exemplos de ambiente muiti-node.

Acesse o servidor que executa as tarefas e coloque o arquivo LocalLogConfig.xml na seguinte pasta C:\ProgramData\Qlik\Sense\Scheduler, mais detalhes no manual do Qlik Sense, clique aqui.

SchedulerLocal.png

3- Reinicie o Serviço Qlik Sense Scheduler Service

SchedulerRestart.png

 

4-Execute uma Tarefa que gere um erro.

Você pode criar um aplicativo Qlik Sense que gere um erro, por exemplo, ler um campo que não existe na tabela de origem.

Com isso você terá um e-mail em sua caixa de entrada informando o erro da tarefa.

 

Esse documento foi feito com a ajuda do Clever do Anjos cuv, no qual fez o documento original em inglês, muito obrigado.

 

Don't worry, be Qlik.

Abraços.

Tonial

Don't Worry, be Qlik.
Labels (2)
10 Replies
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Muito top!

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mmaturana
Contributor III
Contributor III

Muito obrigado, estava mesmo precisando disso.

douglas_sense
Contributor
Contributor

Tonial,

Excelente tutorial, muito útil.
Alguém conseguiu funcionar na versão June 2018? Tentei por aqui de várias formas e configurações sem sucesso. E-mail não e disparado, não existe sinais no log da pasta \Scheduler que indique a tentativa de disparo.

Inclusive, testei de duas maneiras: Salvando o arquivo como LocalLogConfig.xml e também como LocalConfig.xml (Fiquei na dúvida sobre qual dos nomes deve ser seguido). cuvfernando.tonial

fernando_tonial
Partner - Specialist
Partner - Specialist
Author

Estou utilizando a versão June 2018 e funciona normalmente.

Talvez vc tenha que configurar o log de seu Scheduler. Meu caso todos estão Info.

Scheduler.png

Realmente havia um erro no nome do arquivo no texto, corrigido para o nome correto LocalLogConfig.xml.


Obrigado Douglas

Don't Worry, be Qlik.
Anonymous
Not applicable

Oi Douglas,

Você está utilizando e-mail corporativo? Caso sim, faça um teste com outro e-mail. Ex.  um e-mail do "Gmail". Se ainda não der, confira se a porta de saída esta correta.

douglas_sense
Contributor
Contributor

Pessoal,

Minhas configurações no Server estão idênticas as do Fernando (Imagem abaixo).

Já experimentei usar Tanto domínio corporativo, quando GMAIL.

No Gmail, testei portas diferentes, 25,587,465, também reduzi a segurança da Conta, deixando autenticação em apenas uma etapa, e também confiando em aplicativos "Menos" Seguros.

Ainda sem sucesso! Alguma outra verificação recomendada?

Obrigado pelo apoio.

Abraço.

Configuração do QCM ABAIXO.

QLIK.png

Anonymous
Not applicable

Segue um exemplo que testei aqui e funcionou. Veja se o seu esta assim: (altere as linhas 13,14,16,17,20 e 21.)

<?xml version="1.0"?>

<configuration>

<!-- Mail appender-->

<appender name="MailAppender" type="log4net.Appender.SmtpAppender">

<filter type="log4net.Filter.LevelRangeFilter">

<param name="levelMin" value="WARN" />

<param name="levelMax" value="ERROR" />

</filter>

<filter type="log4net.Filter.DenyAllFilter" />

<evaluator type="log4net.Core.LevelEvaluator">

<param name="threshold" value="ERROR"/>

</evaluator>

<param name="to" value="nome@seudominio.com.br" />

<param name="from" value="nome@seudominio.com.br" />

<param name="subject" value="Qlik Sense Task Alert" />

<param name="smtpHost" value="smtp.cwb.terra.com.br" />

<param name="port" value="587" /> <!-- 25, 465, 567  -->

<param name="EnableSsl" value="False" /> <!-- True False -->

<param name="Authentication" value="Basic" />  <!-- None Basic NTML -->

<param name="username" value="nome@seudominio.com.br" />

<param name="password" value="suasenha" />

<param name="bufferSize" value="0" /> <!-- Set this to 0 to make sure an email is sent on every error -->

<param name="lossy" value="true" />

<layout type="log4net.Layout.PatternLayout">

<param name="conversionPattern" value="The Task '%property{TaskName}' failed at %date with the Errorlevel '%-5level' %newline%newlineThe App Name is '%property{AppName}' %newline%newlineThe Message was '%message' %newline%newline%newline" />

</layout>

</appender>

<!--Send mail on task failure-->

<logger name="System.Scheduler.Scheduler.Slave.Tasks.ReloadTask">

<appender-ref ref="MailAppender" />

</logger>

</configuration>

douglas_sense
Contributor
Contributor

Pessoal, consegui resolver meu caso ajustando as configurações do XML para:

Gmail: Porta 465, stmp.gmail.com, ENABLE SSL = TRUE.

Vale ressaltar que a rotina funcionou somente para TASKS agendadas, então, fica o alerta, se disparar a task  via "Start", o server não envia o e-mail. (Se estiver errado por favor me corrijam aqui)!

Muito obrigado a todos! Excelente funcionalidade, muito útil!

vitor_sasaki
Partner - Contributor
Partner - Contributor

Bom dia!

Estou tentando configurar o envio de email, porém sem sucesso, estou usando email corporativo. Tem algum lugar que eu consigo visualizar o log para ver o possível erro?