El agente New Relic Ruby instrumentó automáticamente clientes y servidores gRPC que usan la gema grpc (versión 1.0.0 o superior). Se admiten todos los tipos de comunicación: unaria, bidireccional, transmisión de cliente y transmisión de servidor.
Importante
La instrumentación de gRPC requiere la versión 8.10.0 o superior del agente Ruby.
Configuración (todas las configuraciones son opcionales)
Puede configurar la instrumentación de clientes y servidores gRPC por separado. De forma predeterminada, ambas opciones de configuración están configuradas en auto
, que es la abreviatura de automatic
. El comportamiento automático del agente para cada uno es habilitar la instrumentación intentando aprovechar el comportamiento de anteposición del módulo Ruby al principio y recurriendo al comportamiento del método Ruby si se encuentran problemas de compatibilidad conocidos.
Vea opciones y ejemplos adicionales en las secciones siguientes.
Opciones de cliente y servidor
Puede alterar el comportamiento del agente modificando el archivo de configuración de New Relic o configurando variables de entorno. Estas son las opciones que se aplican tanto a clientes como a servidores:
auto
: El valor predeterminado que se habilita mediante la selección automática de comportamiento del método Ruby.disabled
: instrumentación desactivadaprepend
: Fuerza el uso del método Ruby anteponiendochain
: Forzar el uso del método Ruby cadena
Opciones específicas del cliente
Utilice lo siguiente sólo para clientes:
- parámetro del archivo de configuración:
instrumentation.grpc_client
- Variable ambiental:
NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT
Opciones específicas del servidor
Utilice lo siguiente sólo para servidores:
- parámetro del archivo de configuración:
instrumentation.grpc_server
- Variable ambiental:
NEW_RELIC_INSTRUMENTATION_GRPC_SERVER
Ejemplos de configuración de cliente y servidor.
Para deshabilitar la instrumentación del servidor gRPC a través del archivo de configuración:
# newrelic.ymlinstrumentation.grpc_server: disabled
Para deshabilitar la instrumentación del cliente gRPC a través de una variable de entorno:
export NEW_RELIC_INSTRUMENTATION_GRPC_CLIENT=disabled
Verificación
Una vez que se inicia el agente New Relic Ruby, detectará la presencia de la gema grpc
que se ha cargado y luego intentará aplicar la instrumentación gRPC. Cuando tenga éxito en aplicar esta instrumentación para los componentes del cliente y del servidor gRPC, el agente escribirá las siguientes líneas en su archivo de registro (log/newrelic_agent.log
de forma predeterminada):
INFO : Installing New Relic supported gRPC_Client instrumentation using PrependINFO : Installing New Relic supported gRPC_Server instrumentation using Prepend
Uso
Siempre que la instrumentación funcione correctamente (consulte Verificación arriba para confirmar esto), toda la instrumentación realizada por el agente New Relic Ruby debe ser completamente automática y no requerir ninguna modificación en ninguno de los códigos de cliente y/o servidor gRPC existentes.
La instrumentación gRPC del agente New Relic Ruby incluye encabezados de rastreo distribuido en tramos, lo que permite que las llamadas de cliente y servidor de gRPC se conecten a cualquier otro servicio que admita W3C rastreo distribuido. Las solicitudes de gRPC se pueden enviar desde un cliente basado en Ruby a un servidor basado en otro idioma, y un servidor basado en Ruby puede recibir solicitudes provenientes de un cliente basado en otro idioma.
Importante
Las solicitudes de clientes de gRPC no se informarán a New Relic a menos que se generen cuando esté presente una transacción de New Relic existente. Normalmente, esto significa que un método de controlador Rails o un proceso de trabajo en segundo plano está activo y es responsable de la invocación de la solicitud del cliente gRPC. Luego, la solicitud se acumulará bajo la transacción de ese contenedor externo en la UI web de New Relic.
Las solicitudes del servidor gRPC siempre generarán una nueva transacción New Relic y no requerirán ni se acumularán en ninguna transacción New Relic preexistente.
Ver datos
Puede ver los datos de gRPC recopilados en varias páginas de la UI de New Relic.
Página de resumen
En la UI página Resumen, las solicitudes de los clientes de gRPC aparecen como transacciones web y aportan datos a los siguientes gráficos: Web transactions time, Throughput y Error rate.
Pagina de rastreo distribuido
Sugerencia
rastreo distribuido está activado de forma predeterminada en el nuevo agente Ruby, pero si tienes preguntas, consulta rastreo distribuido para tus servicios Ruby.
Consulte los datos de gRPC en la página de rastreo distribuido de la UI:
Vaya a
one.newrelic.com > All capabilities > APM & services
.
Haga clic en su entidad (servicio).
En la sección
Monitor
del panel izquierdo, haga clic en
Distributed tracing
.
Haga clic en un grupo de trazas.
Elija una traza de la lista y haga clic en ella.
Haga clic en
Expand all
.
En la lista resultante de tramos de traza, haga clic en un tramo de traza individual.
Haga clic en la pestaña
Attributes
en el panel derecho.
Client instances:
Deberían aparecer los atributos
grpc_status
,grpc_type
,http.method
yhttp.url
. En el caso de una solicitud de cliente fallida (que tendrá un valorgrpc_status
distinto de0
), aparecerá un atributogrpc_message
adicional con el mensaje de estado de gRPC.Server instances:
Los atributos
request.grpc_type
,request.method
yrequest.uri
deberían aparecer.
Siempre que tanto la aplicación cliente como la del servidor estén siendo monitoreadas por un agente New Relic con soporte para gRPC (en Ruby u otro idioma), el mapa rastreo distribuido debe hacer lo siguiente:
- Muestra la aplicación cliente y servidor.
- Informe sobre cuántos tipos de llamadas distintas se realizaron entre ellos.
En el caso de una excepción de Ruby basada en gRPC, la información sobre la excepción aparecerá en la página Events > Errors .
Apoyo y comentarios
Cuando se comunique con New Relic para obtener soporte y/o comentarios relacionados con la instrumentación gRPC del agente Ruby de New Relic, intente tener respuestas a las siguientes preguntas:
- ¿Qué versión de la gema
grpc
estás usando? - ¿Utilizas New Relic Infinite Tracing?
- ¿Cómo describiría el entorno de su aplicación? framework, versión Ruby, otras tecnologías clave utilizadas)
- ¿Para qué usas gRPC?
- ¿Utiliza Ruby para clientes gRPC?
- ¿Utiliza un idioma diferente para los clientes de gRPC?
- ¿Utiliza Ruby para servidores gRPC?
- ¿Utiliza un idioma diferente para los servidores gRPC?
- ¿A dónde llamas a tu código de cliente gRPC? (desde un controlador, un trabajo en segundo plano, etc.)
- ¿Qué estrategia/estrategias estás utilizando para enviar tus datos? (unario, bidireccional, streaming de cliente, streaming de servidor)