Rotacionando Logs e Evitando Travamentos do Pentaho Server

Como já é a segunda vez que passo por um problema semelhante, resolvi escrever para ajudar qualquer pessoa da comunidade que esteja passando pelo mesmo problema.

 

O caso em questão foi na versão 5.3 do Pentaho, mas acredito que possa se aplicar a qualquer release.

 

Um cliente que ainda está na versão 5.3 do Pentaho (ele tem seus motivos, acredite) vinha sofrendo desde que teve que refazer sua máquina devido a um problema de Hardware. Após instalar novamente o “BI Server”, nessa versão ainda não se chama “Pentaho Server”, o mesmo apresentou várias vezes travamentos ao longo do dia, mas nada que pudesse nos dar uma dica do que seria, até que lembrei que já havia passado por situação semelhante nessa mesma release da suíte e lembrei que consegui resolver com o “log rotation”. Chega de blá blá blá e vamos ao que interessa, que é como se faz.

Vamos tratar aqui de um servidor Linux, pois não tenho servidores Pentao no Windows com essa versão.

ANTES DE COMEÇAR PARE SEU BI SERVER E FAÇA BACKUP DA SUA PASTA DO PENTAHO.

 

1 – Crie um arquivo chamado “tomcat” em “/etc/logrotate.d”. O conteúdo do arquivo deve ser:

# logrotate config file to rotate out the catalina.out for Tomcat file, 
# which will grow too large otherwise. This rotates daily, compressing
# the result, and keeping 7 days worth of logs.
/<caminho da sua solucao>/biserver-ce/tomcat/logs/catalina.out {
    daily
    copytruncate
    missingok 
    rotate 7   
    dateext
    compress
      delaycompress
    notifempty
}

2 – Altere o arquivo “tomcat/conf/logging.properties” para o seguinte que passará a usar  “java.util.logging.FileHandler”, também vai manter apenas 5 arquivos com no máximo 20 MB cada um. No exemplo trocamos o nível de log para Warning, pois isso reduz drasticamente a escrita do log e em consequência o tamanho dos mesmos:

to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

handlers = 1catalina.java.util.logging.FileHandler, 2localhost.java.util.logging.FileHandler, 3manager.java.util.logging.FileHandler, 4host-manager.java.util.logging.FileHandler, java.util.logging.ConsoleHandler

.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler
 
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################

# Store ~20MB of logs at a time, keep last 5 around
1catalina.java.util.logging.FileHandler.level = WARNING
1catalina.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.log
1catalina.java.util.logging.FileHandler.limit = 20971520
1catalina.java.util.logging.FileHandler.count = 5
1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

2localhost.java.util.logging.FileHandler.level = WARNING
2localhost.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/localhost.%g.log
2localhost.java.util.logging.FileHandler.limit = 20971520
2localhost.java.util.logging.FileHandler.count = 5
2localhost.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

3manager.java.util.logging.FileHandler.level = WARNING
3manager.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/manager.%g.log
3manager.java.util.logging.FileHandler.limit = 20971520
3manager.java.util.logging.FileHandler.count = 5
3manager.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

4host-manager.java.util.logging.FileHandler.level = WARNING
4host-manager.java.util.logging.FileHandler.pattern = ${catalina.base}/logs/host-manager.%g.log
4host-manager.java.util.logging.FileHandler.limit = 20971520
4host-manager.java.util.logging.FileHandler.count = 5
4host-manager.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

java.util.logging.ConsoleHandler.level = WARNING
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.java.util.logging.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.java.util.logging.FileHandler

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.java.util.logging.FileHandler

A alteração acima controla o log catalina. Agora vamos fazer o procedimento para realizar a modificação semelhante no pentaho.log

3 – Altere o arquivo “tomcat/webapps/pentaho/WEB-INF/classes/log4j.xml” na seção de appender do PENTAHOFILE:

<appender name="PENTAHOFILE" class="org.apache.log4j.rolling.RollingFileAppender">
      <param name="File" value="../logs/pentaho.log" />
      <param name="Append" value="true" />
      <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
        <param name="FileNamePattern" value="../logs/pentaho.%i.log" />
        <param name="ActiveFileName" value="../logs/pentaho.log" />
        <param name="MaxIndex" value="5" />
      </rollingPolicy>
      <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
        <param name="MaxFileSize" value="20971520" />
      </triggeringPolicy>      
      <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
      </layout>
  </appender>

4 – Baixe o arquivo “apache-log4j-extras-1.1.zip” de pacote de extras do Apache para Log4j em Apache Logging Services

5 – Descompacte o arquivo “apache-log4j-extras.jar” em “/biserver-ce/tomcat/webapps/pentaho/WEB-INF/lib”

6 – Inicie novamente o BI Server e veja se o log catalina NÃO possui a mensagem: “log4j:ERROR Could not create an Appender. Reported error follows. java.lang.ClassNotFoundException: org.apache.log4j.rolling.RollingFileAppender”.

 

Se esta mensagem não aparecer, significa que deu tudo certo!

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *