ダイナミック言語プロキシの展開

ダイナミック言語プロキシは、アプリケーションプロセスで実行されている Python エージェントと AppDynamics コントローラ間の通信ゲートウェイとして機能します。

次の 2 つの使用可能なオプションのいずれかを使用して、ダイナミック言語プロキシを展開できます。

  • サイドカーコンテナ(推奨):このオプションは、コンテナごとに 1 つのプロセスのベストプラクティスに従います。ダイナミック言語プロキシは、アプリケーションコンテナとは別のサイドカーコンテナで実行されます。
  • アプリケーションコンテナ:このオプションは、デフォルト設定を使用して、アプリケーションと同じコンテナでプロキシを実行します。

サイドカーコンテナへのダイナミック言語プロキシの展開

AppDynamics では、コンテナごとに 1 つのプロセスを維持するというベストプラクティスに従うことを推奨しています。
  1. サイドカーコンテナを使用してダイナミック言語プロキシを実行するには、Python アプリケーションの起動時に --use-manual-proxy パラメータを追加します。
    pyagent run --use-manual-proxy python ./app.py
    --use-manual-proxy パラメータは、Python エージェントがダイナミック言語プロキシを同じアプリケーションコンテナ内の別プロセスとして開始すること(デフォルト動作)を防ぎます。
  2. 展開されたサイドカーコンテナを、プロキシを実行するように設定します。
    この Kubernetes 展開仕様のスニペットでは、Docker Hub で公開されている dl-proxy イメージを使用するプロキシという名前の 2 番目のコンテナを定義する方法を示しています。
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: mypython-app
    spec:
    <...>
    spec:
    containers:
    - name: mypython-app
    image: myrepo/python-app-with-appd:v1
    <...>
    - name: proxy
    image: docker.io/appdynamics/dl-proxy:latest
    imagePullPolicy: Always
    env:
    - name: APPDYNAMICS_DEBUG_LOG
    value: "on"
    - name: APPDYNAMICS_LOGGING_LEVEL
    value: "debug"
    - name: APPDYNAMICS_TCP_COMM_HOST
    value: "0.0.0.0"
    - name: APPDYNAMICS_TCP_COMM_PORT
    value: "9091"
    - name: APPDYNAMICS_TCP_PORT_RANGE
    value: "10000-10100"
    ports:
    - containerPort: 9091
    protocol: TCP
    resources:
    ...

アプリケーションコンテナへのダイナミック言語プロキシの展開

プロキシをアプリケーションと同じコンテナ内の別プロセスとして実行する場合は、Python アプリケーションの起動時に --use-manual-proxy パラメータを省略します。

pyagent run python ./app.py

Python エージェントは、同じコンテナ内のプロキシに対して別のプロセスを自動的に開始します。サイドカーコンテナは展開に追加せず、アプリケーションコンテナのみ定義されるようにしてください。