Monitoring Google App Engine
Google App Engine (GAE), tamamen yönetilen sunucusuz bir platformdaki yüksek düzeyde ölçeklenebilir bir uygulama sistemidir.
Ana uygulamanın çalıştığı aynı taşıyıcıda Instana aracısını çalıştırmamız gerekir.
GAE Özel yürütme ortamı
Custom Runtime, dil yorumlayıcıları, uygulama sunucuları ya da ek uygulamalar gibi ek bileşenleri ortamınıza eklemenize olanak sağlar.
Taşıyıcı oluşturma
Instana Agent Dockerfile, GitHub ' da bulunur ve APE içinde uygulamalarınızı izlemek için mükemmel bir başlangıç noktasıdır.
Havuza Clone
git clone 'https://github.com/instana/instana-agent-docker.git'
cd instana-agent-docker
Modification to support Java
Java tabanlı uygulamaların çalıştırılıp çalıştırılamaması için Dockerfile değiştirilmeli ve aşağıdakileri içermesi gerekir:
- All variables needed by the Instana agent, like your aracı anahtarı or the anasistem aracısı uç noktası.
- Instana aracı havuzu yapılandırması
- Java kuruluşu
- Instana aracı yapılandırma dosyaları
java_app_name.jaryerine uygulamanızı koyun- Java uygulamasını çalıştırmak için
main-processkomut dosyasını güncelle
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"]
run.sh dosyasını instana-agentolarak yeniden adlandırın.
main-process adlı yeni bir dosya oluşturun ve bu içeriği buna ekleyin:
java -jar /root/java_app_name.jar &
wrapper.sh dosyası oluşturun:
#!/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 to support NodeJS
Süreç, Java uygulamalarına benzer. Java yerine NodeJS ve npm paketini kurun @instana/collector:
ADD package.json /root
ADD app.js /root/
# Install NodeJS
RUN apk update && \
apk --update add nodejs nodejs-npm
RUN npm install --save @instana/collector
main-process dosyası, NodeJS uygulamanızın nasıl çalıştırılacağını yönerge gerektirir:
node app.js &
Your application also needs to require and initialize the @instana/collector package, for details on that refer to our Node.jsüzerindeki belgeler.
Özeti
- Anasistem aracısını kurmak için Instant aracı anahtarı Dockerfile içine yerleştirilmelidir.
main-process, Java işlemini başlatmak için kullanılırinstana-agent, Instana aracısını başlatmak için kullanılır ( run.sholarak yeniden adlandırılır).- Sarıcı her iki işlemi de başlatmak için kullanılır.
GAE bildirge dosyası
Önceki adımlarda gereken tüm dosyaları ekledikten ve değiştirdikten sonra, GAE eşgörünümünü açıklayan bir GAE bildirge dosyası ekleyebiliriz.
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/.*$
NodeJS, Python ve Go tabanlı uygulamalara ilişkin ek bir ortam değişkenine gerek vardır:
INSTANA_AGENT_HTTP_LISTEN: "*"
İzlemeyi etkinleştirmek için. İzlemekte olduğunuz dil için kaynak kodunuzun algılayıcı içermesini gerektiğini (Java dışında) unutmayın.
Devreye Alma
Son olarak, aşağıdaki komutu çalıştırıp bu dosyayı konuşlandırabiliriz:
gcloud app deploy gae-java-app.yaml
Doğrulama işleminden sonra, komut satırından tüm süreç ya da akış günlüklerinin çıkışını görebilirsiniz:
gcloud app logs tail -s gae-java-app
Instana aracısı, Google App Engine Flex üzerinde konuşlandırılan her uygulama/eşgörünüm eşleminde yeni eşgörünümler keşfeder. 
