Thiago Zavaschi R2 www.zavaschi.com

19Apr/122

SQL Server Reporting Services – Trace Log e HTTP Log

Olá!

Assim como a engine do SQL Server e muitos outros produtos (Microsoft ou não), estes possuem um log de trace sobre o que acontece com o aplicativo/serviço, não acontece diferente no Reporting Services.

Os arquivos de trace log do Reporting Services variam de acordo com a versão do SQL Server. Até o SQL Server 2005 (onde ainda tinhamos dependência do IIS para o SSRS) haviam 4 tipos de arquivos de log que por padrão são limitados a 32MB por arquivo e são automaticamente deletados após 14 dias. Estes arquivos são texto plano, então qualquer editor de texto consegue abrir.

São eles:

ReportServerService_<timestamp>.log: Registra detalhes das operações (worker threads), como certas configurações do serviço, status das atividades de pesquisa relacionadas as assinaturas e notificações de entrega.

ReportServerService_main_<timestamp>.log: Registra os dados do serviço windows do Report Server e dos serviços Web (alocação de recursos do servidor, inicialização de configurações definidas nos arquivos de configuração).

ReportServerWebApp_<timestamp>.log: – Trace log do Report Manager.

ReportServer_<timestamp>.log: Trace log para o web service do Report Server.

Como o SSRS 2005 é uma versão antiga (temos 2008, 2008 R2 e 2012 após), não vou focar nela.

Maiores informações sobre os Trace Logs do SSRS 2005 e quais são os arquivos de configuração associados podem ser encontrados aqui: http://msdn.microsoft.com/en-us/library/ms156500(v=sql.90).aspx

O que muda a partir do SSRS 2008?

A partir do Reporting Services do SQL Server 2008, onde já não temos mais a dependência do IIS, os arquivos de trace log foram unificados. As especificações aqui comentadas são válidas para o SSRS 2008, 2008 R2 e 2012.

Os arquivos para o SSRS 2008+ ficam em (assumindo o local padrão):

[Program Files]\Microsoft SQL Server\MSRS<versao>.<nome da instância>\Reporting Services\LogFiles\

Existem alguns parâmetros de configuração para o Trace Log (vamos abordar sobre os arquivos de configuração em um post futuro). O arquivo de configuração para alterar propriedades do trace é o ReportingServicesService.exe.config. Por padrão este arquivo se localiza no diretório:

[Program Files]\Microsoft SQL Server\MSRS<versao>.<nome da instância>\Reporting Services\Report Server\bin\

As duas partes que devemos considerar são: DefaultTraceSwitch e o RSTrace. Um exemplo destas partes pode ser observado abaixo:

<system.diagnostics>

  <switches>

    <add name="DefaultTraceSwitch" value="3" />

</switches>

</system.diagnostics>

<RStrace>

  <add name="FileName" value="ReportServerService_" />

  <add name="FileSizeLimitMb" value="32" />

  <add name="KeepFilesForDays" value="14" />

  <add name="Prefix" value="tid, time" />

  <add name="TraceListeners" value="file" />

  <add name="TraceFileMode" value="unique" />

  <add name="Components" value="all" />

</RStrace>

A propriedade DefaultTraceSwitch define o grau de informação que o arquivo de trace irá conter. O valor padrão é 3 e as possíveis definições se encontram a seguir:

  • 0: Desabilita o trace.
  • 1: Exceptions e restarts.
  • 2: Exceptions, restarts, warnings.
  • 3: Exceptions, restarts, warnings, status messages.
  • 4: Verbose mode (maior grau de detalhamento).

As especificações para o RSTrace se encontram a seguir:

FileName: Indica a primeira parte do nome do arquivo de log.

FileSizeLimitMb: Tamanho em MB do arquivo de trace. Os valores podem ir de 0 até o máximo de um inteiro. Se especificar 0 ou um valor negativo, o SSRS entenderá como sendo 1.

