AVISO EOL
A partir de abril de 2022, no admitimos la capacidad C SDK. Para obtener más detalles, consulte nuestra publicación en el foro de soporte.
Rastreo distribuido te permite ver el recorrido completo de tus solicitudes a lo largo de un sistema distribuido. El SDK de C admite rastreo estándar distribuido con muestreo head-based. No es compatible con la característica llamada Infinite Tracing o W3C Trace Context.
El SDK de C requiere que instrumentes manualmente tus servicios de C, a diferencia de la instrumentación automática de otros agentes de New Relic. Esto significa que necesita agregar algunas líneas a su código para usar el SDK de C y luego agregar una configuración adicional para habilitar rastreo distribuido.
A continuación le indicamos cómo empezar:
- instrumento un programa de muestra (recomendado): una forma rápida de comenzar
- Transacción de instrumentos y solicitudes HTTP.
Sugerencia
Si desea obtener más información antes de comenzar, consulte estos temas:
Cómo funciona el muestreo de tramos explica las opciones de distribución del rastreo.
Impactos en APM le indica qué esperar si es un usuario actual
pero no ha configurado rastreo distribuido.
Instrumento un programa de muestra (recomendado):
Esta es una forma rápida de ver cómo instalar el SDK de C y un servicio con rastreo estándar distribuido.
Antes de comenzar con los pasos principales:
- Necesitará una cuenta de New Relic para configurar rastreo distribuido. Si aún no tiene una, puede crear rápidamente una cuenta gratuita. Tenga en cuenta que este enlace lo llevará a otro sitio para completar el registro, pero puede regresar aquí y seguir los pasos de configuración a continuación.
- Asegúrate de cumplir con los requisitos.
Paso 1. Identificar servicios
Averigüe qué servicios se relacionan con su solicitud para que pueda instrumentar cada uno de ellos para enviar datos de traza a New Relic.
Paso 2. Instrumentar cada servicio con un agente de APM
Tenemos un ejemplo de cómo instalar el SDK de C y utilizar una aplicación de muestra para que comience a informar la telemetría a New Relic. Una vez que comprenda cómo funciona, podrá aplicar los principios a cada uno de los servicios C que participan en sus solicitudes. Si algunos de sus servicios utilizan otros idiomas, simplemente siga los pasos de instalación para esos idiomas.
Antes de pasar al servicio de muestra a continuación, tenga en cuenta que deberá crear un newrelic_app_config_t
predeterminado, pero también deberá agregar distributed_tracing.enabled
y configurarlo en true
:
#include <stdlib.h>#include <stdio.h>#include <unistd.h>
/** A standalone example that demonstrates to users how to* configure logging, configure an app, connect an app,* start a transaction and a segment, and cleanly destroy* everything.*/#include "libnewrelic.h"
int main(void) { newrelic_app_t* app; newrelic_txn_t* txn; newrelic_app_config_t* config; newrelic_segment_t* seg;
config = newrelic_create_app_config("<YOUR_APP_NAME>", "9931ae06b54780ab846c16fc602b5778ead3907f"); config->distributed_tracing.enabled = true; ...
Para probar el programa de muestra, haga clic aquí.
Paso 3. Ver traza
Después de instrumentar cada uno de sus servicios con el agente APM, genere algo de tráfico en su aplicación para que podamos capturar alguna traza. A continuación se muestran algunas formas de ver su traza en la UI:
Para obtener más ayuda para encontrar su traza en la UI:
Transacción de instrumentos y solicitudes HTTP.
Para transacciones que ocurren en múltiples servicios, la carga útil del rastreo distribuido contiene información que permite a New Relic unirlas en una traza de la transacción completa. Sin embargo, si los servicios de New Relic-monitor no se envían el contexto de traza entre sí, los detalles de la traza estarán incompletos. Para obtener más información, consulte la documentación sobre cómo pasar el encabezado de API de rastreo distribuido y la documentación de rastreo distribuido de C SDK en GitHub.
Si quieres... | Utilizar esta |
---|---|
Crear y devolver una carga útil para enviarla al servicio llamado | |
Aceptar una carga útil enviada desde el primer servicio. | Esto unirá estos servicios en una traza. |
Devuelve una representación de cadena JSON codificada en base64 de la carga útil | Esto ofrece el mismo comportamiento que |
Acepte una cadena codificada en base64 para la carga útil | Esto ofrece el mismo comportamiento que |