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
|
|
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
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/tomcat.threads
|
|
GAUGE , INT64 gce_instance |
proto_handler
|
workload.googleapis.com/tomcat.traffic
|
|
CUMULATIVE , INT64 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