containerized private minion (CPM) を設定する方法については、こちらをご覧ください。
CPMをカスタマイズするには以下の方法があります。
お客様はCPMファイルを変更することはできず、お客様が行った変更についてニューレリックは責任を負いません。
ボリュームのマウントに関するガイドライン
すべてのディレクトリとファイルには、読み取り/書き込み権限を持つ3729
としてグループ所有権を割り当てる必要があります。これにより、 uid: 1000
およびgid: 3729
を使用するランナーが、マウントされているすべてのボリュームにアクセスできるようになります。ただし、Minionはroot( uid: 0
)として、または[2000, 4000]
の範囲の任意のuid
で実行できます。詳細については、KubernetesまたはDocker で非ルートとして実行するをご覧ください。
Docker
- ディレクトリをボリュームとしてコンテナにマウントするには、
docker run の中で -v という引数を指定します。
- 例えば、
docker run ... -v /path/to/src:/path/to/dest:rw です。
Kubernetes
kubectl cp
を使って、パーシステントボリューム(PV)にディレクトリを追加することができます。しかし、ファイルのパーミッションが適切に設定されている限り、別の方法もサポートされています。- 例えば、
kubectl cp /path/to/src<POD_NAME>:/path/to/dest
とすると、指定したポッドの各PVにディレクトリが追加されます。 - 各PVには、ディレクトリのコピーが個別に存在する必要があります。例えば、 n Minion のレプリカを持つクラスターでは、 n PV が必要で、それぞれがディレクトリのコピーを持つ必要があります。
- これらのディレクトリとファイルは、Minionが起動する前に追加する必要があります。そうしないと、アップデートを検出するためにMinionを再起動する必要があります。
カスタムnpmモジュール
カスタム npm モジュールは、CPM 専用です。これにより、 npmモジュール の任意のセットを提供し、Syntheticsのスクリプトによるモニターに利用できるようになります。
モジュールをセットアップするには
package.json
を含むディレクトリを作成します。そのディレクトリのルートには、 npm official guidelines に従ったものがあります。dependencies
フィールドに含まれるものは、起動時にCPMによってインストールされ、そのプライベートミニオンでモニタを実行するときに利用できるようになります。オプションとして、ルートレベルの
package.json
をNodeバージョン別のディレクトリで上書きすることができます。これにより、 Nodeバージョンのランタイム が依存関係と互換性がなくなった場合に、モニターランタイムごとにスクリプトを更新することができます。以下にその例を示します。カスタムモジュールのディレクトリと、
package.json
を作成したら、DockerとKubernetes用のCPMに適用できます。CPMログ for
" ... を見てください。Initialization of Custom Modules ..."
のCPMログを見て、モジュールが正しくインストールされているか、エラーがないかを確認してください。npm のインストールログが表示されます。
これで、 " require('async');"
を、このプライベートな場所に送信するモニターの スクリプト に追加することができます。
Change package.json
for custom modules
npm モジュールの他に、 Node.js モジュール を使用することもできます。CPMが使用するカスタムモジュールを変更するには、 package.json
を変更し、CPMを再起動します。再起動中に構成の変更が検出され、クリーンアップされて再インストールされます。
注意
ローカルモジュール。 package.json
には、任意のローカルモジュールを含めることができますが、これらのモジュールは、カスタムモジュールディレクトリの下のツリー内に存在する必要があります。ツリーの外に格納されていると、初期化プロセスが失敗し、CPM起動後に docker logs にエラーメッセージが表示されます。
データの永久保存
CPMはステートレスアプリケーションであり、デフォルトでは以前のリクエストやセッションからの情報は保存されません。ただし、永続的なデータ保存を有効にすることで、起動間のデータを保存することができます。たとえば、ミニオンが自身を識別する方法を恒久的に設定し (たとえば、 Minion_ID
)、それを使用して、そのデータを生成した正確なミニオンと関連付けることができます。
Dockerに恒久的なデータ保存を設定するには
ディレクトリを作成します。
CPMを起動し、
/var/lib/newrelic/synthetics
のディレクトリをマウントする。例:
docker run ... -v /example-permanent-dir:/var/lib/newrelic/synthetics:rw ...
Kubernetesに恒久的なデータストレージを設定すること。
CPMを起動し、
persistence.permanentData
構成値をコマンドラインまたはインストール時にYAMLファイルで設定します。この値には、データを保存するMinionのPersistent Volume上のサブパスを指定する必要があります。例:
helm install ... --set persistence.permanentData=<permanent-data-subpath> ...
スクリプトによるモニターのためのユーザー定義の環境変数
コンテナ化されたプライベートミニオンでは、スクリプト化されたモニタで使用するための環境変数を設定することができます。これらの変数は、CPM上でローカルにホストされ、 $env.USER_DEFINED_VARIABLES
からアクセスできます。ユーザー定義変数を設定するには、JSONファイルをマウントする方法と、起動時にCPM に環境変数を指定する方法の2つがあります。両方が提供された場合、CPMは環境から提供された値のみを使用する。
スクリプトからユーザー定義の環境変数にアクセスする
設定されたユーザー定義の環境変数を参照するには、予約済みの $env.USER_DEFINED_VARIABLES
の後に、ドット記法で指定した変数名を続けます。
例えば、 $env.USER_DEFINED_VARIABLES.MY_VARIABLE です。
注意
ユーザー定義の環境変数はログからサニタイズされません。機密情報については、 セキュアな認証情報 機能の使用を検討してください。
環境変数
環境変数により、お客様の環境や機能のニーズに合わせてCPMの構成を微調整することができます。