本文へスキップ

Docker Pythonインストール

管理 > エージェントインストール > 下段のアプリケーションインストール クリック > 設置案内の中で Docker Python タブを選択

Dockerコンテナベースで実行するPythonアプリケーションに、WhaTapモニタリングエージェントを適用し、コンテナイメージをパッケージングする手順を次のように案内します。Kubernetesアプリケーションをリリーズするために、Dockerイメージが必要です。次の手順でwhatap-pythonパッケージがインストールされたDockerイメージを作成します。

ノート
  • EKS Fargateは、対応予定です。

  • Pythonアプリケーションの統合プロセスを理解しやすくするために、Git のサンプルコードを提供します。次の文書を参照してください。

エージェントダウンロード

PythonアプリケーションのDockerイメージをビルドする場合、whatap-pythonパッケージをインストールします。

RUN pip3 install --upgrade whatap-python

次のDockerfileの定義例を参照にしてください。

python ver 3.10
# python3.10をドッカー環境にインストールします。
FROM python:3.10

# 作業ディレクトリを/appに設定します。
WORKDIR /app

# 現在のディレクトリ内のすべてのファイルとフォルダーをコンテナ内の/appディレクトリにコピーします。
ADD . /app/

# Pythonでは、pipを利用して外部ライブラリがインストールできます。
# WhaTap Pythonエージェントをドッカーイメージのビルド時にインストールします。
RUN pip3 install --upgrade whatap-python

エージェントの設定及び実行

アプリケーションを実行する前に、Pythonエージェントの作業ディレクトリを設定し、デフォルトの設定ファイルを作成します。設定ファイル(entrypoint.sh)を通じてエージェントに認証情報やログの追跡有無などを設定します。

設定ファイル(entrypoint.sh)の例
entrypoint.sh
#!/bin/bash

# コンテナの作業ディレクトリをWhaTapパスに設定します。そのパスにエージェントログと設定ファイルを作成します。
export WHATAP_HOME=${PWD}

# 権限エラーが発生した場合は、次のコメントを削除してから進みます。
#chmod -R 777 $WHATAP_HOME

# 以下は、エージェントの構成に必須な設定値です。アプリケーションデプロイのyamlファイルを通じて設定します。
whatap-setting-config \
--host $whatap_server_host \
--license $license \
--app_name $app_name \
--app_process_name $app_process_name

# 次のコメントは、エージェントのグループ化やログ収集の活性化などの追加設定です。必要な場合に使用してください。

# エージェントのグループ化
#echo "whatap.okind=$whatap.okind" >> whatap.conf

# ログ収集の活性化
#echo "logsink_enabled=true" >> whatap.conf
#echo "logsink_trace_enabled=true" >> whatap.conf
#echo "trace_logging_enabled=true" >> whatap.conf


# 次のようにwhatap-start-agentをアプリケーション開始コマンドの前に追加して、エージェントを実行します。
whatap-start-agent uvicorn server:app --host 0.0.0.0 --port 8000
  1. コンテナの作業ディレクトリを環境変数WHATAP_HOMEに設定してください。そのパスにエージェントログと設定ファイルを作成します。

    export WHATAP_HOME=${PWD}
  2. WHATAP_HOMEに設定したパスにwhatap.confファイルを作成するため、次のコマンドを実行してください。$で表記された変数は、エージェント構成に必要な設定値です。アプリケーション配布のyamlファイルを通じて設定します。

    whatap-setting-config \
    --host $whatap_server_host \
    --license $license \
    --app_name $app_name \
    --app_process_name $app_process_name
  3. アプリケーション開始コマンドの前に、次のようにwhatap-start-agentを追加してエージェントを実行してください。

whatap-start-agent uvicorn server:app --host 0.0.0.0 --port 8000
注意

アクセス許可の問題が発生する場合、次のように$WHATAP_HOMEにアクセス許可を付与します。

echo `sudo chmod -R 777 $WHATAP_HOME`
ノート
  • yamlの作成例は、次のコンテナ環境変数の設定を参照にしてください。

  • ライセンス(license)は、WhaTapのユーザー認証情報です。外部に公開してはいけません

