この章ではエージェント(Python)のインストール方法について説明します。
エージェント(Python)の対応環境
対応OS
エージェント(PHP)をインストールできるOSは次の通りです。
Linux配布版
MacOS
x86、x64のCPUアーキテクチャのみサポートします。
対応Pythonバージョン
CPython 2.x : 2.7以上
CPython 3.x : 3.3以上
対応フレームワーク
Flask 0.11以上
Django 1.5以上
fastapi 0.78.o以上
対応データベースドライバ
データベース名 | 対応ドライバ | 対応バージョン |
---|---|---|
MySQL / MariaDB | mysqlclient | 2.0.3以上 |
pymysql | 1.0.2以上 | |
sqlite3 | sqlite3 | - |
PostgreSQL | psycopg2 | 2.8以上 |
psycopg2-binary | 2.8以上 | |
Oracle | cx-Oracle | 8.0.0以上 |
mongoDB | pymongo | 3.10.1以上 |
redis | redis | 4.0.2以上 |
pyodbc | pyodbc | 4.0.39以上 |
エージェントのインストール
pipを利用してインストールする方法
1
pipを利用してjennifer-pythonをインストールします。
$ pip install jennifer-python
インターネットの接続制限などがあって上記のコマンドでインストールができない場合は、次のようにPythonパッケージとしてインストールすることができます。
# v2.x $ python -m pip install <download_path>/jennifer_python-5.6.x.x-py2-none-any.whl # v3.x $ python -m pip install <download_path>/jennifer_python-5.6.x.x-py3-none-any.whl
Python用エージェントパッケージは次のURLからダウンロード可能です。
https://pypi.org/project/jennifer-python/#files
2
confファイルを設定します。
①のコマンドを実行すると「jennifer-admin」ツールもインストールされます。これを実行してjennifer-pythonが使用する設定ファイルを生成します。
$ jennifer-admin generate-config
上記のコマンドを実行するとjennifer.iniファイルが生成されます。このファイルを開いて設定を行います。
項目 | 説明 | デフォルト値 |
---|---|---|
server_address | データサーバのIPアドレス | 127.0.0.1 |
server_port | データサーバのリスニングポート番号 | 5000 |
domain_id | ドメインID | 1000 |
inst_id | インスタンスID | -1 |
log_dir | ログファイルを保存するディレクトリのパス | /tmp |
インスタンスIDはデータサーバがエージェントを識別するためのuint16範囲の数字です。この値を-1に設定するとデータサーバが自動生成したIDを割り当てします。
ログファイル名は、agent_yyyyMMdd_<domain_id>_<inst_id>.logのフォーマットで生成されます。
ドメインIDやインスタンスIDの確定ができる前に出力されるログは、agent_yyyyMMdd.logファイルに吐き出します。
3
実行
生成した設定ファイルでJENNIFERを実行します。
$ JENNIFER_CONFIG_FILE=<設定ファイルパス> jennifer-admin run <python実行コマンド> $ JENNIFER_CONFIG_FILE=<設定ファイルパス> jennifer-admin runasync <python実行コマンド>
<python実行コマンド>は、既存pythonウェブアプリケーションサーバを実行するコマンド(例、python manage.py runserver, uwsgi -i uwsgi.iniなど)を意味します。
例えば、jennifer.iniファイルが/home/user/jenniferディレクトリに存在して、既存pythonの実行コマンドが“uwsgi -i uwsgi.ini”でしたら、次のように実行します。
$ JENNIFER_CONFIG_FILE=/home/user/jennifer/jennifer.ini jennifer-admin run uwsgi -i uwsgi.ini
もし、uvicornのような非同期のサービスである場合は"runasync"オプションを使用して、次のように実行します。
$ JENNIFER_CONFIG_FILE=/home/user/jennifer/jennifer.ini jennifer-admin runasync uvicorn --loop asyncio main:app
4
再起動後、<log_path>にログファイルjennifer-python-agent.logが生成されます。エージェントがデータサーバと接続できると、次のようなメッセージが出力されます。
2022/08/05 10:11:09 start agent > pid: 40289, ppid: 40288 2022/08/05 10:11:09 Agent Config: /Users/novalove/Works/pyapps/venv1/agent.python/jennifer.ini ---------------------- Data server host: 192.168.1.12 Data server port: 5000 Domain id: 1000 Instance id: 10000 2022/08/05 10:11:09 startUnixSocket: /var/folders/y6/_wy7csnx7wd1s3663y4s5fw00000gn/T/jennifer-1659661869.sock 2022/08/05 10:11:09 [Diag] startUnixSocket: listening... 2022/08/05 10:11:09 [Diag] [SessionRequest] ver = 5.6.0.15, server = 192.168.1.12, domain_id = 1000, inst_id = 10000, local_address = 192.168.1.11 2022/08/05 10:11:09 processing server message
pipを利用しないでインストールする方法
5.6.3.0以降からpipを利用せずにエージェントをインストールする方法を提供します。
この場合は、jennifer-adminコマンドの使用はできません。
1
pypiからWHLファイルをダウンロードし、圧縮を解凍します。
$ pwd /tmp $ unzip jennifer_python-5.6.3.0-py3-none-any.whl
圧縮を解凍すると/tmp/jenniferディレクトリが生成されます。
2
confファイルを設定します。
「jennifer-admin」ツールの使用ができないため、jennifer-pythonが使用する設定ファイルを手動で生成します。
$ pwd /home/user/jennifer$ vi jennifer.ini [JENNIFER] server_address = 127.0.0.1 server_port = 5000 domain_id = 1000 inst_id = -1 # log_dir = /tmp # service_dump_dir = /tmp
次のオプションの設定を適切に行います。
項目 | 説明 | デフォルト値 |
---|---|---|
server_address | データサーバのIPアドレス | 127.0.0.1 |
server_port | データサーバのリスニングポート番号 | 5000 |
domain_id | ドメインID | 1000 |
inst_id | インスタンスID | -1 |
log_dir | ログファイルを保存するディレクトリのパス | /tmp |
インスタンスIDはデータサーバがエージェントを識別するためのuint16範囲の数字です。この値を-1に設定するとデータサーバが自動生成したIDを割り当てします。
ログファイル名は、agent_yyyyMMdd_<domain_id>_<inst_id>.logのフォーマットで生成されます。
ドメインIDやインスタンスIDの確定ができる前に出力されるログは、agent_yyyyMMdd.logファイルに吐き出します。
3
環境変数を追加します。
圧縮を解凍したパスをPYTHONPATH環境変数に、jennifer.iniファイルをJENNIFER_CONFIG_FILE環境変数に追加します。
$ export PYTHONPATH=/tmp/jennifer/admin $ export JENNIFER_CONFIG_FILE=/home/user/jennifer/jennifer.ini
4
実行
次のようにwsgi/asgi アプリケーションを実行するとJENNIFERエージェントが適用されます。
同期(wsgi)アプリケーションの場合
$ uwsgi -i uwsgi.ini
非同期(asgi) アプリケーションの場合
$ export JENNIFER_IS_ASYNC=true $ uvicorn --loop asyncio main:app
Azure Web Appにインストールする方法
1
pipを利用してjennifer-pythonをインストールします。
Azure ポータルにアクセスして [開発ツール] > [SSH] で SSH セッション画面にて、pip installコマンドでインストールします。
Web Appの場合、オートスケールや再起動時に、「/home」ディレクトリを除いて初期化されるので、必ず「/home」ディレクトリにJENNIFERエージェントをインストールする必要があります。
$ pip install jennifer-python -t /home/jennifer
既存バージョンをアップグレードする場合は、ディレクトリを変更してインストールします。既存ディレクトリはWeb Appの再起動後に削除できます。
$ pip install jennifer-python -t /home/jennifer2
2
confファイルを設定します。
Web App環境の場合、必ず、「/home」ディレクトリのサブディレクトリINIファイル作成する必要があります。
$ pwd /home/jennifer$ vi jennifer.ini [JENNIFER] server_address = 127.0.0.1 server_port = 5000 domain_id = 1000 inst_id = -1 # log_dir = /tmp # service_dump_dir = /tmp
3
環境変数を追加します。
「Settings(設定) > Environment variables(環境変数)」画面にてINIファイルのパスを追加します。
[App settings] NAME: JENNIFER_CONFIG_FILE VALUE: /home/jennifer_conf.ini
次に、「Settings(設定) > Configuration(構成)」のスタートアップ コマンドに設定されている既存のコマンドに加え、jenniferの起動コマンドを追加します。
例えば、現在のスタートアップ コマンド値が「python -m uvicorn main:app --host 0.0.0.0.0」と設定されている場合、次のように追加します。
[General settings] Startup Command: python /home/jennifer/jennifer/admin/__init__.py run python -m uvicorn main:app --host 0.0.0.0
注意事項
一部Webアプリケーションサーバの場合、jennifer-pythonの適切なデータ収集のために次のオプションの追加が必要です。
アプリケーションサーバ | オプション |
---|---|
uwsgi | –enable-threads |
エージェントのアンインストール
1
pipでインストールする環境
次のコマンドを実行してJENNIFERパッケージを削除し、Pythonウェブサーバを再起動します。
$ pip uninstall jennifer-python
2
Azure Web App環境のアンインストール
スタートアップ コマンドを元のコマンドに変更します。その後、Web Appを再起動すると既存のpip installの -t オプションで指定したディレクトリが削除されます。