KeepFilesForDays: Número de dias que os arquivos de trace serão mantidos. Os valores podem ir de 0 até o máximo de um inteiro. Se especificar 0 ou um valor negativo, o SSRS entenderá como sendo 1.

Prefix: É o valor gerado para distinguir um arquivo de log de outro e é concatenado no final do nome do arquivo (após o FileName). Não mexa nesta configuração. Por padrão é concatenado o timestamp.

TraceListeners: Especifica o destino do conteúdo do trace. Você pode especificar mais de um local (separando por vírgula). Os valores válidos são: DebugWindow, File (que é o padrão), StdOut.

TraceFileMode: Especifica que o arquivo de trace terá dados de um período de 24 horas. Você só deve ter um arquivo de log por componente por dia. O valor padrão é unique. Não mexa nesta configuração.

Components: Especifica os componentes para os quais as informações são geradas e o level de detalhe (mesmos da propriedade DefaultTraceSwitch). Um erro comum é achar que “all” se refere a todos os componentes, mas na realidade “all” se refere a tudo fora o que já é coberto pelos componentes específicos. As categorias dos componentes são as definidas a seguir:

  • All: trace da atividade geral do report server que não estão inclusas nas demais categorias (mais específicas). Não desabilite este trace.
  • RunningJobs: trace dos relatórios sendo executados atualmente.
  • SemanticQueryEngine: Trace do processamento das queries semânticas de relatórios baseados em modelos.
  • SemanticModelGenerator: usado para fazer trace da geração de modelos.
  • http: usado para habilitar o arquivo de log HTTP do Report Server (por padrão não é habilitado. Para maiores informações: Report Server HTTP Log.

Para usar mais de um componente, basta concatenar com virgula. se desejar um grau de detalhamento maior ou menor (ou até mesmo desabilitar para algum componente) do que o configurado em DefaultTraceSwitch, basta utilizar a sintaxe <componente>:<level de trace>. Por exemplo:

<add name="Components" value="all,http:4,SemanticQueryEngine:0" />

Sem o IIS como vejo os logs de HTTP?

Um ponto importante é a questão do log para a parte de HTTP.

Legal, por padrão o log de http não é ativo, para ativá-lo devemos configurar na parte de Components na sessão RSTrace conforme vimos.

Os logs de HTTP depois de habilitados aparecerão junto aos Trace Logs que vimos. Estes logs contém campos padrão W3C, então da pra usar as ferramentas e queries atuais (usadas contra o IIS) para fazer parser destes arquivos.

Ao habilitar o HTTP Trace Log existem outras configurações para adicionarmos ao arquivo de configuração (dentro do <RSTrace>. Uma delas define o prefixo do nome do arquivo e o outro quais switches queremos monitorar. Segue um exemplo:

<add name=”HttpTraceFileName” value=”ReportServerService_HTTP_” />

<add name=”HttpTraceSwitches” value=”date,time,clientip,username,serverip,serverport,host,method,

uristem,uriquery,protocolstatus,bytesreceived,timetaken,

protocolversion,useragent,cookiereceived,cookiesent,referrer” />

Maiores informações sobre Trace Log no SSRS podem ser encontradas aqui: http://msdn.microsoft.com/en-us/library/ms156500(v=sql.110).aspx.

Maiores informações sobre o HTTP Log no SSRS a partir do SQL 2008 podem ser encontradas aqui: http://msdn.microsoft.com/en-us/library/bb630443.aspx.


Bom pessoal, o que queria mostrar hoje para vocês era isso.

[]s,

Thiago Zavaschi

Comments (2) Trackbacks (0)
  1. Vale a pena comentar que no 2012 em modo integrado sharepoint os logs do RS estao integrados ao SharePoint ULS logging:
    http://technet.microsoft.com/en-us/library/ff487871(v=sql.110).aspx

    E no catalog database o RS expoem uma View chamada execution log que contem somente informacoes sobre os relatorios executados.

  2. Exatamente, vou colocar um adendo. :)
    Quanto ao Execution Log, há um post focado nele já!
    Obrigado!


Leave a comment


No trackbacks yet.