このドキュメントでは、次の方法を示して、外形監視ジョブ マネージャー の構成について説明します。
環境変数を使用した設定 環境変数を使用すると、合成ジョブ マネージャーの構成を微調整して、特定の環境および機能のニーズを満たすことができます。
Dockerの環境設定 変数は、起動時に-e, --env
引数を使用して提供されます。
次の表は、synthetics ジョブ マネージャーがサポートするすべての環境変数を示しています。PRIVATE_LOCATION_KEY
は必須で、その他の変数はすべてオプションです。
名前
説明
PRIVATE_LOCATION_KEY
Required. プライベートロケーション エンティティ リストにあるプライベートロケーション キー。
DOCKER_API_VERSION
形式: "vX.Y"
指定されたDockerサービスで使用されるAPIバージョン。
デフォルト: v1.35.
DOCKER_HOST
合成ジョブ マネージャーを特定のDOCKER_HOST
にポイントします。存在しない場合、デフォルト値は /var/run/docker.sock.
HORDE_API_ENDPOINT
米国ベースのアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.nr-data.net.
EUベース のアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.eu01.nr-data.net/
モニターにサービスを提供するために、合成ジョブ マネージャーが適切なエンドポイントに接続できることを確認します。
DOCKER_REGISTRY
ランタイム イメージがホストされる Docker レジストリ ドメイン。これを使用して、 docker.io
をデフォルトとしてオーバーライドします。
DOCKER_REPOSITORY
ランタイム イメージがホストされている Docker リポジトリまたは組織。これを使用して、 newrelic
デフォルトとして上書きします。
HORDE_API_PROXY_HOST
Horde 通信に使用されるプロキシ サーバー ホスト。形式: "localhost"
。
HORDE_API_PROXY_PORT
Horde 通信に使用されるプロキシ サーバー ポート。形式: 8888
。
HORDE_API_PROXY_USERNAME
Horde 通信に使用されるプロキシ サーバーのユーザー名。形式: "username"
。
HORDE_API_PROXY_PW
Horde 通信に使用されるプロキシ サーバーのパスワード。形式: "password"
。
HORDE_API_PROXY_ACCEPT_SELF_SIGNED_CERT
Horde 通信に使用されるプロキシ サーバー接続の自己署名プロキシ証明書を受け入れますか?許容値: true
CHECK_TIMEOUT
モニター チェックの実行が許可される最大秒数。この値は、0 秒 (除く) から 900 秒 (含む) までの整数である必要があります (たとえば、1 秒から 15 分まで)。
デフォルト: 180 秒
LOG_LEVEL
デフォルト: INFO.
追加オプション: WARN
、 ERROR
、 DEBUG
HEAVYWEIGHT_WORKERS
一度に実行できる同時重量ジョブ ( browser /スクリプト化されたbrowserおよびスクリプト化された API) の数。
デフォルト: 使用可能な CPU - 1。
DESIRED_RUNTIMES
特定のランタイム イメージを実行するために使用される配列。 形式: ['newrelic/外形監視-ping-runtime:latest','newrelic/外形監視-node- API -runtime:latest','newrelic/外形監視-node-browser-runtime:latest']
デフォルト: すべての最新のランタイム。
VSE_PASSPHRASE
設定すると、 verified script execution が有効になり、この値がpassphrase として使用されます。
USER_DEFINED_VARIABLES
ユーザーが定義したキーバリューペアのセットをローカルにホストすること。
ENABLE_WASM
設定されている場合、ノードbrowserランタイムの Web アセンブリが有効になります。 WebAssembly を使用するには、外形監視ジョブ マネージャーの最小バージョンが release-367 以上であり、ノードbrowserランタイム バージョンが 2.3.21 以上である必要があります。
Podman環境設定 変数は、起動時に-e, --env
引数を使用して提供されます。
次の表には、外形監視ジョブ マネージャーがサポートするすべての環境変数が表示されます。 PRIVATE_LOCATION_KEY
は必須ですが、その他の変数はオプションです。Podman 環境で外形監視ジョブ マネージャーを実行するには、最小バージョンがリリース 418 以上である必要があります。
名前
説明
PRIVATE_LOCATION_KEY
Required. プライベートロケーション エンティティ リストにあるプライベートロケーション キー。
HORDE_API_ENDPOINT
米国ベースのアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.nr-data.net.
EUベース のアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.eu01.nr-data.net/
モニターにサービスを提供するために、合成ジョブ マネージャーが適切なエンドポイントに接続できることを確認します。
PODMAN_API_SERVICE_HOST
SJM が実行される場所に作成されたポッドに追加されたホスト エントリ。これを使用して、 podman.service
デフォルトとして上書きします。
PODMAN_API_SERVICE_PORT
インスタンス内で Podman LibPod RESTful API サービスが実行されているポート。これを使用して、 8000
デフォルトとして上書きします。
PODMAN_API_VERSION
使用されている Podman LibPod RESTful API の特定のバージョン。これを使用して、 v5.0.0
デフォルトとして上書きします。
PODMAN_POD_NAME
SJM コンテナが実行されるポッドの名前。これを使用して、 SYNTHETICS
デフォルトとして上書きします。
DOCKER_REGISTRY
ランタイム イメージがホストされる Docker レジストリ ドメイン。これを使用して、 docker.io
をデフォルトとしてオーバーライドします。
DOCKER_REPOSITORY
ランタイム イメージがホストされている Docker リポジトリまたは組織。これを使用して、 newrelic
デフォルトとして上書きします。
HORDE_API_PROXY_HOST
Horde 通信に使用されるプロキシ サーバー ホスト。形式: "localhost"
。
HORDE_API_PROXY_PORT
Horde 通信に使用されるプロキシ サーバー ポート。形式: 8888
。
HORDE_API_PROXY_USERNAME
Horde 通信に使用されるプロキシ サーバーのユーザー名。形式: "username"
。
HORDE_API_PROXY_PW
Horde 通信に使用されるプロキシ サーバーのパスワード。形式: "password"
。
HORDE_API_PROXY_ACCEPT_SELF_SIGNED_CERT
Horde 通信に使用されるプロキシ サーバー接続の自己署名プロキシ証明書を受け入れますか?許容値: true
CHECK_TIMEOUT
モニター チェックの実行が許可される最大秒数。この値は、0 秒 (除く) から 900 秒 (含む) までの整数である必要があります (たとえば、1 秒から 15 分まで)。
デフォルト: 180 秒
LOG_LEVEL
デフォルト: INFO.
追加オプション: WARN
、 ERROR
、 DEBUG
HEAVYWEIGHT_WORKERS
一度に実行できる同時重量ジョブ ( browser /スクリプト化されたbrowserおよびスクリプト化された API) の数。
デフォルト: 使用可能な CPU - 1。
DESIRED_RUNTIMES
特定のランタイム イメージを実行するために使用される配列。 形式: ['newrelic/外形監視-ping-runtime:latest','newrelic/外形監視-node- API -runtime:latest','newrelic/外形監視-node-browser-runtime:latest']
デフォルト: すべての最新のランタイム。
VSE_PASSPHRASE
設定すると、 verified script execution が有効になり、この値がpassphrase として使用されます。
USER_DEFINED_VARIABLES
ユーザーが定義したキーバリューペアのセットをローカルにホストすること。
ENABLE_WASM
設定されている場合、ノードbrowserランタイムの Web アセンブリが有効になります。 WebAssembly を使用するには、外形監視ジョブ マネージャーの最小バージョンが release-367 以上であり、ノードbrowserランタイム バージョンが 2.3.21 以上である必要があります。
Kubernetesの環境設定 変数は、起動時に--set
引数を使用して提供されます。
次のリストは、synthetics ジョブ マネージャーがサポートするすべての環境変数を示しています。synthetics.privateLocationKey
は必須で、その他の変数はすべてオプションです。
多数の追加の高度な設定が利用可能であり、Helm チャートの README に完全に記載されています。
名前
説明
synthetics.privateLocationKey
Required if synthetics.privateLocationKeySecretName
is not set .プライベートロケーション Web ページにあるプライベートロケーションのキー 。
synthetics.privateLocationKeySecretName
Required if synthetics.privateLocationKey
is not set 。キーprivateLocationKey
を含む Kubernetes シークレットの名前。これには、外形監視プライベートロケーションに関連付けられた認証キーが含まれます。
imagePullSecrets
指定されたコンテナレジストリからイメージを引き出すために使用されるシークレットオブジェクトの名前です。
fullnameOverride
デフォルトを置き換えて、デプロイメントに使用される名前のオーバーライド。
appVersionOverride
chart.yml で指定されたバージョンの代わりに使用する、synthetics-job-manager のリリース バージョン。
synthetics.logLevel
デフォルト: INFO.
追加オプション: WARN
、 ERROR
synthetics.hordeApiEndpoint
米国ベースのアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.nr-data.net.
EUベース のアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.eu01.nr-data.net/
モニターにサービスを提供するために、合成ジョブ マネージャーが適切なエンドポイントに接続できることを確認します。
synthetics.minionDockerRunnerRegistryEndpoint
MinionRunnerイメージがホストされているDockerレジストリと組織。これを使用して、デフォルトとしてquay.io/newrelic
をオーバーライドします(たとえば、 docker.io/newrelic
)
synthetics.vsePassphrase
設定すると、 verified script execution が有効になり、この値がpassphrase として使用されます。
synthetics.vsePassphraseSecretName
設定すると、検証済みスクリプトの実行が有効になり、この値を使用して、 vsePassphrase
というキーを持つ Kubernetes シークレットからパスフレーズを取得します。
synthetics.enableWasm
設定されている場合、ノードbrowserランタイムの Web アセンブリが有効になります。 WebAssembly を使用するには、外形監視ジョブ マネージャーの最小バージョンが release-367 以上であり、ノードbrowserランタイム バージョンが 2.3.21 以上である必要があります。
synthetics.apiProxyHost
Horde 通信に使用されるプロキシ サーバー。形式: "host"
。
synthetics.apiProxyPort
Horde 通信に使用されるプロキシ サーバー ポート。形式: port
。
synthetics.hordeApiProxySelfSignedCert
Horde 通信にプロキシ サーバーを使用する場合は、自己署名証明書を受け入れます。許容値: true
。
synthetics.hordeApiProxyUsername
Horde 通信用のプロキシ サーバーのユーザー名。フォーマット: "username"
synthetics.hordeApiProxyPw
Horde 通信用のプロキシ サーバーのパスワード。形式: "password"
。
synthetics.userDefinedVariables.userDefinedJson
ユーザー定義変数の JSON 文字列。 ユーザーはスクリプト内でこれらの変数にアクセスできます。 形式: '{"key":"value","key2":"value2"}'
。
synthetics.userDefinedVariables.userDefinedFile
ユーザー定義変数を含む JSON ファイルへの、ユーザーにとってローカルなパス。 これは--set-file
経由で渡され、値ファイルで設定することはできません。
synthetics.userDefinedVariables.userDefinedPath
user_define_variables.json 파일에 대한 사용자가 제공한 PertantVolume의 경로입니다.この変数が設定されている場合、ユーザーは Persistent Volume または Persistent VolumeClaim を指定する必要があります。
synthetics.persistence.existingClaimName
ボリュームをマウントする場合、ユーザーはクラスター内に既に存在する PersistentVolumeClaim の名前を指定できます。 対応する PersistentVolume が存在することを前提とします。
synthetics.persistence.existingVolumeName
ボリュームをマウントし、PersistentVolumeClaim を指定しない場合、ユーザーは少なくとも Persistent Volume 名を指定する必要があります。 Helm は PersistentVolumeClaim を生成します。
synthetics.persistence.storageClass
生成された PersistentVolumeClaim の StorageClass の名前。 これは、既存の PV の StorageClassName と一致する必要があります。 プロバイダーでない場合、Kubernetes はデフォルトのストレージ クラスが存在する場合はそれを使用します。
synthetics.persistence.size
生成された PersistentVolumeClaim のボリュームのサイズ。 フォーマット: 10Gi
。 デフォルトは2Giです。
global.checkTimeout
モニター チェックの実行が許可される最大秒数。この値は、0 秒 (除く) から 900 秒 (含む) までの整数である必要があります (たとえば、1 秒から 15 分まで)。
デフォルト: 180 秒
image.repository
引くための容器です。
デフォルト: docker.io/newrelic/synthetics-job-runner
image.pullPolicy
引きの方針です。
デフォルト: IfNotPresent
podSecurityContext
Synthetics-job-manager ポッドのカスタム セキュリティ コンテキストを設定します。
ping-runtime.enabled
永続的な ping ランタイムをデプロイする必要があるかどうか。ping モニターを使用しない場合は、これを無効にすることができます。
デフォルト: true
ping-runtime.replicaCount
デプロイする ping ランタイム コンテナーの数。ping 監視のニーズに基づいてデプロイをスケーリングするには、replicaCount を増やします。
デフォルト: 1
ping-runtime.image.repository
ping ランタイム用にプルするコンテナー イメージ。
デフォルト: docker.io/newrelic/synthetics-ping-runtime
ping-runtime.image.pullPolicy
ping-runtime コンテナーのプル ポリシー。
デフォルト: IfNotPresent
node-api-runtime.enabled
Node.js API ランタイムをデプロイする必要があるかどうか。スクリプト化された API モニターを使用しない場合、これを無効にすることができます。
デフォルト: true
node-api-runtime.parallelism
デプロイする Node.js API ランタイムCronJobs
の数。同時に実行される Node.js API ジョブの最大数。追加の詳細 。
デフォルト: 1
node-api-runtime.completions
1 分あたりに完了する Node.js API ランタイムCronJobs
の数。並列処理とともにこの設定を増やして、スループットを向上させます。これは、並列処理が増加するたびに増加する必要があり、完了は常に少なくとも並列処理以上である必要があります。 .API ランタイム ジョブが実行されていない期間がある場合は、この設定を増やしてください。追加の詳細 。
デフォルト: 6
node-api-runtime.image.repository
Node.js API ランタイム用にプルするコンテナー イメージ。
デフォルト: docker.io/newrelic/synthetics-node-api-runtime
node-api-runtime.image.pullPolicy
Node.js API ランタイム コンテナーのプル ポリシー。
デフォルト: IfNotPresent
node-browser-runtime.enabled
Node.js ブラウザー ランタイムをデプロイする必要があるかどうか。シンプルなブラウザ モニタまたはスクリプト化されたブラウザ モニタを使用しない場合は、これを無効にすることができます。
デフォルト: true
node-browser-runtime.parallelism
デプロイする Chrome ブラウザー ランタイムCronJobs
の数。同時に実行される Chrome ブラウザ ジョブの最大数。追加の詳細 。
デフォルト: 1
node-browser-runtime.completions
1 分あたりに完了する Chrome ブラウザ ランタイムCronJobs
の数。並列処理とともにこの設定を増やして、スループットを向上させます。これは、並列処理が増加するたびに増加する必要があり、完了は常に少なくとも並列処理以上である必要があります。ブラウザーのランタイム ジョブが実行されていない期間があることに気付いた場合は、この設定を増やしてください。追加の詳細 。
デフォルト: 6
node-browser-runtime.image.repository
Node.js ブラウザー ランタイム用にプルするコンテナー イメージ。
デフォルト: docker.io/newrelic/synthetics-node-browser-runtime
node-browser-runtime.image.pullPolicy
Node.js ブラウザー ランタイム コンテナーのプル ポリシー。
デフォルト: IfNotPresent
OpenShift環境設定 変数は、起動時に--set
引数を使用して提供されます。
次のリストは、synthetics ジョブ マネージャーがサポートするすべての環境変数を示しています。synthetics.privateLocationKey
は必須で、その他の変数はすべてオプションです。
多数の追加の高度な設定が利用可能であり、Helm チャートの README に完全に記載されています。
名前
説明
synthetics.privateLocationKey
Required . プライベートロケーション キー 。プライベートロケーション エンティティ リストにあります。
imagePullSecrets
指定されたコンテナレジストリからイメージを引き出すために使用されるシークレットオブジェクトの名前です。
fullnameOverride
デフォルトを置き換えて、デプロイメントに使用される名前のオーバーライド。
appVersionOverride
chart.yml で指定されたバージョンの代わりに使用する、synthetics-job-manager のリリース バージョン。
synthetics.logLevel
デフォルト: INFO.
追加オプション: WARN
、 ERROR
synthetics.hordeApiEndpoint
米国ベースのアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.nr-data.net.
EUベース のアカウントの場合、エンドポイントは次のとおりです。 https://synthetics-horde.eu01.nr-data.net/
モニターにサービスを提供するために、合成ジョブ マネージャーが適切なエンドポイントに接続できることを確認します。
synthetics.vsePassphrase
設定すると、 verified script execution が有効になり、この値がpassphrase として使用されます。
synthetics.vsePassphraseSecretName
設定すると、検証済みスクリプトの実行が有効になり、この値を使用して、 vsePassphrase
というキーを持つ Kubernetes シークレットからパスフレーズを取得します。
synthetics.enableWasm
設定されている場合、ノードbrowserランタイムの Web アセンブリが有効になります。 WebAssembly を使用するには、外形監視ジョブ マネージャーの最小バージョンが release-367 以上であり、ノードbrowserランタイム バージョンが 2.3.21 以上である必要があります。
synthetics.apiProxyHost
Horde 通信に使用されるプロキシ サーバー。形式: "host"
。
synthetics.apiProxyPort
Horde 通信に使用されるプロキシ サーバー ポート。形式: port
。
synthetics.hordeApiProxySelfSignedCert
Horde 通信にプロキシ サーバーを使用する場合は、自己署名証明書を受け入れます。許容値: true
。
synthetics.hordeApiProxyUsername
Horde 通信用のプロキシ サーバーのユーザー名。フォーマット: "username"
synthetics.hordeApiProxyPw
Horde 通信用のプロキシ サーバーのパスワード。形式: "password"
。
synthetics.userDefinedVariables.userDefinedJson
ユーザー定義変数の JSON 文字列。 ユーザーはスクリプト内でこれらの変数にアクセスできます。 形式: '{"key":"value","key2":"value2"}'
。
synthetics.userDefinedVariables.userDefinedFile
ユーザー定義変数を含む JSON ファイルへの、ユーザーにとってローカルなパス。 これは--set-file
経由で渡され、値ファイルで設定することはできません。
synthetics.userDefinedVariables.userDefinedPath
ユーザーが指定したPersistentVolume
上の user_defined_variables.json
ファイルへのパス。この変数が設定されている場合、ユーザーはPersistentVolume
またはPersistentVolumeClaim
指定する必要があります。
global.persistence.existingClaimName
ボリュームをマウントする場合、ユーザーはクラスター内に既に存在するPersistentVolumeClaim
の名前を指定できます。対応するPersistentVolume
が存在することを前提としています。
global.persistence.existingVolumeName
ボリュームをマウントし、 PersistentVolumeClaim
を指定しない場合、ユーザーは少なくともPersistentVolume
名を指定する必要があります。Helm はPersistentVolumeClaim
を生成します。
global.persistence.storageClass
生成されたPersistentVolumeClaim
のStorageClass
の名前。これは既存の PV のStorageClassName
と一致する必要があります。プロバイダーでない場合、 Kubernetes は デフォルトのストレージ クラス (存在する場合) を使用します。
global.persistence.size
生成されたPersistentVolumeClaim
のボリュームのサイズ。フォーマット: 10Gi
。デフォルトは2Gi
。
global.checkTimeout
モニター チェックの実行が許可される最大秒数。この値は、0 秒 (除く) から 900 秒 (含む) までの整数である必要があります (たとえば、1 秒から 15 分まで)。
デフォルト: 180 秒
image.repository
引くための容器です。
デフォルト: docker.io/newrelic/synthetics-job-runner
image.pullPolicy
引きの方針です。
デフォルト: IfNotPresent
podSecurityContext
synthetics-job-manager
ポッドのカスタム セキュリティ コンテキストを設定します。
ping-runtime.enabled
永続的な ping ランタイムをデプロイする必要があるかどうか。ping モニターを使用しない場合は、これを無効にすることができます。
デフォルト: true
ping-runtime.replicaCount
デプロイする ping ランタイム コンテナの数。ping 監視のニーズに基づいてデプロイメントをスケールするには、 replicaCount
を増やします。
デフォルト: 1
ping-runtime.image.repository
ping ランタイム用にプルするコンテナー イメージ。
デフォルト: docker.io/newrelic/synthetics-ping-runtime
ping-runtime.image.pullPolicy
ping-runtime コンテナーのプル ポリシー。
デフォルト: IfNotPresent
node-api-runtime.enabled
Node.js API ランタイムをデプロイする必要があるかどうか。スクリプト化された API モニターを使用しない場合、これを無効にすることができます。
デフォルト: true
node-api-runtime.parallelism
デプロイする Node.js API ランタイムCronJobs
の数。同時に実行される Node.js API ジョブの最大数。追加の詳細 。
デフォルト: 1
node-api-runtime.completions
1 分あたりに完了する Node.js API ランタイムCronJobs
の数。並列処理とともにこの設定を増やして、スループットを向上させます。これは、並列処理が増加するたびに増加する必要があり、完了は常に少なくとも並列処理以上である必要があります。 .API ランタイム ジョブが実行されていない期間がある場合は、この設定を増やしてください。追加の詳細 。
デフォルト: 6
node-api-runtime.image.repository
Node.js API ランタイム用にプルするコンテナー イメージ。
デフォルト: docker.io/newrelic/synthetics-node-api-runtime
node-api-runtime.image.pullPolicy
Node.js API ランタイム コンテナーのプル ポリシー。
デフォルト: IfNotPresent
node-browser-runtime.enabled
Node.js ブラウザー ランタイムをデプロイする必要があるかどうか。シンプルなブラウザ モニタまたはスクリプト化されたブラウザ モニタを使用しない場合は、これを無効にすることができます。
デフォルト: true
node-browser-runtime.parallelism
デプロイする Chrome ブラウザー ランタイムCronJobs
の数。同時に実行される Chrome ブラウザ ジョブの最大数。追加の詳細 。
デフォルト: 1
node-browser-runtime.completions
1 分あたりに完了する Chrome ブラウザ ランタイムCronJobs
の数。並列処理とともにこの設定を増やして、スループットを向上させます。これは、並列処理が増加するたびに増加する必要があり、完了は常に少なくとも並列処理以上である必要があります。ブラウザーのランタイム ジョブが実行されていない期間があることに気付いた場合は、この設定を増やしてください。追加の詳細 。
デフォルト: 6
node-browser-runtime.image.repository
Node.js ブラウザー ランタイム用にプルするコンテナー イメージ。
デフォルト: docker.io/newrelic/synthetics-node-browser-runtime
node-browser-runtime.image.pullPolicy
Node.js ブラウザー ランタイム コンテナーのプル ポリシー。
デフォルト: IfNotPresent
スクリプト モニターのユーザー定義変数 プライベート外形監視ジョブ マネージャーを使用すると、スクリプト化された監視の環境変数を構成できます。 これらの変数は SJM 上でローカルに管理され、 $env.USER_DEFINED_VARIABLES
を介してアクセスできます。 ユーザー定義変数は 2 つの方法で設定できます。 JSON ファイルをマウントするか、リリースの SJM に環境変数を指定することができます。 両方が指定されている場合、SJM は環境によって提供される値のみを使用します。
JSONファイルの実装 ユーザーは JSON 形式のファイルを作成し、そのファイルが配置されているボリュームを SJM コンテナ内の指定されたターゲット パスにマウントできます。
ファイルには読み取り権限が必要であり、JSON 形式のマップが含まれている必要があります。 ユーザー定義変数ファイルの例:
"my_password" : "PASSW0RD123" ,
"my_URL" : "https://newrelic.com/" ,
ファイルをホスト上のソース ディレクトリに配置します。 SJM은 파일 이름이 user_define_variables.json이 될 것으로 예상합니다.
Dockerの例です。
想定されるターゲット ディレクトリは次のとおりです。 /var/lib/newrelic/synthetics/variables/
$ docker run .. . -v /variables:/var/lib/newrelic/synthetics/variables:rw .. .
Podmanの例:
SELinux の場合は、ボリュームを:z
または:Z
で追加でマウントします。詳細については、 Podman のドキュメントを参照してください。 想定されるターゲット ディレクトリは次のとおりです。 /var/lib/newrelic/synthetics/variables/
$ podman run .. . -v /variables:/var/lib/newrelic/synthetics/variables:rw,z .. .
Kubernetesの例。
Kubernetes の SJM ポッドにファイルを提供する場合、ユーザーには 2 つのオプションがあります。 以下の可能性があります:
ローカルファイルを渡します。 user_defined_variables.json
を含む PersistentVolume を提供します。ローカルファイルを渡す このオプションは、ConfigMap Kubernetes リソースを作成し、それを SJM ポッドにマウントします。
$ helm install newrelic/synthetics-job-manager .. . --set-file "synthetics.userDefinedVariables.userDefinedFile=[local-path]/user_defined_variables.json" .. .
マウント PersistentVolume
このオプションでは、ユーザーはuser_defined_variables.json
ファイルを含むPersistentVolume
または同じファイルに対するPersistentVolumeClaim
指定する必要があります。PersistentVolume
を使用した helm chart インストレーションの詳細については、 永続的なデータ ストレージ の手順に従ってください。
ユーザーが下記の説明に従ってPersistentVolume
を準備したら、SJM をリリースし、 user_defined_variables.json
ファイルが配置されているパスを設定し、必要に応じてその他のsynthetics.persistence
変数を設定します。
$ helm install newrelic/synthetics-job-manger .. . --set synthetics.userDefinedVariables.userDefinedPath = "variables"
環境変数として渡す 変数は環境変数を介してそれぞれのコンテナ システムに渡される場合があります。
Dockerの例です。
-e
フラグを使用して、 USER_DEFINED_VARIABLES
という名前の環境変数を設定し、JSON 形式のマップ文字列の値を指定します。
$ docker run .. . -e USER_DEFINED_VARIABLES = '{"key":"value","name":"sjm"}' .. .
Podmanの例:
-e
フラグを使用して、 USER_DEFINED_VARIABLES
という名前の環境変数を設定し、JSON 形式のマップ文字列の値を指定します。
$ podman run .. . -e USER_DEFINED_VARIABLES = '{"key":"value","name":"sjm"}' .. .
Kubernetesの例。
JSON 形式の文字列を渡すには、 --set-literal
フラグを使用します。
$ helm install newrelic/synthetics-job-manager .. . --set-literal synthetics.userDefinedVariables.userDefinedJson = '{"key":"value","name":"sjm"}' .. .
スクリプトからユーザー定義の環境変数にアクセスする 構成されたユーザー定義の環境変数を参照するには、予約語の$env.USER_DEFINED_VARIABLES
に続けて、ドット表記の特定の変数の名前を使用します (例: $env.USER_DEFINED_VARIABLES.MY_VARIABLE
)。
注意 ユーザー定義の環境変数はログから削除されません。 機密情報には安全な認証情報 機能を使用することを検討してください。
カスタムノードモジュール カスタム ノード モジュールは、1分間あたりの呼出し回数と SJM の両方で提供されます。 これらを使用すると、カスタマイズされたノード モジュール のセットを作成し、外形監視用のスクリプト モニター (スクリプトAPIおよびスクリプトbrowser ) で使用できます。
カスタムモジュールディレクトリを設定する ルート フォルダーにnpm の公式ガイドライン に従って、 package.json
ファイルを含むディレクトリを作成します。 SJMはpackage.jsonにリストされている依存関係をインストールします。 dependencies
フィールド。 これらの依存関係は、プライベート外形監視ジョブ マネージャーでモニターを実行するときに使用できます。 以下の例をご覧ください。
例 この例では、次のような構造のカスタムモジュールディレクトリを使用しています。
/example-custom-modules-dir/
└── package.json ⇦ the only mandatory file
package.json
はdependencies
ローカル モジュール (例: counter
) とホストされたモジュール (例: smallest
バージョン1.0.1
) の両方として定義します。
"name" : "custom-modules" ,
"version" : "1.0.0" , ⇦ optional
"description" : "example custom modules directory" , ⇦ optional
"smallest" : "1.0.1" , ⇦ hosted module
"counter" : "file:./counter" ⇦ local module
Docker、Podman、KubernetesのSJMにカスタムモジュールディレクトリを追加します。 Docker dockerの場合、リリース SJM はディレクトリを /var/lib/newrelic/synthetics/modules
にマウントします。 例えば:
$ docker run .. . -v /example-custom-modules-dir:/var/lib/newrelic/synthetics/modules:rw .. .
ポッドマン podman の場合は、SJM をリリースして/var/lib/newrelic/synthetics/modules
にディレクトリをマウントします。 SELinux の場合は、 :z
または:Z
を使用してボリュームを追加でマウントします。詳細については、 Podman のドキュメント を参照してください。例えば:
$ podman run .. . -v /example-custom-modules-dir:/var/lib/newrelic/synthetics/modules:rw,z .. .
Kubernetes Kubernetes の場合、カスタム モジュールを有効にして SJM を起動する前に、 /var/lib/newrelic/synthetics/modules
のディレクトリが PV 上に存在している必要があります。
ヒント 複数のポッド間でストレージを共有する必要がある場合は、PV アクセス モードを ReadWriteMany にする必要があります。
1 つの方法は、カスタム モジュール ディレクトリを PV にコピーするためだけに PV をマウントするポッドを作成することです。次の例では、Amazon EKS と Amazon EFS を使用します。
ネームスペース、永続ボリューム、および永続ボリューム要求を作成する EFS ファイルシステムがすでにセットアップされており、クラスターにEFS CSI ドライバー がインストールされていることを確認してください。PV のspec.csi.volumeHandle
の EFS ファイルシステム ID も必要になります。
$ kubectl apply -f - << EOF
$ apiVersion: storage.k8s.io/v1
$ provisioner: efs.csi.aws.com
$ name: custom-modules-pvc
$ persistentVolumeReclaimPolicy: Retain
$ storageClassName: efs-sc
$ driver: efs.csi.aws.com
$ volumeHandle: <your-efs-filesystem-id>
$ kind: PersistentVolumeClaim
$ name: custom-modules-pvc
$ storageClassName: efs-sc
~/.kube/config
のnewrelic
ネームスペースに切り替えます。
$ kubectl config get-contexts
$ kubectl config set-context YOUR_CONTEXT --namespace = newrelic
$ kubectl config view --minify | grep namespace:
この時点で、PVC は RWX アクセス モードで PV にバインドされる必要があります。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE
persistentvolume/custom-modules-pvc 5Gi RWX Retain Bound newrelic/custom-modules-pvc efs-sc <unset> 4m46s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE
persistentvolumeclaim/custom-modules-pvc Bound custom-modules-pvc 5Gi RWX efs-sc <unset> 4m10s
カスタムモジュールディレクトリをコピーするには、 mount-custom-mods-pod
作成します。 $ kubectl apply -f - << EOF
$ name: mount-custom-mods-pod
$ - name: mount-custom-mods-pod
$ - mountPath: "/var/lib/newrelic/synthetics/modules"
$ name: custom-modules-storage
$ - name: custom-modules-storage
$ claimName: custom-modules-pvc
この時点で、ボリュームを使用するためにmount-custom-mods-pod
が作成され、構成される必要があります。
$ kubectl describe po mount-custom-mods-pod | grep -A4 Volumes:
Volumes:
custom-modules-storage:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: custom-modules-pvc
ReadOnly: false
PV、PVC、またはmount-custom-mods-pod
に関連する警告がないかイベントを確認します。
$ kubectl get events --field-selector type = Warning --sort-by = '.lastTimestamp'
カスタムモジュールディレクトリをPVにコピーします node_modules
npm install
の SJM によって生成されるため、コピーする必要はありません。
$ rm -rf node_modules && cd ..
mount-custom-mods-pod
が実行中であることを確認してください。
NAME READY STATUS RESTARTS AGE
mount-custom-mods-pod 1/1 Running 0 5m43s
PVにコピーします。
$ kubectl cp custom-modules newrelic/mount-custom-mods-pod:/var/lib/newrelic/synthetics/modules
PV に/var/lib/newrelic/synthetics/modules/custom-modules/package.json
が存在することを確認してください。
$ kubectl exec -it mount-custom-mods-pod -- bash
root@mount-custom-mods-pod:/# cd /var/lib/newrelic/synthetics/modules/
root@mount-custom-mods-pod:/var/lib/newrelic/synthetics/modules# ls -l
total 4
drwxr-xr-x 2 root root 6144 Jun 29 03:49 custom-modules
root@mount-custom-mods-pod:/var/lib/newrelic/synthetics/modules# ls -l custom-modules/
total 4
-rw-r--r-- 1 501 staff 299 Jun 29 03:49 package.json
カスタムモジュール機能を有効にしたSJMをリリース インストレーション中に、コマンドラインまたは YAML ファイルでpersistence.existingClaimName
とcustomNodeModules.customNodeModulesPath
の値を設定します。 customNodeModules.customNodeModulesPath
値には、カスタム モジュール ファイルが存在する永続ボリューム上のサブパスを指定する必要があります。例えば:
$ helm upgrade --install synthetics-job-manager newrelic/synthetics-job-manager -n newrelic --set global.persistence.existingClaimName = custom-modules-pvc --set global.customNodeModules.customNodeModulesPath = custom-modules --set synthetics.privateLocationKey = YOUR_PRIVATE_LOCATION_KEY
Release "synthetics-job-manager" does not exist. Installing it now.
NAME: synthetics-job-manager
LAST DEPLOYED: Fri Jun 28 16:53:28 2024
NAMESPACE: newrelic
STATUS: deployed
REVISION: 1
TEST SUITE: None
custom-modules
ディレクトリには、 node_modules
にインストールされたパッケージが含まれるようになりました。
$ kubectl exec -it mount-custom-mods-pod -- bash
root@mount-custom-mods-pod:/# cd /var/lib/newrelic/synthetics/modules/
root@mount-custom-mods-pod:/var/lib/newrelic/synthetics/modules# ls -l custom-modules/
total 16
-rw-r--r-- 1 root root 836 Jun 29 03:51 README
drwxr-xr-x 18 root root 6144 Jun 29 03:51 node_modules
-rw-r--r-- 1 501 staff 299 Jun 29 03:49 package.json
-rw-r--r-- 1 root root 190 Jun 29 03:51 package.json.shasum
カスタム ノード モジュールが検出されない場合は、 custom-modules
ディレクトリとpackage.json
ファイルの権限を調整します。
$ kubectl exec -it mount-custom-mods-pod -- bash
root@mount-custom-mods-pod:/# cd /var/lib/newrelic/synthetics/modules/
root@mount-custom-mods-pod:/var/lib/newrelic/synthetics/modules# chmod -R 777 custom-modules
root@mount-custom-mods-pod:/var/lib/newrelic/synthetics/modules# chown -R 2000:2000 custom-modules
モジュールが正しくインストールされたかどうか、またはエラーが発生したかどうかを確認するには、 synthetics-job-manager
コンテナ またはポッドの ログで次の行を探します。
2024-06-29 03:51:28,407{UTC} [main] INFO c.n.s.j.p.options.CustomModules - Detected mounted path for custom node modules
2024-06-29 03:51:28,408{UTC} [main] INFO c.n.s.j.p.options.CustomModules - Validating permission for custom node modules package.json file
2024-06-29 03:51:28,409{UTC} [main] INFO c.n.s.j.p.options.CustomModules - Installing custom node modules...
2024-06-29 03:51:44,670{UTC} [main] INFO c.n.s.j.p.options.CustomModules - Custom node modules installed successfully.
これで、このプライベートな場所に送信するモニターのスクリプト に"require('smallest');"
を追加できます。
変化 package.json
ローカル モジュールとホスト モジュールに加えて、 Node.js モジュール も利用できます。 SJM で使用されるカスタム モジュールを更新するには、 package.json
ファイルに変更を加えて、SJM を再起動します。 再起動プロセス中に、SJM は設定の変更を認識し、クリーンアップと再インストール操作を自動的に実行して、更新されたモジュールが確実に適用されるようにします。
注意 ローカル モジュール: package.json
には任意のローカル モジュールを含めることができますが、これらのモジュールはカスタム モジュール ディレクトリの下のツリー内に存在する必要があります。 ツリー外に保存すると、初期化プロセスが失敗し、SJM を起動した後にdockerログ にエラー メッセージが表示されます。
データの永久保存 ユーザーは、 user_defined_variables.json
ファイルを提供したり、カスタム ノード モジュールをサポートしたりするために、永続的なデータ ストレージを使用することがあります。
Docker Dockerに恒久的なデータ保存を設定するには
ジョブ マネージャーを起動するホスト上にディレクトリを作成します。 これがソース ディレクトリです。
ジョブ マネージャーをリリースし、ソース ディレクトリをターゲット ディレクトリ/var/lib/newrelic/synthetics
にマウントします。
例:
$ docker run .. . -v /sjm-volume:/var/lib/newrelic/synthetics:rw .. .
ポッドマン Podman で永続的なデータ ストレージを設定するには:
ジョブ マネージャーを起動するホスト上にディレクトリを作成します。 これがソース ディレクトリです。 ジョブ マネージャーをリリースし、ソース ディレクトリをターゲット ディレクトリ/var/lib/newrelic/synthetics
にマウントします。 例:
$ podman run .. . -v /sjm-volume:/var/lib/newrelic/synthetics:rw,z .. .
Kubernetes Kubernetes に永続的なデータ ストレージを設定するには、ユーザーには 2 つのオプションがあります。
既存の PersistentVolume (PV) に既存の PersistentVolumeClaim (PVC) を指定して、 synthetics.persistence.existingClaimName
構成値を設定してください。例:
$ helm install .. . --set synthetics.persistence.existingClaimName = sjm-claim .. .
既存の PersistentVolume (PV) 名を指定して、 synthetics.persistence.existingVolumeName
構成値を設定してください。Helm はユーザー用の PVC を生成します。ユーザーはオプションで次の値も設定できます。
OpenShift、Kubernetes、Docker のサイズ設定に関する考慮事項 ヒント Docker 固有のサイジングに関する考慮事項は、まもなく利用可能になります。
大規模な環境で作業している場合は、合成モニターを効率的に実行するための最小要件を満たすように、ジョブ マネージャーの構成をカスタマイズする必要がある場合があります。次のような多くの要因が、合成ジョブ マネージャーの展開のサイジング要件に影響を与える可能性があります。
予想される使用量に基づいてすべてのランタイムが必要な場合 モニターの種類 (ping、シンプルまたはスクリプト化されたブラウザー、およびスクリプト化された API) ごとの 1 分あたりのジョブ数 約 3 分でタイムアウトするジョブを含む、ジョブの所要時間 ジョブの失敗数。ジョブが失敗した場合、組み込みの 3/3 再試行ロジックを提供するためにモニターが失敗し始めると、自動再試行がスケジュールされます。これらの追加のジョブは、合成ジョブ マネージャーのスループット要件に追加されます。 以下にリストされているサイジング構成設定に加えて、同じプライベート ロケーション キーを使用して追加の合成ジョブ マネージャーを展開し、複数の環境間でジョブの負荷を分散することができます。
KubernetesとOpenShift Kubernetes および OpenShift 合成ジョブ マネージャーによって使用される各ランタイムは、 Helm チャート で値を設定することで個別にサイズを変更できます。
1
のデフォルト値からping-runtime.replicaCount
設定を増やすことで、追加の ping ランタイムを開始して、ping モニター負荷の実行を支援できます。
Node.js API と Node.js ブラウザ ランタイムは、 parallelism
とcompletions
の設定の組み合わせを使用して個別にサイズ設定されます。これらの設定の理想的な構成は、お客様の要件によって異なります。
parallelism
設定は、特定のランタイムの同時実行ポッドの数を制御します。parallelism
設定は、コンテナ化されたプライベート ミニオン (CPM) の synthetics.heavyWorkers
設定と同等です。リソース要求と制限値 に基づいて、この数のポッドを実行するのに十分なリソースが Kubernetes クラスターにあることを確認してください。
completions
設定は、 CronJob
がそのランタイムの別の Kubernetes ジョブを開始する前に、特定のランタイムのポッドの数を完了する必要があるかを制御します。Kubernetes ジョブ (大文字の J) と合成モニター ジョブの違いに注目してください。効率を向上させるには、 completions
parallelism
値の 6 ~ 10 倍に設定する必要があります。これは、Kubernetes ジョブがすべての completions
が完了するのを待機するため、実行されるポッドの数が parallelism
未満になる可能性がある「完了の終わりに近づく」非効率を最小限に抑えるのに役立ちます。
completions
が 1 より大きい場合、Kubernetes ジョブで定義されたすべての完了 (たとえば 6/6 完了) が満たされるまで、「Completed」ステータスのポッドが kubectl get pods -n YOUR_NAMESPACE
の出力に表示されたままになります。ポッドのステータスが「完了」または「失敗」の場合、リソースはノードから解放されます。
Kubernetes ジョブの有効期間 5 分 (kubectl get jobs -n YOUR_NAMESPACE
) は、ポッドが完了するまでにかかる時間と、1 分あたりに実行する必要がある合成ジョブの数 (ジョブ レート) の変動を考慮した控えめな目標です。次の方程式は、各ランタイムの completions
と parallelism
の開始点として使用できます。プライベート ロケーション キューの増加の観察に基づいて調整を行う必要がある場合があります。
completions = 300 / avg job duration (s)
parallelism = synthetics jobs per 5 minutes / completions
ランタイムが異なれば、合成ジョブの期間と速度も異なる可能性があります。次のクエリを使用して、プライベート ロケーションの平均期間と料金を取得できます。
FROM SyntheticCheck SELECT average ( duration ) AS 'avg job duration'
WHERE type != 'SIMPLE' AND location = 'YOUR_PRIVATE_LOCATION' FACET type SINCE 1 hour ago
FROM SyntheticCheck SELECT rate ( uniqueCount ( id ) , 5 minutes ) AS 'jobs per 5 minutes'
WHERE type != 'SIMPLE' AND location = 'YOUR_PRIVATE_LOCATION' FACET type SINCE 1 hour ago
ヒント 上記のクエリは現在の結果に基づいています。プライベート ロケーションに結果がない場合、またはジョブ マネージャーが最高のパフォーマンスを発揮していない場合、クエリ結果は正確ではない可能性があります。その場合、 kubectl get jobs -n YOUR_NAMESPACE
継続時間が少なくとも 5 分 (十分な完了)、キューが増大しない (十分な並列処理) ことが確認されるまで、 completions
と parallelism
にいくつかの異なる値を試します。
例
説明
parallelism=1
completions=1
ランタイムは 1 分あたり 1 つの外形監視ジョブを実行します。 1 つのジョブが完了すると、 CronJob
設定は次の瞬間に新しいジョブを開始します。 Throughput will be extremely limited with this configuration.
parallelism=1
completions=6
ランタイムは一度に 1 つの外形監視ジョブを実行します。 ジョブが完了すると、新しいジョブがすぐに開始されます。 completions
設定数のジョブが完了すると、 CronJob
構成によって新しい Kubernetes ジョブが開始され、完了カウンターがリセットされます。 Throughput will be limited, but slightly better. 長時間実行される単一の外形監視ジョブは、このタイプの他の外形監視ジョブの処理をブロックします。
parallelism=3
completions=24
ランタイムは一度に 3 つの外形監視ジョブを実行します。 これらのジョブのいずれかが完了すると、新しいジョブがすぐに開始されます。 completions
設定数のジョブが完了すると、 CronJob
構成によって新しい Kubernetes ジョブが開始され、完了カウンターがリセットされます。 Throughput is much better with this or similar configurations. 単一の長時間実行される外形監視ジョブが、このタイプの他の外形監視ジョブの処理に及ぼす影響は限定的です。
合成ジョブの完了に時間がかかる場合、ジョブで 5 分間を埋めるために必要な完了数は少なくなりますが、より多くの並列ポッドが必要になります。同様に、1 分あたりにより多くの合成ジョブを処理する必要がある場合は、より多くの並列ポッドが必要になります。parallelism
設定は、1 分あたりに実行できる合成ジョブの数に直接影響します。値が小さすぎるとキューが増大する可能性があります。値が大きすぎると、ノードのリソースが制限される可能性があります。
parallelism
設定がうまく機能してキューをゼロに維持している場合は、 completions
に 300 / avg job duration
から計算される値よりも高い値を設定すると、次のいくつかの方法で効率を向上させることができます。
CronJob の最小期間である少なくとも 1 分間が合成ジョブで埋められるように、ジョブ期間の変動に対応します。 完了サイクルの数を減らして、最後のジョブが完了するまで次の完了セットを開始できない「完了が終わりに近づく」非効率を最小限に抑えます。 completions
値が大きすぎないように注意することが重要です。大きすぎると、CronJob で次のような警告イベントが発生します。
8m40s Warning TooManyMissedTimes cronjob/synthetics-node-browser-runtime too many missed start times: 101. Set or decrease .spec.startingDeadlineSeconds or check clock skew
ヒント 外形監視ジョブ マネージャー ファイルに加えた変更については、 New Relic責任を負わないことにご注意ください。