Monitoraggio di Google App Engine
Google App Engine (GAE) è un sistema di applicazioni altamente scalabile su una piattaforma senza server completamente gestita.
È necessario eseguire l'agente Instana nello stesso container in cui è in esecuzione l'applicazione principale.
Per ulteriori informazioni sulle altre piattaforme e sui servizi supportati da Google Cloud, consultare la documentazione su GCP.
Runtime personalizzato GAE
Il runtime personalizzato consente di includere componenti aggiuntivi come interpreti di lingua, server delle applicazioni o applicazioni aggiuntive per il tuo ambiente.
Creazione di un container
Il file Dockerfile dell' Instana e è disponibile all'indirizzo GitHub e rappresenta un ottimo punto di partenza per monitorare le tue app su GAE.
Clona il repository
git clone 'https://github.com/instana/instana-agent-docker.git'
cd instana-agent-docker
Modifica per supportare l' Java
Per consentire l'esecuzione di applicazioni basate su ` Java `, è necessario modificare il file Dockerfile in modo che contenga:
- Tutte le variabili necessarie all'agente Instana, come la chiave dell'agente o l 'endpoint dell'agente host.
- Instana Configurazione del repository degli agenti
- Java installazione
- Instana file di configurazione degli agenti
- sostituire
java_app_name.jarcon la tua applicazione - script di
main-processaggiornamento per l'esecuzione dell'applicazione 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"]
Rinominare run.sh in instana-agent.
Creare un nuovo file denominato main-process e aggiungervi questo contenuto:
java -jar /root/java_app_name.jar &
Crea wrapper.sh file:
#!/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
Modifica per supportare l' NodeJS
Per installare e attivare il collettore Node.js di Instana, procedere come segue:
Riepilogo
- Per installare l'agente host, è necessario inserire la chiave dell'agente Instana nel Dockerfile
main-processviene utilizzato per avviare il processo Javainstana-agentviene utilizzato per avviare il processo dell'agente Instana (rinominato da run.sh )- Il wrapper viene utilizzato per avviare entrambi i processi
File di manifesto GAE
Dopo aver aggiunto e modificato tutti i file necessari nei passi precedenti, è possibile aggiungere un file manifest GAE che descrive l'istanza 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/.*$
Per le app basate su NodeJS,, Python e Go, è necessario abilitare il tracciamento configurando una variabile d'ambiente aggiuntiva:
INSTANA_AGENT_HTTP_LISTEN: "*"
Distribuzione
Infine, è possibile distribuire questo file con l'esecuzione del seguente comando:
gcloud app deploy gae-java-app.yaml
Dopo la conferma, è possibile visualizzare l'output dell'intero processo o dei log di flusso dalla riga di comando eseguendo:
gcloud app logs tail -s gae-java-app
L'agente " Instana " individuerà nuove istanze sulla mappa per ogni app o istanza distribuita su App Engine Flex dell' Google. 
