Apache Tomcat

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A integração do Apache Tomcat coleta métricas relacionadas ao tráfego, como o número de sessões ativas ou a capacidade da rede. A integração também coleta registros de acesso e da Catalina. Os registros de acesso são analisados em um payload JSON com foco nos detalhes da solicitação, enquanto os registros do Catalina são analisados em detalhes gerais. O receptor tomcat coleta telemetria da máquina virtual Java (JVM, na sigla em inglês) do servidor Tomcat por JMX.

Para mais informações sobre o Tomcat, consulte a documentação do Apache Tomcat.

Pré-requisitos

Para coletar a telemetria do Tomcat, instale o Agente de operações:

  • Para métricas, instale a versão 2.9.0 ou mais recente.
  • Para registros, instale a versão 2.9.0 ou mais recente.

Essa integração é compatível com o Tomcat versões 10.x e 9.0.x.

Configure sua instância do Tomcat

Para expor um endpoint JMX, você precisa definir a propriedade do sistema com.sun.management.jmxremote.port ao iniciar a JVM. Também recomendamos configurar a propriedade do sistema com.sun.management.jmxremote.rmi.port para a mesma porta. Para expor um endpoint JMX remotamente, você também precisa definir a propriedade do sistema java.rmi.server.hostname.

Por padrão, essas propriedades são definidas em um arquivo tomcat-env.sh da implantação do Tomcat.

Para definir as propriedades do sistema usando argumentos de linha de comando, adicione -D ao nome da propriedade ao iniciar a JVM. Por exemplo, para definir com.sun.management.jmxremote.port na porta 8050, especifique o seguinte ao iniciar a JVM:

-Dcom.sun.management.jmxremote.port=8050

Configure o agente de operações para Tomcat

Seguindo o guia para Configurar o Agente de operações, adicione os elementos necessários para coletar registros das instâncias do Tomcat e reinicie o agente.

Exemplo de configuração

Os comandos a seguir criam a configuração para coletar e ingerir telemetria para o Tomcat e reinicia o agente de operações.

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    tomcat:
      type: tomcat
      endpoint: service:jmx:rmi:///jndi/rmi://127.0.0.1:8050/jmxrmi
  service:
    pipelines:
      tomcat:
        receivers:
          - tomcat

logging:
  receivers:
    tomcat_access:
      type: tomcat_access
    tomcat_system:
      type: tomcat_system
  service:
    pipelines:
      tomcat:
        receivers:
          - tomcat_access
          - tomcat_system
EOF

sudo service google-cloud-ops-agent restart
sleep 60

Configurar a coleta de registros

Para ingerir registros do Tomcat, é preciso criar receptores para os registros produzidos pelo Tomcat e, em seguida, criar um pipeline para os novos receptores.

tomcat_systemPara configurar um receptor para os registros , especifique os seguintes campos:

Campo Padrão Descrição
exclude_paths Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.
include_paths [/opt/tomcat/logs/catalina.out] Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada arquivo. Um caractere curinga (*) pode ser usado nos caminhos.
record_log_file_path false Se definido como true, o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path. Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado.
type O valor precisa ser tomcat_system.
wildcard_refresh_interval 60s O intervalo em que os caminhos de arquivos curinga em include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration, por exemplo, 30s ou 2m. Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão.

tomcat_accessPara configurar um receptor para os registros , especifique os seguintes campos:

Campo Padrão Descrição
exclude_paths Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.
include_paths [/opt/tomcat/logs/localhost_access_log.*.txt] Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada arquivo. Um caractere curinga (*) pode ser usado nos caminhos.
record_log_file_path false Se definido como true, o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do identificador agent.googleapis.com/log_file_path. Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado.
type O valor precisa ser tomcat_access.
wildcard_refresh_interval 60s O intervalo em que os caminhos de arquivos curinga em include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration, por exemplo, 30s ou 2m. Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão.

O que é registrado

O logName é derivado dos IDs do receptor especificados na configuração. Os campos detalhados dentro de LogEntry são os seguintes.

Os registros tomcat_system contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
jsonPayload.level string Nível de entrada de registro
jsonPayload.message string Mensagem de registro, incluindo stacktrace detalhado, quando fornecido
jsonPayload.module string Módulo do Tomcat em que o registro foi originado
jsonPayload.source string Origem da origem do registro
severity string (LogSeverity) Nível de entrada de registro (traduzido).

Os registros tomcat_access contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
httpRequest objeto Consulte HttpRequest
jsonPayload.host string Conteúdo do cabeçalho "Host"
jsonPayload.user string Nome de usuário autenticado da solicitação
severity string (LogSeverity) Nível de entrada de registro (traduzido).

Configurar a coleta de métricas

Para ingerir métricas do Tomcat, é preciso criar receptores para as métricas produzidas pelo Tomcat e, em seguida, criar um pipeline para os novos receptores.

Para configurar um receptor para suas métricas do tomcat, especifique os campos a seguir:

Campo Padrão Descrição
collect_jvm_metrics true Configura o receptor para coletar as métricas do JVM compatíveis.
collection_interval 60s Um valor de time.Duration, como 30s ou 5m.
endpoint localhost:8050 O URL do serviço JMX ou o host e a porta usados para criar o URL do serviço. Esse valor precisa estar na forma de service:jmx:<protocol>:<sap> ou host:port. Os valores no formato host:port são usados para criar um URL de serviço de service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi.
password Senha configurada se o JMX estiver configurado para exigir autenticação.
type Este valor precisa ser tomcat.
username O nome de usuário configurado se o JMX estiver configurado para exigir autenticação.

O que é monitorado?

A tabela a seguir fornece a lista de métricas que o agente de operações coleta da instância do Tomcat.

Tipo de métrica 
Tipo, tipo
Recursos monitorados
Identificadores
workload.googleapis.com/tomcat.errors
CUMULATIVE, INT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.max_time
GAUGE, INT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.processing_time
CUMULATIVE, INT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.request_count
CUMULATIVE, INT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.sessions
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/tomcat.threads
GAUGE, INT64
gce_instance
proto_handler
state
workload.googleapis.com/tomcat.traffic
CUMULATIVE, INT64
gce_instance
direction
proto_handler

Amostra de painel

Para visualizar as métricas do Tomcat, é necessário ter um gráfico ou um painel configurado. O Cloud Monitoring disponibiliza uma biblioteca de painéis de amostra para integrações, que contêm gráficos pré-configurados. Para informações sobre a instalação desses painéis, consulte Como instalar painéis de amostra.

Verificar a configuração

Nesta seção, descrevemos como verificar se você configurou corretamente o receptor do Tomcat. Pode levar um ou dois minutos para que o agente de operações comece a coletar telemetria.

Para verificar se os registros são ingeridos, acesse o Explorador de registros e execute a seguinte consulta para ver os registros do Tomcat:

resource.type="gce_instance"
(log_id("tomcat_system") OR log_id("tomcat_access"))

Para verificar se as métricas são ingeridas, acesse o Metrics Explorer e execute a seguinte consulta na guia MQL:

fetch gce_instance
| metric 'workload.googleapis.com/tomcat.threads'
| every 1m

A seguir

Para ver um tutorial sobre como usar o Ansible para instalar o agente de operações, configurar um aplicativo de terceiros e instalar um painel de amostra, consulte o vídeo Instalação do agente de operações para resolver problemas de aplicativos de terceiros.