Apache Tomcat

L'intégration Apache Tomcat collecte les métriques liées au trafic, telles que le nombre de sessions actives ou le débit du réseau. L'intégration collecte également les journaux d'accès et Catalina. Les journaux d'accès sont analysés dans une charge utile JSON axée sur les détails de la requête, tandis que les journaux Catalina sont analysés pour obtenir des informations générales. Le récepteur tomcat collecte la télémétrie à partir de la machine virtuelle Java (JVM) du serveur Tomcat via JMX.

Pour en savoir plus sur Apache Tomcat, consultez la page tomcat.apache.org.

Prérequis

Pour collecter et ingérer des journaux et des métriques Tomcat, vous devez installer l'agent Ops version 2.9.0 ou ultérieure.

Ce récepteur est compatible avec les versions 9.0.x et 10.x d'Apache Tomcat.

Configurer une instance Tomcat

Pour exposer un point de terminaison JMX, vous devez définir la propriété système com.sun.management.jmxremote.port lors du démarrage de la JVM. Nous vous recommandons également de définir la propriété système com.sun.management.jmxremote.rmi.port sur le même port. Pour exposer un point de terminaison JMX à distance, vous devez également définir la propriété système java.rmi.server.hostname.

Par défaut, ces propriétés sont définies dans le fichier tomcat-env.sh d'un déploiement Tomcat.

Pour définir les propriétés système à l'aide d'arguments de ligne de commande, ajoutez le préfixe -D au nom de la propriété lors du démarrage de la JVM. Par exemple, pour définir com.sun.management.jmxremote.port sur le port 8050, spécifiez les éléments suivants lors du démarrage de la JVM :

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

Configurer l'agent Ops pour Tomcat

En suivant le guide de configuration de l'agent Ops, ajoutez les éléments requis pour collecter les journaux et les métriques de vos instances Tomcat, puis redémarrez l'agent.

Exemple de configuration

La commande suivante crée le fichier de configuration permettant de collecter et d'ingérer des journaux et des métriques d'Apache Tomcat, et de redémarrer l'agent Ops sous Linux.

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    tomcat_system:
      type: tomcat_system
    tomcat_access:
      type: tomcat_access
  service:
    pipelines:
      tomcat:
        receivers:
          - tomcat_system
          - tomcat_access
metrics:
  receivers:
    tomcat:
      type: tomcat
  service:
    pipelines:
      tomcat_pipeline:
        receivers:
          - tomcat
EOF
sudo service google-cloud-ops-agent restart

Configurer la collecte de journaux

Pour ingérer des journaux à partir de Tomcat, vous devez créer des récepteurs pour les journaux produits par Tomcat, puis créer un pipeline pour les nouveaux récepteurs.

Pour configurer un récepteur pour vos journaux tomcat_system, spécifiez les champs suivants :

Champ Par défaut Description
type La valeur doit être égale à tomcat_system.
include_paths [/opt/tomcat/logs/catalina.out] Fichiers journaux à lire Un caractère générique (*) peut être utilisé dans les chemins d'accès. Exemple : /var/log/apache*/*.log.
exclude_paths Fichiers journaux à exclure, si include_paths contient un fichier glob ou un répertoire


Pour configurer un récepteur pour vos journaux tomcat_access, spécifiez les champs suivants :

Champ Par défaut Description
type La valeur doit être égale à tomcat_access.
include_paths [/opt/tomcat/logs/localhost_access_log.*.txt] Fichiers journaux à lire
exclude_paths [] Fichiers journaux à exclure, si include_paths contient un fichier glob ou un répertoire

Contenu consigné

Le logName des journaux tomcat_system et tomcat_access est dérivé des ID de récepteur spécifiés dans la configuration. Les champs détaillés dans l'entrée de journal (LogEntry) sont les suivants.

tomcat_system
Ces journaux contiennent les champs suivants dans le LogEntry :

Champ Type Description
timestamp chaîne (Timestamp) Heure de réception de la requête
jsonPayload.module chaîne Module de Tomcat d'où provient le journal
jsonPayload.source chaîne Source d'où provient le journal
jsonPayload.message chaîne Message de journal, y compris la trace détaillée de la pile, le cas échéant
severity chaîne (LogSeverity) Niveau d'entrée de journal (traduit)

tomcat_access
Ces journaux contiennent les champs suivants dans le LogEntry :

Champ Type Description
httpRequest.protocol chaîne Protocole utilisé pour la requête
httpRequest.referer chaîne Contenu de l'en-tête Referer
httpRequest.requestMethod chaîne Méthode HTTP
httpRequest.requestUrl chaîne URL de la requête (généralement, seulement la partie du chemin d'accès à l'URL)
httpRequest.responseSize chaîne (int64) Taille d'une réponse
httpRequest.status nombre Code d'état HTTP
httpRequest.userAgent chaîne Contenu de l'en-tête User-Agent
jsonPayload.host chaîne Contenu de l'en-tête Host
jsonPayload.user chaîne Nom d'utilisateur authentifié pour la requête
timestamp chaîne (Timestamp) Heure de réception de la requête

Configurer la collecte de métriques

Pour collecter des métriques à partir de Tomcat, vous devez créer un récepteur pour les métriques Tomcat, puis créer un pipeline pour le nouveau récepteur. Pour configurer un récepteur pour vos métriques Tomcat, spécifiez les champs suivants :

Champ Par défaut Description
type La valeur doit être égale à tomcat.
endpoint localhost:8050 L'URL du service JMX, ou l'hôte et le port utilisés pour créer l'URL du service. Cette valeur doit être au format service:jmx:<protocol>:<sap> ou host:port. Les valeurs du formulaire host:port permettent de créer une URL de service de service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi.
collect_jvm_metrics true Cela configure le récepteur de manière à ce qu'il collecte également les métriques JVM compatibles.
username Le nom d'utilisateur configuré si JMX est configuré pour exiger une authentification.
password Le mot de passe configuré si JMX est configuré pour exiger une authentification.
collection_interval 60s Une valeur time.Duration, telle que 30s ou 5m.

Métriques surveillées

Le tableau suivant fournit la liste des métriques que l'agent Ops collecte à partir de l'instance Tomcat.

Type de métrique
Genre, type
Ressources surveillées
Libellés
workload.googleapis.com/tomcat.errors
CUMULATIVEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.max_time
GAUGEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.processing_time
CUMULATIVEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.request_count
CUMULATIVEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.sessions
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/tomcat.threads
GAUGEINT64
gce_instance
proto_handler
workload.googleapis.com/tomcat.traffic
CUMULATIVEINT64
gce_instance
proto_handler
direction

Exemple de tableau de bord

Vous pouvez afficher les métriques de cette intégration à l'aide d'un exemple de tableau de bord Cloud Monitoring. Suivez les procédures décrites dans la section Installer des exemples de tableaux de bord pour importer le tableau de bord Présentation de Tomcat GCE à partir de l'exemple de bibliothèque et afficher les graphiques qui présentent vos métriques Apache Tomcat.

Vérifier la configuration

Vous pouvez utiliser l'explorateur de journaux et l'explorateur de métriques pour vérifier que vous avez correctement configuré le récepteur Tomcat. La collecte des journaux et des métriques par l'agent Ops peut prendre une ou deux minutes.

Pour vérifier que les journaux sont ingérés, accédez à l'explorateur de journaux et exécutez la requête suivante pour afficher les journaux Tomcat :

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/tomcast_system" OR "projects/PROJECT_ID/logs/tomcat_access")


Pour vérifier que les métriques sont ingérées, accédez à l'explorateur de métriques et exécutez la requête suivante dans l'onglet MQL.

fetch gce_instance
| metric 'workload.googleapis.com/tomcat.sessions'
| align rate(1m)
| every 1m

Étape suivante

Pour accéder à un tutoriel pas à pas expliquant comment utiliser Ansible pour installer l'agent Ops, configurer une application tierce et installer un exemple de tableau de bord, consultez la vidéo Install the Ops Agent to troubleshoot third-party applications (Installer l'agent Ops pour résoudre les problèmes liés à des applications tierces).