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.
El agente Go sigue este orden de precedencia para la configuración. Si está habilitada, la configuración del lado del servidor anula los valores correspondientes de all en la estructura newrelic.Config , incluso si los valores del lado del servidor se dejan en blanco.
Si la configuración del lado del servidor está habilitada con el agente Go, anula los valores correspondientes a all en la estructura newrelic.Config , incluso si los valores del lado del servidor se dejan en blanco.
Aquí hay descripciones detalladas de cada método de configuración:
La configuración del lado del servidor está disponible con las versiones 2.7.0 o superiores del agente Go. Esto le permite configurar ciertos ajustes en la UI. Esto aplica sus cambios automáticamente a todos los agentes incluso si se ejecutan en varios hosts. Cuando esté disponible, este documento incluye las etiquetas de la UI para la configuración del lado del servidor en opciones de configuración individuales como Server-side label.
Aún debes llamar newrelic.NewApplication() en tu proceso de solicitud siguiendo los pasos descritos en la configuración en proceso. Las opciones de configuración establecidas en el lado del servidor sobrescribirán las establecidas localmente. Dado que no todas las opciones de configuración están disponibles en el lado del servidor, es posible que desees actualizar tu estructura newrelic.Config .
Advertencia
Si la configuración del lado del servidor está habilitada, el agente ignora cualquier valor en la estructura newrelic.Config que could se establezca en la UI. Incluso si el valor de la UI está vacío, el agente lo trata como un valor vacío y no utiliza el valor newrelic.Config.
Usted configura su agente Go desde la estructura local en proceso newrelic.Config . Se puede acceder a esta estructura al llamar a newrelic.NewApplication().
Agregue lo siguiente en la función main o en un bloque init :
Tenga en cuenta el uso de os.Getenv para leer su clave de licencia del entorno en lugar de codificarla como un valor literal de cadena pasado a newrelic.ConfigLicense. Le recomendamos que no coloque clave de licencia u otra información confidencial en su código fuente, ya que eso puede resultar en que se almacenen en su repositorio SCM y posiblemente se revelen a partes no autorizadas.
Actualice los valores en la estructura newrelic.Config para configurar su aplicación usando newrelic.ConfigOption . Estas son funciones que aceptan un puntero a la estructura newrelic.Config . Agregue newrelic.ConfigOptionmensajes adicionales para configurar aún más su aplicación. Por ejemplo, puede utilizar una de las opciones predefinidas para realizar una configuración común:
// add more specific configuration of the agent within a custom ConfigOption
config.HighSecurity =true
config.CrossApplicationTracer.Enabled =false
},
)
Cambiar los ajustes de configuración
Para realizar cambios en la configuración del agente Go, establezca los valores en la estructura newrelic.Config desde un newrelic.ConfigOption personalizado. Por ejemplo, para desactivar temporalmente el monitoreo de New Relic con fines de prueba, cambie el valor de Enabled a false:
En este y los siguientes ejemplos, config representa su estructura de configuración de New Relic, aunque es posible que le haya dado un nombre de variable diferente cuando instaló el agente Go e inició la configuración en su aplicación.
Especifica su clave de licencia de New Relic, utilizada para asociar la métrica de su aplicación con una cuenta de New Relic. La licencia y el nombre de la aplicación se configuran como parte del proceso de instalación de New Relic.
Para informar datos a varias aplicaciones al mismo tiempo, especifique una lista de nombres separados por un punto y coma. No coloques un espacio antes del punto y coma. Por ejemplo:
Esto puede ser útil para instalar New Relic en un entorno de desarrollo o para propósitos de resolución de problemas. Cuando Enabled se establece en false:
El agente de New Relic Go no se comunicará con el recolector de New Relic.
El agente no generará gorutines.
La clave de licencia no es necesaria durante la instalación.
El modo de alta seguridad impone ciertas configuraciones de seguridad y evita que se anulen, de modo que el agente no envíe datos confidenciales. El modo de alta seguridad hace lo siguiente:
Activa SSL
Desactiva el informe de cadenas de mensajes de error
Desactiva los informes de evento personalizado
Esta configuración debe coincidir con la configuración de cuenta correspondiente en la UI. Por ejemplo:
El agente se comunica con New Relic a través de HTTPS de forma predeterminada, y New Relic requiere HTTPS para todo el tráfico hacia APM y nuestra API REST.
Controla si se utiliza HTTPS o HTTP para enviar datos a New Relic. El agente se comunica con New Relic a través de HTTPS de forma predeterminada (que utiliza el protocolo TLS), y New Relic requiere HTTPS para todo el tráfico hacia APM y la API REST de New Relic.
Para mayor flexibilidad, puede establecer muchas opciones de configuración estableciendo variables de entorno en lugar de codificarlas en el código fuente de su aplicación. Para usarlos, agrega una llamada a ConfigFromEnvironment() entre tus otras opciones de configuración:
Tenga en cuenta que las variables de entorno se leerán y sus entradas correspondientes en la estructura newrelic.Config se actualizarán en el punto de la lista de opciones donde aparece newrelic.ConfigFromEnvironment() . Si hay opciones de configuración adicionales enumeradas después de ConfigFromEnvironment, pueden anular los valores establecidos por ConfigFromEnvironment.
Por ejemplo, si se establecen las siguientes variables de entorno:
No todas las opciones de configuración posibles pueden establecerse mediante variables de entorno. La tabla de variables y funciones de entorno en el colapsador a continuación enumera todas las funciones de configuración disponibles y sus correspondientes variables de entorno. Aunque cualquier opción de configuración con nombre se puede configurar asignando directamente un valor al campo correspondiente en la estructura Config , recomendamos utilizar funciones de configuración y/o variables de entorno siempre que sea posible.
A continuación se ofrecen algunos consejos sobre cómo utilizar la mesa:
Si una variable de entorno aparece en la tabla, entonces puede configurar la opción correspondiente configurando la variable de entorno nombrada. También debe incluir la función ConfigFromEnvironment() , que hará que el agente acepte todas las NEW_RELIC_* variables de entorno.
Si aparece una función de configuración, puede usar esa función para configurar la opción correspondiente en lugar de usar ConfigFromEnvironment(). Tenga en cuenta que las funciones de configuración enumeradas en el programa, incluida ConfigFromEnvironment(), se resuelven en el orden en que aparecen en el código. Esto significa que si crea una variable de entorno y llama a la función ConfigFromEnvironment(), sobrescribirá la configuración correspondiente que haya establecido previamente usando una función específica. Las opciones de configuración posteriores a ConfigFromEnvironment() anularán las funciones de configuración y las variables de entorno anteriores.
Consulte la documentación aquí y en el sitio de documentación de Go para obtener más información sobre cómo utilizar cada función.
Llamar a una de las funciones enumeradas para habilitar una característica subordinada también habilita la característica principal y/o establece otros valores de configuración:
ConfigAppLogForwardingEnabled(true) establece ApplicationLogging.Forwarding.Enabled=true pero también establece ApplicationLogging.Enabled=true.
ConfigAppLogForwardingEnabled(false) establece ApplicationLogging.Forwarding.Enabled=false pero también establece ApplicationLogging.Forwarding.MaxSamplesStored=0.
ConfigAppLogDecoratingEnabled(true) establece ApplicationLogging.LocalDecorating.Enabled=true pero también establece ApplicationLogging.Enabled=true.
ConfigAppLogDecoratingEnabled(false) establece ApplicationLogging.LocalDecorating.Enabled=false pero no afecta ApplicationLogging.Enabled.
ConfigAppLogMetricsEnabled(true) establece ApplicationLogging.Metrics.Enabled=true pero también establece ApplicationLogging.Enabled=true.
ConfigAppLogMetricsEnabled(false) establece ApplicationLogging.Metrics.Enabled=false pero no afecta ApplicationLogging.Enabled.
Nota de tabla 2:
Al configurar Logger mediante la variable de entorno NEW_RELIC_LOG, el tipo de logger utilizado depende del valor de NEW_RELIC_LOG_LEVEL. Si la última variable está definida y tiene el valor debug, Debug, DEBUG, d o D, entonces se utiliza un logger de nivel de depuración en lugar de uno estándar. NEW_RELIC_LOG puede tener los valores stdout, Stdout, STDOUT, stderr, Stderr o STDERR.
Sugerencia
Las variables de entorno deben tener un valor que no esté vacío para que newrelic.ConfigFromEnvironment las pueda leer.
Establecer etiqueta de versión
Configurar NEW_RELIC_METADATA_SERVICE_VERSION creará una etiqueta, tag.service.version en los datos del evento. En este contexto, la versión del servicio es la versión de su código que se implementa, en muchos casos una versión semántica como 1.2.3 pero no siempre. Enviar esta información le permite facetar su telemetría según la versión del software desplegar para que pueda identificar rápidamente qué versiones de su software están produciendo los errores.
Monitoreo de IA
Esta sección incluye la configuración de Go agente para configurar el monitoreo de IA.
Importante
Si el rastreo distribuido está deshabilitado o el modo de alta seguridad está habilitado, el monitoreo de IA no recopilará datos de IA.
Cuando se establece en true, permite al agente capturar respuestas transmitidas. Si se establece en false, el agente no capturará datos de eventos sobre las respuestas transmitidas, pero aún puede capturar métricas y intervalos. La duración del lapso finalizará cuando finalice la llamada a la función LLM. Cuando se establece en true, la duración del intervalo finaliza cuando se lee el resultado final de la secuencia.
Si se establece en false, agente omitirá el contenido de entrada y salida (como cadenas de texto de símbolo y respuestas) capturado en el evento LLM. Esta es una configuración de seguridad opcional si no desea registrar datos confidenciales enviados y recibidos de sus LLM.
Configuración personalizada del evento
Puedes crear eventos personalizados y ponerlos a disposición para consultas y análisis.
Los eventos de transacción se utilizan para recopilar eventos correspondientes a solicitudes web y tareas en segundo plano. Los datos del evento permiten que la UI de New Relic muestre información adicional como histograma y percentil.
TransactionEvents.Attributes es una estructura con tres campos:
Enabled bool
Include []string
Exclude []string
Utilice TransactionEvents.Attributes.Enabled para activar o desactivar la colección de atributos para el evento de transacción. Utilice Include y Exclude para incluir o excluir un atributo específico.
Un ejemplo de exclusión de un segmento de atributo denominado allAgentAttributeNames del evento de transacción:
Define el número máximo de eventos de transacción por minuto que se enviarán a New Relic, hasta el máximo predeterminado de 10,000 eventos de transacción.
Configuración del selector de errores
Las siguientes configuraciones se utilizan para configurar el selector de errores:
Sugerencia
Para obtener una descripción general de la configuración de errores en New Relic, consulte Administrar errores en APM.
newrelic.ConfigSetErrorGroupCallbackFunction opción de configuración
Cuando no es nulo, el agente aplicará la función de devolución de llamada definida por el usuario a todos los errores detectados en el momento de la recolección, aplicándoles un grupo de errores.
Tipo
Entero
Por defecto
Los códigos de error 399 e inferiores y 404 se ignoran.
Esto controla qué códigos de respuesta HTTP se ignoran como errores.
Los códigos de respuesta mayores o iguales a 100 y estrictamente menores a 400 se ignoran de forma predeterminada y nunca deben especificarse al llamar a esta función. Los códigos de respuesta 0, 5 y 404 se incluyen en la lista de forma predeterminada, pero deben especificarse al agregarlos a la lista de ignorados.
La forma predeterminada de esta función es:
config.ErrorCollector.IgnoreStatusCodes =[]int{
0,// gRPC OK
5,// gRPC NOT_FOUND
http.StatusNotFound,// 404
}
También puede agregar códigos de respuesta como HTTP, como http.StatusNotFound arriba.
Importante
Si se utiliza, la configuración del lado del servidor anulará cualquier valor establecido en la estructura newrelic.Config . Por lo tanto, para ignorar 404 cuando la configuración del lado del servidor está habilitada, debe incluir 404 en la configuración establecida en la UI.
Para agregar el código de respuesta HTTP 418 a la lista de ignorados predeterminada, que incluye 0, 5 y 404:
ErrorCollector.Attributes es una estructura con tres campos:
Enabled bool
Include []string
Exclude []string
Utilice ErrorCollector.Attributes.Enabled para activar o desactivar la colección de atributos en caso de errores. Utilice Include y Exclude para incluir o excluir un atributo específico.
Un ejemplo de cómo excluir de los errores un segmento de atributo denominado allAgentAttributeNames :
Aquí hay configuraciones para cambiar la configuración del rastreador de transacciones. Para obtener más información sobre la traza de la transacción, consulte traza de la transacción.
TransactionTracer.Segments.Attributes es una estructura con tres campos:
Enabled bool
Include []string
Exclude []string
Utilice TransactionTracer.Segments.Attributes.Enabled para activar o desactivar la recopilación de atributos para segmentos de traza de la transacción. Utilice Include y Exclude para incluir o excluir un atributo específico.
Un ejemplo de exclusión de un segmento de atributo llamado allSegmentAttributeNames de la traza:
TransactionTracer.Attributes es una estructura con tres campos:
Enabled bool
Include []string
Exclude []string
Utilice TransactionTracer.Attributes.Enabled para activar o desactivar la recopilación de atributos para la traza de la transacción. Utilice Include y Exclude para incluir o excluir un atributo específico.
Un ejemplo de exclusión de un segmento de atributo llamado allAgentAttributeNames de la traza:
Esto permite la recopilación de almacenamiento de datos instancia métrica (como el host y el puerto) para algún controlador de la base de datos. Estos se informan en la traza de la transacción y como parte de los datos de consulta lenta.
Utilice esto para habilitar la recopilación del nombre de la base de datos en consulta lenta traza y traza de la transacción. El valor predeterminado del atributo habilitado es true.
Cuando true, el agente agregará encabezados de seguimiento de múltiples aplicaciones en las solicitudes salientes y escaneará las solicitudes entrantes en busca de encabezados de seguimiento de múltiples aplicaciones.
El rastreo distribuido y el rastreo multiaplicación no se pueden utilizar simultáneamente. La configuración predeterminada para el agente Go deshabilita el rastreo distribuido y habilita el rastreo multiaplicación.
Rastreo distribuido configuración
Importante
Para habilitar rastreo distribuido se requiere la versión 2.1.0 del agente Go o superior, y deshabilita el rastreo multiaplicación. También tiene efectos sobre otras características. Antes de habilitar, lea la guía de transición.
rastreo distribuido te permite ver el camino que sigue una solicitud a medida que viaja a través de un sistema distribuido.
Cuando rastreo distribuido está habilitado, puedes recopilar span evento.
El seguimiento estándar está activado de forma predeterminada en las versiones 3.16.0 y superiores del agente Go. Esto significa que el agente agregará automáticamente encabezados de rastreo distribuido en las solicitudes salientes y escaneará las solicitudes entrantes en busca de encabezados de rastreo distribuido. Para deshabilitar el rastreo distribuido, establezca el valor en false.
Establezca esto en true para excluir el encabezado New Relic que se adjunta a las solicitudes salientes y, en su lugar, confíe únicamente en los encabezados W3C Trace Context para el rastreo distribuido. Si es false , se utilizan ambos tipos de encabezados.
Configuración del evento span
Span evento son reportados para rastreo distribuido. rastreo distribuido debe estar habilitado para reportar span evento. Estas configuraciones controlan la colección de eventos span:
SpanEvents.Attributes es una estructura con tres campos:
Enabled bool
Include []string
Exclude []string
Utilice SpanEvents.Attributes.Enabled para habilitar o deshabilitar la colección de atributos para el evento span. Utilice Include y Exclude para incluir o excluir un atributo específico.
Un ejemplo de exclusión de un segmento de atributo llamado allSpanAttributeNames de la traza:
Para habilitar Infinite Tracing, habilite rastreo distribuido (establezca config.DistributedTracer.Enabled = true en la estructura newrelic.Config ) y agregue las configuraciones adicionales a continuación. Para ver un ejemplo, consulte Agente de idioma: Configurar rastreo distribuido.
Las siguientes configuraciones están disponibles para la configuración del inicio de sesión de la aplicación en el agente. Para obtener sugerencias sobre cómo utilizar logs en el contexto del agente Go, consulte Go logs en el contexto.
Importante
Requiere la versión 3.17.0 o superior del agente Go
Si true, habilita la recopilación de registro de eventos y registro métrico si estas configuraciones subcaracterísticas también están habilitadas. Si false, no se habilita ninguna característica de instrumentación de registro.
Configure ApplicationLogging llamando a ConfigAppLogEnabled().
Si es true, el agente captura log emitidos por su aplicación y los reenvía a New Relic. ApplicationLogging.Enabled también debe ser true para que esta configuración surta efecto.
Habilite el reenvío de registros llamando a ConfigAppLogForwardingEnabled().
Número de log para enviar por minuto a New Relic. Esta configuración controla el consumo general de memoria cuando se utiliza la característica de reenvío de registros.
Configure ApplicationLogging.Forwarding.MaxSamplesStored llamando a ConfigAppLogForwardingMaxSamplesStored().
Establezca esto en un valor más bajo para reducir la cantidad de líneas log enviadas (puede causar muestreo log ). Establezca esto en un valor más alto para enviar más líneas log .
Cada log recibe la misma prioridad que su transacción asociada. Los registros que ocurren fuera de una transacción recibirán una prioridad aleatoria. Es posible que algunos registros no se incluyan porque están limitados por MaxSamplesStored. Por ejemplo, si el registro MaxSamplesStored se establece en 10 000 y la transacción 1 tiene 10 000 entradas log , solo se registrarán las entradas log de la transacción 1. Si la transacción 1 tiene menos de 10 000 registros, recibirá todos los registros de la transacción 1. Si todavía hay espacio, recibirás todo el registro de la transacción 2, y así sucesivamente.
Si después de todo se registran los registros de transacciones muestreadas y no han alcanzado el límite en MaxSamplesStored, entonces se envían mensajes de registro de transacciones que no estaban en nuestro muestreo. Si queda alguno, se registran mensajes de registro fuera de la transacción.
Si es true, el agente captura métricas relacionadas con las líneas log que envía su aplicación. ApplicationLogging.Enabled también debe ser true para que esta configuración surta efecto.
Configurar ApplicationLogging.Metrics.Enabled llamando a ConfigAppLogMetricsEnabled().
app, err := newrelic.NewApplication(
newrelic.ConfigAppLogMetricsEnabled(true),
)
Configuración métrica de dependencia del módulo
La dependencia del módulo métrica se puede configurar de diversas formas en el agente Go. Module dependency métrica informa la lista de módulos importados utilizados por su aplicación Go para ayudar a facilitar la gestión de la dependencia del código. También incluye la información de la versión de los módulos de tu aplicación.
Importante
Requiere la versión 3.20.0 del agente Go o mas alto
Puede habilitar la configuración de las opciones de su agente Go a través de variables de entorno insertando ConfigFromEnvironment() en su llamada a NewApplication. Si ha hecho esto, puede habilitar o deshabilitar la colección métrica de dependencia del módulo configurando la variable de entorno.
Esta lista de prefijos de ruta de módulo especifica que desea excluir algunos módulos de la información de dependencia reportada por el agente. Se excluirá cualquier módulo cuya ruta import comience con cualquiera de las cadenas de prefijo enumeradas. El valor predeterminado es una lista vacía, lo que significa informar todos los módulos encontrados.
Especifique una lista de cadenas de prefijo de ruta que se excluirán llamando a ConfigModuleDependencyMetricsIgnoredPrefixes.
Si habilitó la configuración de las opciones de su agente Go a través de variables de entorno insertando ConfigFromEnvironment() en su llamada a NewApplication, puede enumerar los prefijos de ruta configurando la variable de entorno.
Normalmente, todas las opciones que establece como parte de la configuración de su agente se informan y son visibles en la UI de New Relic. Si elige excluir algunos módulos para que no se informen a través de la opción ConfigModuleDependencyIgnoredPrefixes , también puede eliminarlos de los datos de configuración. Por ejemplo, si los módulos fueron excluidos por motivos de confidencialidad.
Habilite o deshabilite la redacción de rutas excluidas llamando a ConfigModuleDependencyMetricsRedactIgnoredPrefixes. Si es true, no se informará la lista de prefijos de módulos excluidos. Si false, se informan.
Si habilitó la configuración de las opciones de su agente Go a través de variables de entorno insertando ConfigFromEnvironment() en su llamada a NewApplication, puede enumerar los prefijos de ruta configurando la variable de entorno.
New Relic Interactive aplicación Security Testing (IAST) prueba su aplicación en busca de vulnerabilidades explotables reproduciendo la solicitud HTTP generada con carga vulnerable. Puede habilitar New Relic IAST actualizando el código de su aplicación Go con la configuración que se pasa a la función INIT. También puedes realizar estas configuraciones a través de un archivo YAML o con variables de entorno.
Las opciones configuradas mediante funciones INIT tienen prioridad sobre el entorno o la configuración YAML. Dicho esto, recomendamos habilitar IAST usando un archivo YAML porque esa configuración pasará a otro agente en su entorno.
Instrucciones de configuración
Importe la integración agregando la siguiente dependencia directa a su archivo go.mod .
ConfigSecurityFromEnvironment dirige la integración de nrsecurityagent para obtener toda su información de configuración de las variables de entorno.
err := nrsecurityagent.InitSecurityAgent(
app,
ConfigSecurityFromEnvironment(),
)
ConfigSecurityFromYaml dirige la integración de nrsecurityagent para que lea un archivo externo con formato YAML para obtener sus valores de configuración. La ruta a este archivo debe proporcionarse configurando la variable de entorno NEW_RELIC_SECURITY_CONFIG_PATH.
err := nrsecurityagent.InitSecurityAgent(
app,
ConfigSecurityFromYaml(),
)
El archivo YAML predeterminado tiene este aspecto.
enabled:true
# NR security provides two modes IAST and RASP
# Default is IAST
mode: IAST
# New Relic’s SaaS connection URLs
validator_service_url: wss://csec.nr-data.net
# Following category of security events
# can be disabled from generating.
detection:
rxss:
enabled:true
request:
body_limit:300
Configurar IAST
El agente de seguridad se puede configurar con las siguientes opciones.
Tipo
Booleano
Función de configuración
func(cfg *SecurityConfig){
cfg.Security.Agent.Enabled =true
}
Variable ambiental
NEW_RELIC_SECURITY_AGENT_ENABLED
Por defecto
true
Para deshabilitar completamente todas las funciones de seguridad, establezca este indicador en falso. Al importar e inicializar el agente de seguridad en go, se supone que tiene intención de utilizarlo, por lo que este valor predeterminado es true. Tenga en cuenta que este es el comportamiento opuesto al de agente instrumentado automáticamente. Esta propiedad se lee solo una vez al inicio de la aplicación.
Tipo
Booleano
Función de configuración
nrsecurityagent.ConfigSecurityEnable(false)
Variable ambiental
NEW_RELIC_SECURITY_ENABLED
Por defecto
false
Determina si los datos de seguridad se envían a New Relic o no. Cuando esto está deshabilitado y agente.enabled es verdadero, el módulo de seguridad se ejecutará pero no se enviarán datos. El valor predeterminado es falso.
Tipo
Cadena
Función de configuración
nrsecurityagent.ConfigSecurityMode("IAST")
Variable ambiental
NUEVO_RELIC_SECURITY_MODE
Por defecto
IAST
Modo de suministro de New Relic Security: IAST. El valor predeterminado es IAST. Debido a la naturaleza invasiva del escaneo IAST, NO habilite este modo ni en un entorno de producción ni en un entorno donde se procesen datos de producción.
URL de conexión SaaS de New Relic Security. Este es el extremo al que el agente de seguridad envía datos, debe coincidir con ese entorno que has configurado para el APM agente de Java.
El límite del cuerpo de la solicitud de seguridad establece un límite en la cantidad de memoria que se puede consumir al leer un cuerpo de solicitud en kb. Por defecto, esto es "300".
Instrumentar las partes sensibles a la seguridad de su aplicación
La integración nrgin, nrgrpc, nrmicro, fasthttp o nrmongo ahora contiene código para respaldar el análisis de seguridad de los datos que manejan.
Además, el agente Go realizará escaneo de vulnerabilidades en código instrumentado que contiene segmentos de almacenamiento de datos, operaciones SQL, transacciones y llamadas y extremos HTTP envueltos.