イメージ再ビルドを通じて適用する方法
注記
▣ Docker Container でサービスされる Applicaiton の場合、次のインストール手順を実行します。
▣ EXEM-PYTHON-AGENT-1.1.2.tar.gz パッケージから、パッケージ内の exem/python/cfg/tmp フォルダ 配下にサンプル docker file、deploy yaml ファイルを提供します。
▣ exem-python-agent v3.0.18.1 ~ から適用可能です。(以前のバージョンの場合 (~v3.0.18) イメージ再ビルドを通じて適用する方法のドキュメントを参照)
▶ Dockerfile 設定
- ◈ exem-python-agent をインストールするためには既存使用中の dockerfile に次の内容の追加が必要です。
Dockerfile ファイル全体例
- 既存顧客の Dockerfile にハイライトされた部分を追加すればよいです。
| #FROM python:3.10 ... (기존 고객사의 파이썬 dockerfile 내용 생략) ... #exem-python-agent を 顧客が インストールする経路のフォルダがない場合は mkdir で作成が必要 RUN mkdir -p [고객이 설치할 절대경로]COPY EXEM-PYTHON-AGENT-3.0.1.tar.gz [고객이 설치할 절대경로]RUN tar -zxvf [고객이 설치할 절대경로]/EXEM-PYTHON-AGENT-3.0.1.tar.gz -C [고객이 설치할 절대경로]RUN pip install [고객이 설치할 절대경로]/exem/python/lib/exem-python-agent-3.0.1.tar.gz# ENTRYPOINT を設定する詳しい方法は下記の ❻ entrypoint 追加 を参照 ENTRYPOINT [" start_agent",“[고객의 기존 python 어플리케이션 실행 명령어]”] |
|---|
[고객이 설치할 절대경로]を/home/exemoneに設定した例です。
| #FROM python:3.10 ... (기존 고객사의 파이썬 dockerfile 내용 생략) ... #exem-python-agent を 顧客が インストールする経路のフォルダがない場合は mkdir で作成が必要 RUN mkdir -p /home/exemoneCOPY EXEM-PYTHON-AGENT-3.0.1.tar.gz /home/exemoneRUN tar -zxvf /home/exemone/EXEM-PYTHON-AGENT-3.0.1.tar.gz -C /home/exemoneRUN pip install /home/exemone/exem/python/lib/exem-python-agent-3.0.1.tar.gzENTRYPOINT [" start_agent",“[고객의 기존 python 어플리케이션 실행 명령어]”] |
|---|
❶ exem-python-agent をインストールするフォルダ作成
- 下記の例は
/home/exemoneフォルダを作成する例です。顧客がインストールしたい経路にフォルダがある場合は不要です。
예시) RUN mkdir -p /home/exemone
❷ インストールする EXEM-PYTHON-AGENT-X.X.X.tar.gz パッケージのコピー
- 下記の形式で作成します。
- COPY [EXEM-PYTHON-AGENT-X.X.X.tar.gz パッケージ]
[고객이 설치할 절대경로] [고객이 설치할 절대경로]に EXEM-PYTHON-AGENT-X.X.X.tar.gz パッケージがコピーされます。
예시) EXEM-PYTHON-AGENT-3.0.1.tar.gz를 /home/exemone에 복사하는 예시
COPY EXEM-PYTHON-AGENT-3.0.1.tar.gz /home/exemone
❸ インストールする EXEM-PYTHON-AGENT-X.X.X.tar.gz パッケージの解凍
- パッケージのフォルダ及びファイル構造は 1. 紹介 ドキュメントを参照します。
- tar -zxvf
[고객이 설치할 절대경로]/EXEM-PYTHON-AGENT-3.0.1.tar.gz -C[고객이 설치할 절대경로] - tar の -C オプションを使用して、希望する経路に EXEM-PYTHON-AGENT-X.X.X.tar.gz パッケージを解凍します。
예시) RUN tar -zxvf /home/exemone/EXEM-PYTHON-AGENT-3.0.1.tar.gz -C /home/exemone
❹ pip install で exem-python-agent モジュールインストール
- モジュールは
exem/python/libディレクトリに配置されています。
- モジュールファイル名は
exem-python-agent-x.x.x.tar.gzです。 - pip install を利用してモジュールをインストールします。
예시) RUN pip install /home/exemone/exem/python/lib/exem-python-agent-3.0.1.tar.gz
❺ [必要な場合のみ追加] コールツリー追加が必要な場合、local.advice.ini ファイル設定が必要
- 動的適用不可設定
- Dockefile ではなく yaml の ConfigMap を修正する方式も可能であり、
下記の ❷
[必要な場合のみ追加]コールツリー追加が必要な場合、exem-python-agent-config ConfigMap 設定の修正が必要 を参照すればよいです。
예시) RUN printf '[redis]\nStrictRedis:*\n' > /home/exemone/exem/python/cfg/agent/local.advice.ini
❻ entrypoint 追加
- モジュールインストール時に
start_agentという実行コマンドが Python のパスに追加されます。
start_agentを利用して顧客の python アプリケーションを適用します。- 上記 ❹ pip install で exem-python-agent モジュールをインストールすると start_agent コマンドを使用できます。(start_agent コマンドは fastapi 起動に必要な uvicorn や .py を実行するための python コマンドと同じ機能を果たします。)
- ENTRYPOINT ["
start_agent", "[기존 고객의 python application 실행 명령어]"]
- ENTRYPOINT ["
예시) ENTRYPOINT ["start_agent","uvicorn", "--app-dir", "/sample/xmit-python/xmit_fastapi", "app:app", "--host", "0.0.0.0"]
- ENTRYPOINT で
start_agentを設定するとexem-python-agent が適用され、顧客企業の既存 python application が実行されます。つまり、顧客企業の python application のモニタリングが可能になります。
◈ 設定参考事項
- 既存顧客の python アプリケーション実行コマンドは次のような類型すべてで可能です。
예시 1) [프레임워크 명령어 사용 방식] uvicorn --app-dir /sample/xmit-python/xmit_fastapi app:app
예시 2) [python 실행 명령어로 Python 스크립트 실행하는 방식] python /sample/kafka_confluent/consumer_confluent.py
예시 3) [고객의 파이썬 실행 스크립트 사용하는 방식] /sample/start_fastapi.sh"
예시 4) [고객의 파이썬 실행 스크립트 사용하는 방식(스크립트의 파라미터로 전달하는 경우)]/sample/start_fastapi.sh arg1 arg2
▶ yaml 設定
危険
- ◈ deploy yaml に exem-python-agent をインストールするための設定値の追加が必要です。
◈ CURR_TRACE_TXN オプションのデフォルト値が *:3000 に設定されているため、3秒未満のトランザクションは収集されません。
すべてのトランザクションを確認したい場合は、CURR_TRACE_TXN オプションを *:0 に設定する必要があります。
yaml ファイル全体例
- 既存顧客の yaml にハイライトされた部分を追加すればよいです。
- 緑色の太字はコメントです。
apiVersion: v1
kind: ConfigMap
metadata:
name: exem-python-agent-config
namespace: exemone-python
data:
local.advice: |
### 作成形式
# [パッケージ名]
# クラス名:メソッド名
### 作成方法
# 追加でウィービングするメソッドを設定
# クラスメソッドではなく単純関数を設定する場合、クラス名の代わりに NONE と記述
# * を使用して該当クラスまたはモジュールのすべてのメソッドをウィービング可能
### 作成例
# [redis]
# * : *
# [mysql]
# PyMySQL : *
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-k8s-fastapi
labels:
app: python-k8s-fastapi
namespace: exemone-python
spec:
replicas: 1
selector:
matchLabels:
app: python-k8s-fastapi
template:
metadata:
labels:
app: python-k8s-fastapi
spec:
volumes:
- name: exem-python-agent-config
configMap:
name: exem-python-agent-config
containers:
- name: python-k8s-fastapi
image: exem/exem-python-agent:fastapi_3.10 // exem-python-agent のインストールを追加した後に再ビルドしたイメージ
imagePullPolicy: Always
volumeMounts:
- name: exem-python-agent-config
mountPath: [고객이 설치할 절대경로]/exem/python/cfg/agent/local.advice
subPath: local.advice
readOnly: true
env:
- name: EXEM_PYTHON_HOME
value: "[고객이 설치할 절대경로]/exem/python"
- name: EXEM_PYTHON_HOME
value: "/exem/python"
- name: EXEM_GROUP_ID
value: "python"
- name: EXEM_RUN_ON_CONTAINER
value: "true"
- name: EXEMWID
valueFrom:
fieldRef:
fieldPath: metadata.uid
- name: EXEM_PYTHON_AGENT_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: EXEM_RECEIVER_ADDR
value: "10.20.30.40:9010"
ports:
- containerPort: 8000
❶ [exem-python-agent] 適用に必要な env(環境変数) の追加
- exem-python-agent 起動に必ず必要な7個の環境変数を
env(環境変数)として deploy yaml に追加する必要があります。- 環境変数 設定
| 環境変数名 | 説明 | 例 |
|---|---|---|
| EXEM_PYTHON_HOME | exem-python-agent の HOME パス | /EXEM-PYTHON-AGENT-X.X.X.tar.gz パッケージ解凍経路/exem/python |
| EXEM_PYTHON_AGENT_NAME | WAS Name | python-k8s-fastapi または metadata.nameで pod 名を使用 |
| EXEM_GROUP_ID | WAS Group ID | python_fastapi |
| EXEM_RECEIVER_ADDR | exem-python-agent と接続する receiver の ip:portip:port 形式で入力 | 10.20.30.40:9009 |
| EXEM_RUN_ON_CONTAINER | コンテナ環境で動作するかどうかの設定 このオプションを true に設定してはじめて、下記の コンテナ連携のための env 設定 が適用され、コンテナと接続可能 | true |
| EXEMWID | コンテナ連携のための KEY EXEM_RUN_ON_CONTAINER=true に設定してはじめて | |
| v3.0.19+ Deprecated | LOG_PATH=console に代替 POD 画面出力 = 1に設定 ログファイルとして生成 = 2に設定 |
- env(環境変数) 例
env:
- name: EXEM_PYTHON_HOME
value: "[고객이 설치할 절대경로]/exem/python"
- name: EXEM_PYTHON_AGENT_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: EXEM_GROUP_ID
value: "python_fastapi"
- name: EXEM_RECEIVER_ADDR
value: "10.20.30.40:9009"
- name: EXEM_RUN_ON_CONTAINER
value: "true"
- name: EXEMWID
valueFrom:
fieldRef:
fieldPath: metadata.uid
❷ [必要な場合のみ修正] コールツリー追加が必要な場合、exem-python-agent-config ConfigMap 設定の修正が必要
- 動的適用不可設定
- ConfigMap ではなく Dockerfile を修正する方式も可能であり、
上記の ❺
[必要な場合のみ追加]コールツリー追加が必要な場合、local.advice ファイル設定が必要 を参照すればよいです。 - yaml ファイル全体例の緑色の太字 local.advice 部分のコメントを参考に修正すればよいです。
- exem-python-agent-config ConfigMap 例
apiVersion: v1
kind: ConfigMap
metadata:
name: exem-python-agent-config
namespace: exemone-python
data:
local.advice: |
### 作成形式
# [パッケージ名]
# クラス名:メソッド名
### 作成方法
# 追加でウィービングするメソッドを設定
# クラスメソッドではなく単純関数を設定する場合、クラス名の代わりに NONE と記述
# * を使用して該当クラスまたはモジュールのすべてのメソッドをウィービング可能
### 作成例
# [redis]
# * : *
# [mysql]
# PyMySQL : *