Google App Engine のモニタリング
Google App Engine (GAE) は、フルマネージド・サーバーレス・プラットフォーム上の極めてスケーラブルなアプリケーション・システムです。
Instana エージェントは、メインアプリケーションが実行されているのと同じコンテナ内で実行する必要があります。
その他のサポート対象の Google Cloud プラットフォームおよびサービスに関する詳細については、 『 GCP 』のドキュメントを参照してください。
GAE カスタム・ランタイム
カスタム・ランタイムにより、言語インタープリター、アプリケーション・サーバー、追加のアプリケーションなどの追加のコンポーネントを環境に組み込むことができます。
コンテナーのビルド
Instana エージェントのDockerfileは、 GitHub で公開されており、GAE上のアプリケーションを監視するための優れた出発点となります。
リポジトリーの複製
git clone 'https://github.com/instana/instana-agent-docker.git'
cd instana-agent-docker
Java をサポートするための変更
Java ベースのアプリケーションの実行をサポートするには、Docker ファイルを変更して、以下を含める必要があります。
- Instana エージェントに必要なすべての変数( エージェントキー やエージェントのホストエンドポイントなど)。
- Instana エージェントのリポジトリー構成
- Java インストール済み環境
- Instana エージェントの構成ファイル
java_app_name.jarをアプリケーションに置き換えます- Java アプリケーションを実行するために
main-processスクリプトを更新します
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 を instana-agent に名前変更します。
main-process という新規ファイルを作成して、以下の内容を追加します。
java -jar /root/java_app_name.jar &
ファイル wrapper.sh を作成:
#!/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
NodeJS をサポートするための変更
Instana の Node.js コレクターをインストールして有効にするには、以下の手順に従ってください:
サマリー
- ホストエージェントをインストールするには、 Instana エージェントキー をDockerfileに記述する必要があります
main-processは、Java プロセスを開始するために使用されますinstana-agentは、Instana エージェント・プロセスを開始するために使用されます (run.sh から名前変更されています)- ラッパーは、両方のプロセスを開始するために使用されます
GAE マニフェスト・ファイル
上記のステップで、必要なすべてのファイルを追加して変更した後、GAE インスタンスを記述する 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/.*$
NodeJS,、 Python、および Go ベースのアプリでは、追加の環境変数を設定してトレースを有効にする必要があります:
INSTANA_AGENT_HTTP_LISTEN: "*"
デプロイメント
最後に、次のコマンドを実行して、このファイルをデプロイすることができます。
gcloud app deploy gae-java-app.yaml
確認した後、次のコマンドを実行して、プロセス全体またはストリーム・ログの出力をコマンド・ラインから確認できます。
gcloud app logs tail -s gae-java-app
Instana エージェントは、Google App Engine Flex 上のデプロイ済みアプリケーション/インスタンスごとに、マップ上の新規インスタンスをディスカバーします。 
