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の定義例を参照にしてください。
# 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)の例
#!/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
-
コンテナの作業ディレクトリを環境変数
WHATAP_HOME
に設定してください。そのパスにエージェントログと設定ファイルを作成します。export WHATAP_HOME=${PWD}
-
WHATAP_HOME
に設定したパスにwhatap.confファイルを作成するため、次のコマンドを実行してください。$
で表記された変数は、エージェント構成に必要な設定値です。アプリケーション配布のyamlファイルを通じて設定します。whatap-setting-config \
--host $whatap_server_host \
--license $license \
--app_name $app_name \
--app_process_name $app_process_name -
アプリケーション開始コマンドの前に、次のように
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サービスが正常に実行されているかを確認してください。