Surveillance de Google App Engine
Google App Engine (GAE) est un système d'applications hautement évolutif sur une plateforme sans serveur entièrement gérée.
Vous devez exécuter l'agent « Instana » dans le même conteneur que celui où s'exécute l'application principale.
Pour plus d'informations sur les autres plateformes et services pris en charge par l' Google Cloud, consultez la documentation d' GCP.
Environnement d'exécution GAE personnalisé
L'environnement d'exécution personnalisé vous permet d'inclure des composants supplémentaires, tels que des interpréteurs de langage, des serveurs d'applications ou d'autres applications dans votre environnement.
Génération d'un conteneur
Le fichier Dockerfile de l'agent « Instana » est disponible sur GitHub et constitue un excellent point de départ pour surveiller vos applications sur GAE.
Cloner le référentiel
git clone 'https://github.com/instana/instana-agent-docker.git'
cd instana-agent-docker
Modification pour la prise en charge de Java
Pour prendre en charge l'exécution d'applications Java, le fichier Dockerfile doit être modifié et contenir les éléments suivants :
- Toutes les variables requises par l'agent d' Instana, telles que votre clé d'agent ou le point de terminaison de l'agent hôte.
- Configuration du référentiel d'agent Instana
- Installation de Java
- Fichiers de configuration de l'agent Instana
- remplacez
java_app_name.jarpar votre application - mettez à jour le script
main-processpour exécuter l'application Java
FROM alpine:3.7
ENV LANG=C.UTF-8 \
INSTANA_AGENT_KEY="" \
INSTANA_AGENT_ENDPOINT="" \
INSTANA_AGENT_ENDPOINT_PORT="" \
INSTANA_AGENT_ZONE="" \
INSTANA_AGENT_TAGS="" \
INSTANA_AGENT_HTTP_LISTEN="" \
INSTANA_AGENT_PROXY_HOST="" \
INSTANA_AGENT_PROXY_PORT="" \
INSTANA_AGENT_PROXY_PROTOCOL="" \
INSTANA_AGENT_PROXY_USER="" \
INSTANA_AGENT_PROXY_PASSWORD="" \
INSTANA_AGENT_PROXY_USE_DNS=""
RUN echo "@edge http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories && \
apk update && \
apk upgrade && \
apk add --update-cache --update gomplate@edge bash ca-certificates curl docker@edge inotify-tools && \
curl -sSL https://packages.instana.io/Instana.rsa -o /etc/apk/keys/instana.rsa.pub && \
echo "https://_:YOUR_INSTANA_AGENT_HERE@packages.instana.io/agent/apk/generic" >> /etc/apk/repositories && \
apk update && \
apk add instana-agent-dynamic && \
( /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 C.UTF-8 || true ) && \
echo "export LANG=C.UTF-8" > /etc/profile.d/locale.sh && \
sed -i '$d' /etc/apk/repositories && \
rm -rf /tmp/* /var/cache/apk/*
# Install OpenJDK-8
RUN apk update && \
apk --update add openjdk8-jre
ADD org.ops4j.pax.logging.cfg /root/
ADD org.ops4j.pax.url.mvn.cfg /root/
ADD configuration.yaml /root/
ADD com.instana.agent.main.sender.Backend.cfg.tmpl /root/
ADD mvn-settings.xml.tmpl /root/
# This is the run.sh from the repository renamed to instana-agent
ADD instana-agent /root
# Add the jar file and main-process
ADD java_app_name.jar /root
ADD main-process /root
# The wrapper is used to run both processes in the same container
COPY wrapper.sh /root
WORKDIR /root
ENTRYPOINT ["./wrapper.sh"]
Renommez run.sh en instana-agent.
Créez un nouveau fichier appelé main-process et ajoutez-lui ce contenu :
java -jar /root/java_app_name.jar &
Créer wrapper.sh un fichier :
#!/bin/bash
# Start the first process
./main-process -D
status=$?
if [ $status -ne 0 ]; then
echo "Failed to start main-process: $status"
exit $status
fi
# Start the second process
./instana-agent -D
status=$?
if [ $status -ne 0 ]; then
echo "Failed to start instana-agent: $status"
exit $status
fi
while sleep 60; do
ps aux |grep main-process |grep -q -v grep
PROCESS_1_STATUS=$?
ps aux |grep instana-agent |grep -q -v grep
PROCESS_2_STATUS=$?
# If the greps above find anything, they exit with 0 status
# If they are not both 0, then something is wrong
if [ $PROCESS_1_STATUS -ne 0 -o $PROCESS_2_STATUS -ne 0 ]; then
echo "One of the processes has already exited."
exit 1
fi
done
Modification pour la prise en charge de Node.js
Pour installer et activer le collecteur Node.js d' Instana, procédez comme suit :
Récapitulatif
- La clé de l'agent « Instana » doit être ajoutée au fichier Dockerfile afin d'installer l'agent hôte
main-processest utilisé pour démarrer le processus Javainstana-agentest utilisé pour démarrer le processus de l'agent Instana (nouveau nom remplaçant run.sh)- L'encapsuleur est utilisé pour démarrer les deux processus
Fichier manifeste GAE
Après avoir ajouté et modifié tous les fichiers nécessaires dans les étapes précédentes, nous pouvons ajouter un fichier manifeste GAE qui décrit l'instance GAE.
runtime: custom
env: flex
service: gae-java-app
manual_scaling:
instances: 1
env_variables:
INSTANA_AGENT_KEY: 'YOUR_INSTANA_AGENT_KEY'
INSTANA_AGENT_ENDPOINT: 'YOUR_INSTANA_HOST_AGENT_ENDPOINT'
INSTANA_AGENT_ENDPOINT_PORT: '443'
INSTANA_AGENT_ZONE: 'gae-java-app'
resources:
cpu: 4
memory_gb: 4
health_check:
enable_health_check: False
skip_files:
- ^\.git/.*$
Pour les applications basées sur NodeJS,, Python et Go, vous devez activer le traçage en configurant une variable d'environnement supplémentaire :
INSTANA_AGENT_HTTP_LISTEN: "*"
Déploiement
Enfin, nous pouvons déployer ce fichier à l'aide de la commande suivante :
gcloud app deploy gae-java-app.yaml
Après confirmation, vous pouvez voir le résultat de l'ensemble du processus ou les journaux de flux à partir de la ligne de commande en exécutant :
gcloud app logs tail -s gae-java-app
L'agent « Instana » détectera les nouvelles instances sur la carte pour chaque application ou instance déployée sur l'App Engine Flex d' Google. 
