OpenTelemetry C++ es una interesante solución de observabilidad con funcionalidad estable y una amplia base de contribuyentes en una base de código activa. New Relic es compatible con OpenTelemetry y los beneficios que puede proporcionar, como código preparado para el futuro al realizar llamadas de instrumentación independientes del punto final en lugar de adherirse a formatos específicos del proveedor.
Consulte la configuración de New Relic OpenTelemetry para obtener instrucciones detalladas sobre cómo usar OpenTelemetry para trabajar con el idioma de su elección para enviar datos a New Relic.
El repositorio OpenTelemetry C++ tiene muchos buenos ejemplos en GitHub. Consulte CONTRIBUTING.md para obtener más instrucciones sobre cómo crear y utilizar el SDK de OpenTelemetry C++, así como sobre cómo crear y ejecutar los ejemplos.
Ejemplo de inicio rápido
¿Quiere comenzar de inmediato y ver qué puede hacer New Relic sin tener que modificar su código? Siga los pasos a continuación para ver un ejemplo que le permitirá enviar datos a New Relic en poco tiempo.
Cuando esté listo para comenzar a instrumentar, consulte las instrucciones de configuración de New Relic OpenTelemetry y el repositorio de OpenTelemetry C++ CONTRIBUTING.md para obtener más detalles sobre la integración con su código.
1. Configura tu entorno
Asegúrese de tener los requisitos previos descritos en la documentación de New Relic OpenTelemetry.
- Ejecute
git clone https://github.com/open-telemetry/opentelemetry-cpp
. - Copie los archivos de ejemplo
Dockerfile.ubuntu
,docker-compose-collector.yaml
yconfig.dev.yaml
en la raíz del directorio clonado en el paso 1. - Edite
config.dev.yaml
con su clave de licencia y extremo. - Ejecute
docker-compose -f docker-compose-collector.yaml up
. - Verifique que los dos contenedores se estén ejecutando, uno para el recolector y otro para la aplicación C++.
2. Ejecute la aplicación C++
Abra una terminal en el contenedor C++ y ejecute los siguientes comandos:
cd /usr/src/myapp
mkdir build
cd build
rm -rf *
bash$cmake -DCMAKE_BUILD_TYPE=Debug \>-DWITH_METRICS_PREVIEW=ON \>-DWITH_LOGS_PREVIEW=ON \>-DCMAKE_CXX_FLAGS="-Wno-error=deprecated-declarations" \>-DWITH_OTLP=ON \>..cd examples
make
cd otlp
./example_otlp_http
3. Ver tus datos
Verifique que los datos hayan llegado consultando los datos de su cuenta New Relic:
Para ver datos de intervalo: vaya a one.newrelic.com > All capabilities > Query your data e ingrese esta consulta:
FROM Span SELECT * where telemetry.sdk.name = 'opentelemetry'Vea el servicio OpenTelemetry buscando
unknown_service
para obtener más detalles.
Archivos de muestra
docker-compose-collector.yaml
version: '3.7'services: cpp: build: context: . dockerfile: Dockerfile.ubuntu stdin_open: true environment: - OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector:4318 volumes: - ./:/usr/src/myapp otel-collector: image: otel/opentelemetry-collector-contrib stdin_open: true command: ["--config=/etc/otel-collector-config.yml"] volumes: - ./config.dev.yaml:/etc/otel-collector-config.yml ports: - "1888:1888" # pprof extension - "8888:8888" # Prometheus metrics exposed by the collector - "8889:8889" # Prometheus exporter metrics - "13133:13133" # health_check extension - "9411" # Zipkin receiver - "4317:4317" # OTLP gRPC receiver - "4318:4318" # OTLP http receiver - "55680:55679" # zpages extension depends_on: - cpp
Dockerfile.ubuntu
FROM ubuntu:20.04ENV DEBIAN_FRONTEND noninteractive
## Update cache and upgrade imageRUN apt-get -y update && apt-get -y upgrade && apt-get -y dist-upgrade
## Build environment packagesRUN apt-get install -qq -y --ignore-missing \ apt-utils \ automake \ bc \ build-essential \ bzip2 \ cmake \ curl \ git \ libcurl4-openssl-dev \ libssl-dev \ libtool-bin \ make \ pkg-config \ protobuf-compiler \ libprotobuf-dev \ python \ sudo \ tar \ zip \ unzip \ wget \ zlib1g-dev
WORKDIR /setup-tools
ADD ci/setup_ci_environment.sh /setup-toolsADD ci/setup_cmake.sh /setup-toolsADD ci/install_protobuf.sh /setup-tools
RUN /setup-tools/setup_ci_environment.sh \ && /setup-tools/setup_cmake.sh \ && /setup-tools/install_protobuf.sh
WORKDIR /usr/src/myapp
# ENTRYPOINT bashCMD /bin/bash
config.dev.yaml
exporters: newrelic: apikey: 'EDIT_TO_ADD_YOUR_KEY_HERE' timeout: 30s host_override: "otlp.nr-data.net" logging: loglevel: DEBUGreceivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 cors: allowed_origins: - '*'service: pipelines: traces: receivers: - otlp exporters: - logging - newrelic logs: receivers: - otlp exporters: - logging