Te ofrecemos esta traducción automática para facilitar la lectura.
En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.
Actualice otras variables de entorno al iniciar su administrador de trabajos Sintético.
Variables definidas por el usuario para monitor con script
Los administradores de trabajos de Private Sintético le permiten configurar variables de entorno para el monitor con script. Estas variables se administran localmente en SJM y se puede acceder a ellas a través de $env.USER_DEFINED_VARIABLES. Puede configurar variables definidas por el usuario de dos maneras. Puede montar un archivo JSON o puede proporcionar una variable de entorno al SJM en el lanzamiento. Si se proporcionan ambos, el SJM solo utilizará valores proporcionados por el entorno.
El usuario puede crear un archivo con formato JSON y montar el volumen donde se encuentra el archivo en una ruta de destino especificada en el contenedor SJM.
El archivo debe tener permisos de lectura y contener un mapa con formato JSON. Ejemplo de archivo de variables definidas por el usuario:
{
"KEY": "VALUE",
"user_name": "MINION",
"my_password": "PASSW0RD123",
"my_URL": "https://newrelic.com/",
"ETC": "ETC"
}
Coloque el archivo en el directorio de origen del host. El SJM espera que el nombre del archivo sea user_defined_variables.json
Ejemplo Docker:
El directorio objetivo esperado es: /var/lib/newrelic/synthetics/variables/
docker run ... -v /variables:/var/lib/newrelic/synthetics/variables:rw ...
Ejemplo de Kubernetes:
El usuario tiene dos opciones al proporcionar un archivo al pod SJM en Kubernetes. Que puede:
pasar en un archivo local.
proporcione un PersistentVolume que incluya user_defined_variables.json.
Pasar en un archivo local
Esta opción crea un recurso ConfigMap Kubernetes y lo monta en el pod SJM.
This option requires the user to provide a PersistentVolume that includes the user_defined_variables.json file or a PersistentVolumeClaim to the same. For more details on helm chart installation using a PersistentVolume, follow the instructions at [permanent data storage](/docs/synthetics/synthetic-monitoring/private-locations/job-manager-configuration#permanent-data-storage).
Once the user has prepared a PersistentVolume as described below, launch the SJM, setting the path where the user_defined_variables.json file is located and setting any other `synthetics.persistence` variables as necessary.
Las variables se pueden pasar a su respectivo sistema contenedor a través de una variable de entorno. ejemplo docker :
Utilice la bandera -e para configurar una variable de entorno denominada USER_DEFINED_VARIABLES y asígnele el valor de una cadena de mapa con formato JSON.
docker run ... -e USER_DEFINED_VARIABLES='{"key":"value","name":"sjm"}' ...
Ejemplo de Kubernetes: utilice el indicador --set-literal para pasar la cadena con formato JSON.
Acceder a variables de entorno definidas por el usuario desde un script
Para hacer referencia a una variable de entorno configurada definida por el usuario, utilice el $env.USER_DEFINED_VARIABLES reservado seguido del nombre de una variable determinada con notación de puntos.
Por ejemplo, $env.USER_DEFINED_VARIABLES.MY_VARIABLE
Advertencia
Las variables de entorno definidas por el usuario no se desinfectan del registro. Considere utilizar la característica de credenciales seguras para información confidencial.
Módulos de nodo personalizados
Se proporcionan módulos de nodo personalizados tanto en llamadas por minuto como en SJM. Le permiten crear un conjunto personalizado de módulos de nodo y usarlos en un monitor con script ( API con script y browser con script) para monitoreo sintético.
Para configurar los módulos:
Cree un directorio con un archivo package.json siguiendo las pautas oficiales de npm en la carpeta raíz. El SJM instalará cualquier dependencia enumerada en el paquete.json. campo dependencies . Estas dependencias estarán disponibles cuando se ejecute el monitor en el administrador de trabajos privado de Sintético. Vea un ejemplo de esto a continuación.
En este ejemplo, se utiliza un directorio de módulo personalizado con la siguiente estructura:
/example-custom-modules-dir/
├── counter
│ ├── index.js
│ └── package.json
└── package.json ⇦ the only mandatory file
package.json define dependencies como un módulo local (por ejemplo, counter) y cualquier módulo alojado (por ejemplo, smallest versión 1.0.1):
Una vez que haya creado el directorio de módulos personalizados y el package.json, aplíquelo a su SJM para docker y Kubernetes.
Para docker, lanza SJM montando el directorio en /var/lib/newrelic/synthetics/modules. Por ejemplo:
docker run ... -v /example-custom-modules-dir:/var/lib/newrelic/synthetics/modules:rw ...
Complete lo siguiente:
lance el SJM, estableciendo un valor para el valor de configuración persistence.customModules ya sea en la línea de comando o en un archivo YAML durante la instalación. El valor debe especificar la subruta en el volumen persistente de su administrador de trabajos Sintético donde existen sus archivos de módulos personalizados. Por ejemplo:
Asegúrese de que su directorio de módulos personalizados esté disponible en el minion pod. Puede utilizar kubectl cp como método para copiar el directorio de su host al minion. Por ejemplo:
Para comprobar si los módulos se instalaron correctamente o si se produjo algún error, revise el registro de SJM para la sección titulada "... Initialization of Custom Modules ...". Estos registros incluirán el registro de instalación de npm, proporcionando información sobre el proceso de instalación y cualquier posible error encontrado.
Ahora puede agregar "require('smallest');" al script del monitor que envía a esta ubicación privada.
Cambiar package.json para módulos personalizados
Además de los módulos locales y alojados, también puede utilizar módulos de Node.js. Para actualizar los módulos personalizados utilizados por su SJM, realice cambios en el archivo package.json y reinicie SJM. Durante el proceso de reinicio, el SJM reconocerá el cambio de configuración y realizará automáticamente operaciones de limpieza y reinstalación para garantizar que se apliquen los módulos actualizados.
Advertencia
Módulos locales: si bien su package.json puede incluir cualquier módulo local, estos módulos deben residir dentro del árbol debajo de su directorio de módulos personalizados. Si se almacena fuera del árbol, el proceso de inicialización fallará y verá un mensaje de error en el log docker después de iniciar SJM.
Almacenamiento permanente de datos
Es posible que el usuario desee utilizar el almacenamiento de datos permanente para proporcionar el archivo user_defined_variables.json o admitir módulos de nodo personalizados (aún no disponibles para los administradores de trabajos privados de Sintético).
Docker
Para configurar el almacenamiento permanente de datos en Docker:
Cree un directorio en el host donde está iniciando Job Manager. Este es su directorio de origen.
Inicie el Administrador de trabajos, montando el directorio de origen en el directorio de destino /var/lib/newrelic/synthetics.
Ejemplo:
docker run ... -v /sjm-volume:/var/lib/newrelic/synthetics:rw ...
Kubernetes
Para configurar el almacenamiento permanente de datos en Kubernetes, el usuario tiene dos opciones:
Proporcione un PersistentVolumeClaim (PVC) existente para un PersistentVolume (PV) existente, estableciendo el valor de configuración synthetics.persistence.existingClaimName .
Proporcione un nombre de PersistentVolume (PV) existente y establezca el valor de configuración synthetics.persistence.existingVolumeName . Helm generará un PVC para el usuario.
Opcionalmente, el usuario también puede establecer los siguientes valores:
synthetics.persistence.storageClass: la clase de almacenamiento del fotovoltaico existente. Si no se proporciona, Kubernetes utilizará la clase de almacenamiento predeterminada.
synthetics.persistence.size: el tamaño del reclamo. Si no se establece, el valor predeterminado es actualmente 2Gi.
Las variables ambientales le permiten ajustar la configuración del administrador de trabajos de Sintético para satisfacer sus necesidades ambientales y funcionales específicas.
Las variables se proporcionan al inicio utilizando el argumento -e, --env .
La siguiente tabla muestra todas las variables de entorno que soporta Sintético job manager. PRIVATE_LOCATION_KEY es obligatorio y todas las demás variables son opcionales.
Nombre
Descripción
PRIVATE_LOCATION_KEY
REQUIRED. Clave de ubicación privada, como se encuentra en la lista de entidades de Ubicación Privada.
DOCKER_API_VERSION
Formato: "vX.Y" versión de API que se utilizará con el servicio Docker determinado.
Por defecto: v1.35.
DOCKER_HOST
Apunta al administrador de trabajos de Sintético a un DOCKER_HOST determinado. Si está ausente, el valor predeterminado es /var/run/docker.sock.
HORDE_API_ENDPOINT
Para cuentas con sede en EE. UU., el extremo es: https://synthetics-horde.nr-data.net.
Para cuentas basadas en la UE , el extremo es: https://synthetics-horde.eu01.nr-data.net/
Asegúrese de que su administrador de trabajo de Sintético pueda conectarse al extremo apropiado para atender su monitor.
DOCKER_REGISTRY
El dominio del Registro Docker donde se alojan las imágenes en tiempo de ejecución. Utilice esto para anular docker.io como valor predeterminado.
DOCKER_REPOSITORY
El repositorio/organización Docker donde se alojan las imágenes en tiempo de ejecución. Utilice esto para anular newrelic como valor predeterminado.
HORDE_API_PROXY_HOST
Host de servidor proxy utilizado para la comunicación de la Horda. Formato: "localhost".
HORDE_API_PROXY_PORT
Puerto del servidor proxy utilizado para la comunicación de la Horda. Formato: 8888.
HORDE_API_PROXY_USERNAME
Nombre de usuario del servidor proxy utilizado para la comunicación de la Horda. Formato: "username".
HORDE_API_PROXY_PW
Contraseña del servidor proxy utilizada para la comunicación de la Horda. Formato: "password".
HORDE_API_PROXY_ACCEPT_SELF_SIGNED_CERT
¿Aceptar certificados de proxy autofirmados para la conexión del servidor proxy utilizado para la comunicación de la Horda? Valores aceptables: true
CHECK_TIMEOUT
La cantidad máxima de segundos que se permite que se ejecuten las comprobaciones de su monitor. Este valor debe ser un número entero entre 0 segundos (excluido) y 900 segundos (incluido) (por ejemplo, de 1 segundo a 15 minutos).
Predeterminado: 180 segundos
LOG_LEVEL
Por defecto: INFO.
Opciones adicionales: WARN, ERROR, DEBUG
HEAVYWEIGHT_WORKERS
El número de trabajos pesados simultáneos (browser/ browser con secuencias de comandos y API con secuencias de comandos) que se pueden ejecutar al mismo tiempo.
Valor predeterminado: CPU disponibles - 1.
DESIRED_RUNTIMES
Una matriz que se puede utilizar para ejecutar imágenes en tiempo de ejecución específicas. Formato: ['newrelic/Sintético-ping-runtime:latest','newrelic/Sintético-node-API-runtime:latest','newrelic/Sintético-node-browser-runtime:latest']
Valor predeterminado: todos los tiempos de ejecución más recientes.
VSE_PASSPHRASE
Si se establece, habilita verified script execution y utiliza este valor como passphrase.
USER_DEFINED_VARIABLES
Un conjunto alojado localmente de pares de valores principales definidos por el usuario.
Las variables se proporcionan al inicio utilizando el argumento --set .
La siguiente lista muestra todas las variables de entorno que admite Sintético job manager. synthetics.privateLocationKey es obligatorio y todas las demás variables son opcionales.
REQUIRED if synthetics.privateLocationKeySecretName is not set. ubicación privada clave de la ubicación privada, tal como se encuentra en la página web de la ubicación privada.
synthetics.privateLocationKeySecretName
REQUIRED if synthetics.privateLocationKey is not set. Nombre del secreto de Kubernetes que contiene la clave privateLocationKey, que contiene la clave de autenticación asociada a tu ubicación privada de Sintético.
replicaCount
Número de réplicas a mantener con su instalación
Por defecto: 1.
imagePullSecrets
El nombre del objeto secreto utilizado para extraer una imagen de un registro de contenedor específico.
fullnameOverride
Anulación del nombre utilizado para su implementación, reemplazando el predeterminado.
appVersionOverride
Versión de lanzamiento de Sintético-job-manager para usar en lugar de la versión especificada en chart.yml.
synthetics.logLevel
Por defecto: INFO.
Opciones adicionales: WARN, ERROR
synthetics.hordeApiEndpoint
Para cuentas con sede en EE. UU., el extremo es: https://synthetics-horde.nr-data.net.
Para cuentas basadas en la UE , el extremo es: https://synthetics-horde.eu01.nr-data.net/
Asegúrese de que su administrador de trabajo de Sintético pueda conectarse al extremo apropiado para atender su monitor.
synthetics.minionDockerRunnerRegistryEndpoint
El registro y la organización Docker donde se aloja la imagen minion Runner. Utilice esto para anular quay.io/newrelic como valor predeterminado (por ejemplo, docker.io/newrelic).
synthetics.vsePassphrase
Si se establece, habilita verified script execution y utiliza este valor como passphrase.
synthetics.vsePassphraseSecretName
Si se establece, habilita la ejecución de script verificada y utiliza este valor para recuperar la frase de contraseña de un secreto de Kubernetes con una clave llamada vsePassphrase.
synthetics.apiProxyHost
Servidor proxy utilizado para la comunicación de la Horda. Formato: "host".
synthetics.apiProxyPort
Puerto del servidor proxy utilizado para la comunicación de la Horda. Formato: port.
synthetics.hordeApiProxySelfSignedCert
Acepte certificados autofirmados cuando utilice un servidor proxy para la comunicación de la Horda. Valores aceptables: true.
synthetics.hordeApiProxyUsername
Nombre de usuario del servidor proxy para la comunicación de la Horda. Formato: "username"
synthetics.hordeApiProxyPw
Contraseña del servidor proxy para la comunicación de la Horda. Formato: "password".
synthetics.userDefinedVariables.userDefinedJson
Una cadena JSON de variables definidas por el usuario. El usuario puede acceder a estas variables en su script. Formato: '{"key":"value","key2":"value2"}'.
synthetics.userDefinedVariables.userDefinedFile
Una ruta local para el usuario a un archivo JSON que contiene variables definidas por el usuario. Esto se pasa a través de --set-file y no se puede configurar en el archivo de valores.
synthetics.userDefinedVariables.userDefinedPath
Una ruta en el PersistentVolume proporcionado por el usuario al archivo user_defined_variables.json. El usuario debe proporcionar un PersistentVolume o PersistentVolumeClaim si esta variable está completa.
synthetics.persistence.existingClaimName
Si monta un volumen, el usuario puede proporcionar un nombre para un PersistentVolumeClaim que ya existe en el clúster. Presume la existencia de un PersistentVolume correspondiente.
synthetics.persistence.existingVolumeName
Si monta un volumen y no proporciona un PersistentVolumeClaim, el usuario debe, como mínimo, proporcionar un nombre de PersistentVolume. Helm generará un PersistentVolumeClaim.
synthetics.persistence.storageClass
El nombre de StorageClass para el PersistentVolumeClaim generado. Esto debe coincidir con StorageClassName en el PV existente. Si no son proveedores, Kubernetes utilizará la clase de almacenamiento predeterminada, si está presente.
synthetics.persistence.size
El tamaño del volumen para el PersistentVolumeClaim generado. Formato: 10Gi. 2Gi predeterminado.
global.checkTimeout
La cantidad máxima de segundos que se permite que se ejecuten las comprobaciones de su monitor. Este valor debe ser un número entero entre 0 segundos (excluido) y 900 segundos (incluido) (por ejemplo, de 1 segundo a 15 minutos).
Predeterminado: 180 segundos
image.repository
El contenedor para tirar.
Por defecto: docker.io/newrelic/synthetics-job-runner
image.pullPolicy
La política de atracción.
Por defecto: IfNotPresent
podSecurityContext
Establezca un contexto de seguridad personalizado para el pod Sintético-job-manager.
ping-runtime.enabled
Si se debe implementar o no el tiempo de ejecución del ping persistente. Esto se puede desactivar si no utiliza el monitor de ping.
Por defecto: true
ping-runtime.replicaCount
El número de contenedores de tiempo de ejecución de ping a desplegar. Aumente el replicaCount para escalar el despliegue según sus necesidades de monitoreo de ping.
Por defecto: 1
ping-runtime.image.repository
La imagen del contenedor que se extraerá para el tiempo de ejecución de ping.
Por defecto: docker.io/newrelic/synthetics-ping-runtime
ping-runtime.image.pullPolicy
La política de extracción para el contenedor de tiempo de ejecución de ping.
Por defecto: IfNotPresent
node-api-runtime.enabled
Si se debe implementar o no el tiempo de ejecución de la API de Node.js. Esto se puede desactivar si no utiliza el monitor API con script.
Por defecto: true
node-api-runtime.parallelism
La cantidad de tiempo de ejecución de API de Node.js CronJobs para implementar. La cantidad máxima de trabajos simultáneos de la API de Node.js que se ejecutarán en cualquier momento. Detalles adicionales.
Por defecto: 1
node-api-runtime.completions
La cantidad de tiempos de ejecución de API de Node.js CronJobs que se deben completar por minuto. Aumente esta configuración junto con el paralelismo para mejorar el rendimiento. Esto debe aumentarse cada vez que se aumenta el paralelismo y las terminaciones siempre deben ser al menos mayores o iguales que el paralelismo. . Aumente esta configuración si observa períodos de tiempo sin trabajos de ejecución de API en ejecución. Detalles adicionales.
Por defecto: 6
node-api-runtime.image.repository
La imagen del contenedor que se extraerá para el tiempo de ejecución de la API de Node.js.
Por defecto: docker.io/newrelic/synthetics-node-api-runtime
node-api-runtime.image.pullPolicy
La política de extracción para el contenedor de tiempo de ejecución de la API de Node.js.
Por defecto: IfNotPresent
node-browser-runtime.enabled
Si se debe desplegar o no el tiempo de ejecución browser Node.js. Esto se puede desactivar si no utiliza el script simple o monitor del browser.
Por defecto: true
node-browser-runtime.parallelism
El número de tiempo de ejecución browser Chrome CronJobs para desplegar. La cantidad máxima de trabajos simultáneos browser Chrome que se ejecutarán en cualquier momento. Detalles adicionales.
Por defecto: 1
node-browser-runtime.completions
El número de tiempos de ejecución browser Chrome CronJobs que se deben completar por minuto. Aumente esta configuración junto con el paralelismo para mejorar el rendimiento. Esto debe aumentarse cada vez que se aumenta el paralelismo y las terminaciones siempre deben ser al menos mayores o iguales que el paralelismo. Aumente esta configuración si observa períodos de tiempo sin que se ejecuten trabajos de tiempo de ejecución browser . Detalles adicionales.
Por defecto: 6
node-browser-runtime.image.repository
La imagen del contenedor que se extraerá para el tiempo de ejecución browser Node.js.
Por defecto: docker.io/newrelic/synthetics-node-browser-runtime
node-browser-runtime.image.pullPolicy
La política de extracción para el contenedor de tiempo de ejecución browser Node.js.
Por defecto: IfNotPresent
Consideraciones de tamaño para Kubernetes y Docker
Sugerencia
Las consideraciones de tamaño específicas Docker estarán disponibles pronto.
Si está trabajando en entornos más grandes, es posible que necesite personalizar la configuración del administrador de trabajos para cumplir con los requisitos mínimos para ejecutar el monitor Sintético de manera eficiente. Muchos factores pueden afectar los requisitos de tamaño para el despliegue de un administrador de trabajos de Sintético, entre ellos:
Si se requieren todos los tiempos de ejecución según el uso esperado
El número de trabajos por minuto por tipo de monitor (ping, browser simple o con secuencias de comandos y API con secuencias de comandos)
Duración del trabajo, incluidos los trabajos cuyo tiempo de espera es de aproximadamente 3 minutos
El número de fracasos laborales. En el caso de errores de trabajo, se programan reintentos automáticos cuando un monitor comienza a fallar para proporcionar una lógica de reintento 3/3 incorporada. Estos trabajos adicionales se suman a los requisitos de rendimiento del administrador de trabajos de Sintético.
Además de los ajustes de configuración de tamaño que se enumeran a continuación, se pueden implementar administradores de trabajos de Sintético adicionales con la misma clave de ubicación privada para equilibrar la carga de trabajos en múltiples entornos.
Kubernetes
Cada tiempo de ejecución utilizado por el administrador de trabajos de Kubernetes Sintético se puede dimensionar de forma independiente estableciendo valores en el gráfico de timón.
Se pueden iniciar tiempos de ejecución de ping adicionales para ayudar a ejecutar la carga del monitor de ping aumentando la configuración ping-runtime.replicaCount del valor predeterminado de 1.
La API de Node.js y los tiempos de ejecución browser Node.js se dimensionan de forma independiente mediante una combinación de las configuraciones parallelism y completions. La configuración ideal para estas configuraciones variará según los requisitos del cliente.
La configuración parallelism controla cuántos pods de un tiempo de ejecución particular se ejecutan simultáneamente. La configuración parallelism es el equivalente a la configuración synthetics.heavyWorkers en el minion privado en contenedor (llamadas por minuto). Asegúrese de que su clúster de Kubernetes tenga suficientes recursos disponibles para ejecutar esta cantidad de pods según su solicitud de recursos y sus valores límite.
La configuración completions controla cuántos pods de un tiempo de ejecución particular deben completarse antes de que CronJob pueda iniciar otro trabajo de Kubernetes para ese tiempo de ejecución. Tenga en cuenta la diferencia entre un trabajo de Kubernetes (J mayúscula) y un trabajo de monitor Sintético. Para mejorar la eficiencia, completions debe establecerse entre 6 y 10 veces el valor parallelism . Esto puede ayudar a minimizar la ineficiencia de "cerca del final de las finalizaciones", donde menos del grupo de parallelism podrían terminar ejecutándose mientras el trabajo de Kubernetes espera a que finalicen los completions .
Cuando completions es mayor que 1, el pod con estado "Completado" permanecerá visible en la salida de kubectl get pods -n YOUR_NAMESPACE hasta que se hayan cumplido todas las finalizaciones definidas en el trabajo de Kubernetes, por ejemplo, 6/6 finalizaciones. Los recursos se liberan del nodo cuando un pod tiene el estado Completado o Fallido.
Una duración del trabajo de Kubernetes de 5 minutos (kubectl get jobs -n YOUR_NAMESPACE) es un objetivo conservador para tener en cuenta la variabilidad en el tiempo que tarda el pod en completarse y cuántos trabajos de Sintético deben ejecutarse por minuto (tasa de trabajos). Las siguientes ecuaciones se pueden utilizar como punto de partida para completions y parallelism para cada tiempo de ejecución. Es posible que sea necesario realizar ajustes en función de las observaciones del crecimiento de la cola de ubicación privada.
completions = 300 / avg job duration (s)
parallelism = synthetics jobs per 5 minutes / completions
Es probable que diferentes tiempos de ejecución tengan diferentes duraciones y tarifas de trabajo de Sintético. La siguiente consulta se puede utilizar para obtener la duración y la tarifa promedio para una ubicación privada.
# non-ping average job duration by runtime type
FROM SyntheticCheck SELECT average(duration)AS'avg job duration'WHEREtype!='SIMPLE'AND location ='YOUR_PRIVATE_LOCATION' FACET type SINCE 1hour ago
# non-ping jobs per minute by runtime type
FROM SyntheticCheck SELECT rate(uniqueCount(id),5 minutes)AS'jobs per 5 minutes'WHEREtype!='SIMPLE'AND location ='YOUR_PRIVATE_LOCATION' FACET type SINCE 1hour ago
Sugerencia
Las consultas anteriores se basan en resultados actuales. Si su ubicación privada no tiene ningún resultado o el administrador de trabajos no está funcionando al máximo, es posible que los resultados de la consulta no sean precisos. En ese caso, pruebe con algunos valores diferentes para completions y parallelism hasta que vea una duración de kubectl get jobs -n YOUR_NAMESPACE de al menos 5 minutos (suficientes finalizaciones) y la cola no crezca (suficiente paralelismo).
Ejemplo
Descripción
parallelism=1
completions=1
El tiempo de ejecución ejecutará 1 trabajo Sintético por minuto. Después de que se complete 1 trabajo, la configuración CronJob comenzará un nuevo trabajo en el siguiente minuto. Throughput will be extremely limited with this configuration.
parallelism=1
completions=6
El tiempo de ejecución ejecutará 1 trabajo de Sintético a la vez. Una vez finalizado el trabajo, se iniciará un nuevo trabajo inmediatamente. Una vez que se complete el número de trabajos de configuración completions , la configuración CronJob iniciará un nuevo trabajo de Kubernetes y restablecerá el contador de finalización. Throughput will be limited, but slightly better. Un único trabajo de Sintético de larga duración bloqueará el procesamiento de cualquier otro trabajo de Sintético de este tipo.
parallelism=3
completions=24
El tiempo de ejecución ejecutará 3 trabajos de Sintético a la vez. Una vez completado cualquiera de estos trabajos, se iniciará un nuevo trabajo inmediatamente. Una vez que se complete el número de trabajos de configuración completions , la configuración CronJob iniciará un nuevo trabajo de Kubernetes y restablecerá el contador de finalización. Throughput is much better with this or similar configurations. Un único trabajo de Sintético de larga duración tendrá un impacto limitado en el procesamiento de otros trabajos de Sintético de este tipo.
Si los trabajos de Sintético tardan más en completarse, se necesitarán menos terminaciones para llenar 5 minutos con trabajos, pero se necesitarán más módulos paralelos. De manera similar, si es necesario procesar más trabajos de Sintético por minuto, se necesitarán más pods paralelos. La configuración parallelism afecta directamente la cantidad de trabajos de Sintético por minuto que se pueden ejecutar. Un valor demasiado pequeño y la cola puede crecer. Un valor demasiado grande y los nodos pueden verse limitados en recursos.
Si su configuración parallelism funciona bien para mantener la cola en cero, establecer un valor más alto para completions que el calculado a partir de 300 / avg job duration puede ayudar a mejorar la eficiencia de dos maneras:
Adáptese a la variabilidad en la duración de los trabajos de modo que al menos 1 minuto esté ocupado con trabajos de Sintético, que es la duración mínima de CronJob.
Reduzca el número de ciclos de terminación para minimizar la ineficiencia de "acercarse al final de las terminaciones", donde el siguiente conjunto de terminaciones no puede comenzar hasta que se complete el trabajo final.
Es importante tener en cuenta que el valor completions no debe ser demasiado grande o CronJob experimentará un evento de advertencia como el siguiente:
8m40s Warning TooManyMissedTimes cronjob/synthetics-node-browser-runtime too many missed start times: 101. Set or decrease .spec.startingDeadlineSeconds or check clock skew
Sugerencia
Tenga en cuenta que New Relic no es responsable de las modificaciones que realice en los archivos del administrador de trabajos de Sintético.