スクリプト実行の例

次のDockerfile定義の例を参照にしてください。entrypoint.shスクリプトを実行する例です。

FROM python:3.10
WORKDIR /app
ADD . /app/
RUN pip3 install --upgrade whatap-python

# entrypoint.shスクリプトをコンテナで実行する権限を付与します。
RUN chmod +x ./entrypoint.sh

# コンテナ作成時にentrypoint.sh スクリプトを実行します。
CMD ["./entrypoint.sh"]

追加設定

次の設定は、オプションとして必要な場合のみ使用してください。設定ファイル(entrypoint.sh)に次の追加設定の他にも、ログおよびトランザクション関連の設定が可能です。その他の追加設定に関しては、次の文書を参照にしてください。

  • エージェントグループ化

    echo "whatap.okind=$whatap.okind" >> whatap.conf
  • ログ収集の活性化

    echo "logsink_enabled=true" >> whatap.conf
    echo "logsink_trace_enabled=true" >> whatap.conf
    echo "trace_logging_enabled=true" >> whatap.conf

コンテナ環境変数の設定

Dockerビルド後、Kubernetes環境内のコンテナ環境変数を設定してください。アプリケーション配布のyamlファイルに次の内容を追加してください。

    env:
- name: license
value: XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX
- name: whatap_server_host
value: XXX.XXX.XXX.XXX
- name: app_name
value: {YOUR_APP_NAME}
- name: app_process_name
value: {YOUR_PROCESS_NAME}
- name: whatap.okind
value: {YOUR_GROUP_NAME}
- name: NODE_IP
valueFrom: {fieldRef: {fieldPath: status.hostIP}}
- name: NODE_NAME
valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
- name: POD_NAME
valueFrom: {fieldRef: {fieldPath: metadata.name}}

次の例を参照にしてください。

apiVersion: apps/v1
kind: Deployment
metadata:
name: python-fastapi-deployment
spec:
replicas: 3
selector:
matchLabels:
app: python-fastapi-pod
template:
metadata:
labels:
app: python-fastapi-pod
containers:
- name: agent-python-fastapi
image: whatap/agent-python-fastapi
env:
- name: license
value: XXXXXXXXXXXXXX-XXXXXXXXXXXXXX-XXXXXXXXXXXXXX
- name: whatap_server_host
value: XXX.XXX.XXX.XXX
- name: app_name
value: "myapp-python-fastapi"
- name: app_process_name
value: "uvicorn"
- name: NODE_IP
valueFrom: {fieldRef: {fieldPath: status.hostIP}}
- name: NODE_NAME
valueFrom: {fieldRef: {fieldPath: spec.nodeName}}
- name: POD_NAME
valueFrom: {fieldRef: {fieldPath: metadata.name}}
ノート

環境変数の役割

  • license:エージェント認証を確認するためのキーです。

  • whatap_server_host:WhaTap収集サーバーのホストIPです。

  • app_name:アプリケーションのエージェントを特定するための名前です。エージェント特定に対する詳細は、[次の文書]](https://docs.whatap.io/python/agent-name)を参考にしてください。

  • app_process_name:CPU、Heap Memoryなど収集する対象プロセスを設定します。例としてuwsgi、gunicornなどがあります。

  • whatap.okind(オプション):Podに該当するアプリケーションをグループ化します。デプロイメント(Deployment)名で設定すると、該当するPodを一つにグループ化します。

  • NODE_IP: 現在のPodがホストされているノード(Node)のIPアドレスを収集します。

  • NODE_NAME: 現在Podが実行中のノードの名前を収集します。

  • POD_NAME: 現在のPodの名前を収集します。

エージェントのインストール確認

  • エージェントが正常にインストールされたことを確認するには、ダッシュボード > アプリケーションサービスダッシュボードメニューに移動してください。

  • コンテナでps -ef | grep whatap_pythonコマンドを実行し、WhaTap Pythonサービスが正常に実行されているかを確認してください。