{"id":17726603,"url":"https://github.com/sjinks/opentelemetry-resource-detectors-cpp","last_synced_at":"2025-08-10T11:10:56.721Z","repository":{"id":259286084,"uuid":"862077641","full_name":"sjinks/opentelemetry-resource-detectors-cpp","owner":"sjinks","description":"Resource Detectors for OpenTelemetry (C++)","archived":false,"fork":false,"pushed_at":"2025-08-07T20:56:42.000Z","size":225,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-07T22:27:55.516Z","etag":null,"topics":["opentelemetry","opentelemetry-cpp","opentelemetry-resource-detector","resource-detector"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sjinks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://www.paypal.com/donate/?hosted_button_id=SAG6877JDJ3KU","https://send.monobank.ua/jar/7rosVfiwKM"]}},"created_at":"2024-09-24T02:06:41.000Z","updated_at":"2025-08-07T20:56:33.000Z","dependencies_parsed_at":"2025-06-07T00:22:43.021Z","dependency_job_id":"4087d6cd-40e0-4465-a9d8-06734314eb08","html_url":"https://github.com/sjinks/opentelemetry-resource-detectors-cpp","commit_stats":null,"previous_names":["sjinks/opentelemetry-resource-detectors-cpp"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/sjinks/opentelemetry-resource-detectors-cpp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjinks%2Fopentelemetry-resource-detectors-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjinks%2Fopentelemetry-resource-detectors-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjinks%2Fopentelemetry-resource-detectors-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjinks%2Fopentelemetry-resource-detectors-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sjinks","download_url":"https://codeload.github.com/sjinks/opentelemetry-resource-detectors-cpp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sjinks%2Fopentelemetry-resource-detectors-cpp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269713884,"owners_count":24463244,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["opentelemetry","opentelemetry-cpp","opentelemetry-resource-detector","resource-detector"],"created_at":"2024-10-25T17:06:12.880Z","updated_at":"2025-08-10T11:10:56.675Z","avatar_url":"https://github.com/sjinks.png","language":"C++","readme":"# opentelemetry-resource-detectors-cpp\n\n[![Build and Test](https://github.com/sjinks/opentelemetry-resource-detectors-cpp/actions/workflows/ci.yml/badge.svg)](https://github.com/sjinks/opentelemetry-resource-detectors-cpp/actions/workflows/ci.yml)\n[![CodeQL](https://github.com/sjinks/opentelemetry-resource-detectors-cpp/actions/workflows/codeql.yml/badge.svg)](https://github.com/sjinks/opentelemetry-resource-detectors-cpp/actions/workflows/codeql.yml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=sjinks_opentelemetry-resource-detectors-cpp\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=sjinks_opentelemetry-resource-detectors-cpp)\n\nResource detectors for OpenTelemetry (C++).\n\nThe library provides the following resource detectors:\n* [container](https://opentelemetry.io/docs/specs/semconv/resource/container/) (`container.id`);\n* [process](https://opentelemetry.io/docs/specs/semconv/resource/process/) (`process.command_line`/`process.command` and `process.command_args`, `process.group_leader.pid`, `process.interactive`, `process.owner`, `process.parent_pid`, `process.pid`, `process.real_user.id`, `process.real_user.name`, `process.saved_user.id`, `process.saved_user.name`, `process.session_leader.pid`, `process.user.id`, `process.user.name`);\n* [OS](https://opentelemetry.io/docs/specs/semconv/resource/os/) (`os.type`, `os.version`) and [host](https://opentelemetry.io/docs/specs/semconv/resource/host/) (`host.arch`, `host.name`).\n\n| Resource                     | Supported OSes          |\n|------------------------------|-------------------------|\n| `container.id`               | Linux                   |\n| `process.command`            | Linux, MacOS            |\n| `process.command_args`       | Linux, MacOS            |\n| `process.command_line`       | Windows                 |\n| `process.group_leader.pid`   | Linux, MacOS            |\n| `process.interactive`        | Linux, MacOS, Windows   |\n| `process.owner`              | Linux, MacOS, Windows   |\n| `process.parent_pid`         | Linux, MacOS, Windows   |\n| `process.pid`                | Linux, MacOS, Windows   |\n| `process.real_user.id`       | Linux, MacOS            |\n| `process.real_user.name`     | Linux, MacOS, Windows   |\n| `process.saved_user.id`      | Linux                   |\n| `process.saved_user.name`    | Linux                   |\n| `process.session_leader.pid` | Linux, MacOS            |\n| `process.user.id`            | Linux, MacOS            |\n| `process.user.name`          | Linux, MacOS            |\n| `os.type`                    | Linux, MacOS, Windows   |\n| `os.version`                 | Linux, MacOS, Windows   |\n| `host.arch`                  | Linux, MacOS, Windows   |\n| `host.name`                  | Linux, MacOS, Windows   |\n\n## Installation\n\n```shell\ncmake -B build\ncmake --build build\ncmake --install build\n```\n\n**Dependencies:** [opentelemetry-cpp](https://github.com/open-telemetry/opentelemetry-cpp)\n\n**Development Dependencies:** [Google Test](https://github.com/google/googletest) (required to build and run tests), [JSON for Modern C++](https://github.com/nlohmann/json) (required to build examples)\n\n### CMake Options\n\n| Option Name                  | Description                      | Default Value |\n|------------------------------|----------------------------------|---------------|\n| `WITH_TESTING`               | Whether to enable tests          | `ON`          |\n| `WITH_EXAMPLES`              | Whether to build examples        | `ON`          |\n| `INSTALL_RESOURCE_DETECTORS` | Whether to install the library   | `ON`          |\n\n## Usage\n\n```cmake\nfind_package(opentelemetry_resource_detectors CONFIG REQUIRED)\ntarget_link_libraries(\n    my_target\n    PRIVATE\n        opentelemetry_resource_detectors::opentelemetry_resource_detectors\n)\n```\n\n```cpp\n#include \u003cmemory\u003e\n#include \u003cvector\u003e\n\n#include \u003copentelemetry/exporters/ostream/span_exporter_factory.h\u003e\n#include \u003copentelemetry/sdk/common/attribute_utils.h\u003e\n#include \u003copentelemetry/sdk/resource/resource.h\u003e\n#include \u003copentelemetry/sdk/resource/resource_detector.h\u003e\n#include \u003copentelemetry/sdk/trace/simple_processor.h\u003e\n#include \u003copentelemetry/sdk/trace/simple_processor_factory.h\u003e\n#include \u003copentelemetry/sdk/trace/tracer_provider.h\u003e\n#include \u003copentelemetry/sdk/trace/tracer_provider_factory.h\u003e\n#include \u003copentelemetry/trace/provider.h\u003e\n\n#include \u003copentelemetry/resource/wwa/container_resource_detector.h\u003e\n#include \u003copentelemetry/resource/wwa/os_resource_detector.h\u003e\n#include \u003copentelemetry/resource/wwa/process_resource_detector.h\u003e\n\nint main()\n{\n    std::vector\u003cstd::unique_ptr\u003copentelemetry::sdk::resource::ResourceDetector\u003e\u003e detectors;\n    detectors.emplace_back(std::make_unique\u003cwwa::opentelemetry::resource::container_resource_detector\u003e());\n    detectors.emplace_back(std::make_unique\u003cwwa::opentelemetry::resource::os_resource_detector\u003e());\n    detectors.emplace_back(std::make_unique\u003cwwa::opentelemetry::resource::process_resource_detector\u003e());\n\n    auto resource = opentelemetry::sdk::resource::Resource::Create({});\n\n    for (const auto\u0026 detector : detectors) {\n        auto detected = detector-\u003eDetect();\n        resource      = resource.Merge(detected);\n    }\n\n    // Now that the resource is ready, pass it to providers\n\n    auto exporter  = opentelemetry::exporter::trace::OStreamSpanExporterFactory::Create();\n    auto processor = opentelemetry::sdk::trace::SimpleSpanProcessorFactory::Create(\n        std::move(exporter)\n    );\n\n    auto provider =\n        opentelemetry::sdk::trace::TracerProviderFactory::Create(\n            std::move(processor),\n            resource               // \u003c===\n        );\n\n    const opentelemetry::nostd::shared_ptr\u003copentelemetry::trace::TracerProvider\u003e api_provider(\n        provider.release()\n    );\n\n    opentelemetry::trace::Provider::SetTracerProvider(api_provider);\n\n    // Your code goes here\n}\n```\n\n**Note:** unlike the OpenTelemetry JS SDK, the C++ SDK merges resources differently. In the JS SDK, `Resource.Merge()` overwrites old attributes. In the C++ SDK, it preserves old attributes.\n","funding_links":["https://www.paypal.com/donate/?hosted_button_id=SAG6877JDJ3KU","https://send.monobank.ua/jar/7rosVfiwKM"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjinks%2Fopentelemetry-resource-detectors-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsjinks%2Fopentelemetry-resource-detectors-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsjinks%2Fopentelemetry-resource-detectors-cpp/lists"}