containerized private minion (CPM) を設定する方法については、こちらをご覧ください。
CPMをカスタマイズするには以下の方法があります。
お客様はCPMファイルを変更することはできず、お客様が行った変更についてニューレリックは責任を負いません。
ボリュームのマウントに関するガイドライン
すべてのディレクトリとファイルには、読み取り/書き込み権限を持つ3729
としてグループ所有権を割り当てる必要があります。これにより、 uid: 1000
とgid: 3729
を使用するランナーがマウントされたすべてのボリュームにアクセスできるようになります。ただし、ミニオンはルート( uid: 0
)として、または[2000, 4000]
の範囲内の任意のuid
で実行できます。詳細については、KubernetesまたはDocker で非ルートとして実行するをご覧ください。
Docker
- ディレクトリは、内で
-v
引数を指定することにより、ボリュームとしてコンテナにマウントされます。docker run
- 例えば、
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モジュールの任意のセットを提供し、それらを合成モニターのスクリプトモニターで使用できるようにすることができます。
モジュールをセットアップするには
npmの公式ガイドラインに従って、ディレクトリのルートに
package.json
を含むディレクトリを作成します。dependencies
フィールドに含まれるものはすべて、開始時にCPMによってインストールされ、そのプライベートミニオンでモニターを実行するときに使用できるようになります。必要に応じて、ルート レベル
package.json
を Node.js バージョン固有のディレクトリでオーバーライドできます。これにより、ランタイムのNode.js バージョンが依存関係と互換性がなくなった場合に、モニター ランタイムごとにスクリプトを更新できます。以下の例を参照してください。カスタムモジュールディレクトリと
package.json
を作成したら、DockerとKubernetesのCPMに適用できます。"... Initialization of Custom Modules ..."
のCPMログを調べて、モジュールが正しくインストールされているかどうか、またはエラーが発生していないかどうかを確認します。 npmインストールログが表示されます。
これで、このプライベートな場所に送信するモニターのスクリプトに"require('async');"
を追加できます。
カスタムモジュールのpackage.json
を変更
npmモジュールに加えて、 Node.jsモジュールを使用することもできます。 CPMで使用されるカスタムモジュールを変更するには、 package.json
を変更してCPMを再起動します。再起動中に構成の変更を検出し、クリーンアップして再インストールします。
注意
ローカルモジュール: package.json
には任意のローカルモジュールを含めることができますが、これらのモジュールは、カスタムモジュールディレクトリの下のツリー内に存在する必要があります。ツリーの外部に保存されている場合、初期化プロセスは失敗し、CPMの起動後にDockerログにエラーメッセージが表示されます。
データの永久保存
CPMはステートレスアプリケーションであり、デフォルトでは以前のリクエストまたはセッションからの情報を保持しません。ただし、永続的なデータストレージを有効にすることで、起動間でデータを保持できます。たとえば、ミニオンがそれ自体を識別する方法(たとえば、 Minion_ID
)を永続的に設定し、それを使用して、そのデータを、それを生成した正確なミニオンに関連付けることができます。
Dockerに恒久的なデータ保存を設定するには
ディレクトリを作成します。
CPMを起動し、ディレクトリを
/var/lib/newrelic/synthetics
にマウントします。例:
docker run ... -v /example-permanent-dir:/var/lib/newrelic/synthetics:rw ...
Kubernetesに恒久的なデータストレージを設定すること。
CPMを起動し、インストール中にコマンドラインまたはYAMLファイルのいずれかで
persistence.permanentData
構成値の値を設定します。この値は、データを保存するMinionの永続ボリュームのサブパスを指定する必要があります。例:
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の構成を微調整することができます。