OpenTelemetry C ++は、安定した機能とアクティブなコードベースの幅広い貢献者を備えたエキサイティングな可観測性ソリューションです。 New Relicは、OpenTelemetryと互換性があり、ベンダー固有の形式に準拠するのではなく、エンドポイントにとらわれないインストルメンテーション呼び出しを行うことによる将来のプルーフコードなど、OpenTelemetryが提供できる利点を備えています。
OpenTelemetryを使用して、選択した言語でデータをNew Relicに送信する方法の詳細については、 NewRelicOpenTelemetryのセットアップを参照してください。
OpenTelemetry C ++リポジトリには、GitHubに多くの優れた例があります。 OpenTelemetry C ++ SDKのビルドと使用、およびサンプルのビルドと実行の詳細については、 CONTRIBUTING.mdを参照してください。
クイックスタートの例
すぐに始めて、コードをインストルメント化せずにNew Relicで何ができるかを確認したいですか?すぐにNewRelicにデータを送信する例については、以下の手順に従ってください。
インストルメンテーションを開始する準備ができたら、コードとの統合の詳細について、NewRelicOpenTelemetryのセットアップ手順とOpenTelemetryC++リポジトリCONTRIBUTING.mdを参照してください。
1.環境を設定します
NewRelicOpenTelemetryのドキュメントに概説されている前提条件があることを確認してください。
git clone https://github.com/open-telemetry/opentelemetry-cpp
を実行します。Dockerfile.ubuntu
、docker-compose-collector.yaml
、およびconfig.dev.yaml
のサンプルファイルを、手順1で複製したディレクトリのルートにコピーします。- ライセンスキーとエンドポイントを使用して
config.dev.yaml
を編集します。 docker-compose -f docker-compose-collector.yaml up
を実行します。- 2つのコンテナーが実行されていることを確認します。1つはコレクター用で、もう1つはC++アプリケーション用です。
2.C++アプリケーションを実行します
C ++コンテナでターミナルを開き、次のコマンドを実行します。
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.データを表示します
New Relic アカウント データをクエリして、データが到着したことを確認します。
スパンデータを表示するには: one.newrelic.com > All capabilities > Query your dataに移動して次のクエリを入力します:
FROM Span SELECT * where telemetry.sdk.name = 'opentelemetry'詳細については、
unknown_service
を検索してOpenTelemetryサービスを表示してください。
サンプルファイル
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