{"id":19881102,"url":"https://github.com/f5/otel-weaver","last_synced_at":"2025-05-02T13:32:30.362Z","repository":{"id":210783489,"uuid":"702554064","full_name":"f5/otel-weaver","owner":"f5","description":"OTel Weaver a schema-first approach to OpenTelemetry (status: POC)","archived":false,"fork":false,"pushed_at":"2024-03-26T16:36:30.000Z","size":2850,"stargazers_count":4,"open_issues_count":11,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-07T02:35:35.381Z","etag":null,"topics":["application-telemetry-schema","client-sdk-generator","search","semantic-convention-registry"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/f5.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-10-09T14:33:30.000Z","updated_at":"2024-01-26T00:10:23.000Z","dependencies_parsed_at":"2024-02-10T01:40:10.026Z","dependency_job_id":null,"html_url":"https://github.com/f5/otel-weaver","commit_stats":null,"previous_names":["f5/otel-weaver"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5%2Fotel-weaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5%2Fotel-weaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5%2Fotel-weaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/f5%2Fotel-weaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/f5","download_url":"https://codeload.github.com/f5/otel-weaver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252046281,"owners_count":21685984,"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","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":["application-telemetry-schema","client-sdk-generator","search","semantic-convention-registry"],"created_at":"2024-11-12T17:13:17.405Z","updated_at":"2025-05-02T13:32:29.979Z","avatar_url":"https://github.com/f5.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e Important Note: This project has been moved to the [OpenTelemetry Weaver project](https://github.com/open-telemetry/weaver).\n\n# OTel Weaver (status: Archived)\n\n## Overview\n\n\u003e At this stage, the project is being used as a **Proof of Concept** to explore and\n\u003e refine the 'Application Telemetry Schema: Vision and Roadmap' [OTEP](https://github.com/open-telemetry/oteps/blob/main/text/0243-app-telemetry-schema-vision-roadmap.md),\n\u003e which has been approved and merged.\n\u003e\n\u003e This project is a **work in progress and is not ready for production use**.\n\nOTel Weaver is a CLI tool that enables users to:\n\n- Search for and retrieve information from a semantic convention registry or a telemetry schema.\n- Resolve a semantic convention registry or a telemetry schema.\n- Generate a client SDK/API from a telemetry schema.\n\n## Install\n\nCurrently, there is no binary distribution available. To install the tool, you\nmust build it from source. To do so, you need to have Rust installed on your\nsystem (see [Install Rust](https://www.rust-lang.org/tools/install)).\n\nTo build the tool:\n- In debug mode, run the following command:\n  ```\n  cargo build\n  ```\n- In release mode, run the following command:\n  ```\n  cargo build --release\n  ```\n\nThe generated `weaver` binary will be located in the `target/debug` directory\nfor debug mode or the `target/release` directory for release mode.\n\n## Usage\n\n```\nUsage: weaver [OPTIONS] [COMMAND]\n\nCommands:\n  resolve     Resolve a semantic convention registry or a telemetry schema\n  gen-client  Generate a client SDK or client API\n  languages   List all supported languages\n  search      Search in a semantic convention registry or a telemetry schema\n  help        Print this message or the help of the given subcommand(s)\n\nOptions:\n  -d, --debug...  Turn debugging information on\n  -h, --help      Print help\n  -V, --version   Print version\n```\n\n### Command `search`\n\nThis command provides an interactive terminal UI, allowing users to search for\nattributes and metrics specified within a given semantic convention registry or\na telemetry schema (including dependencies).\n\nTo search into the OpenTelemetry Semantic Convention Registry, run the following\ncommand:\n\n```bash\nweaver search registry https://github.com/open-telemetry/semantic-conventions.git model \n```\n\nTo search into a telemetry schema, run the following command:\n\n```bash\nweaver search schema demo/app-telemetry-schema.yaml\n```\n\nThis search engine leverages [Tantivy](https://github.com/quickwit-oss/tantivy)\nand supports a simple [search syntax](https://docs.rs/tantivy/latest/tantivy/query/struct.QueryParser.html)\nin the search bar.\n\n### Command `resolve`\n\nThis command resolves a schema or a semantic convention registry (not yet\nimplemented) and displays the result on the standard output.\nAlternatively, the result can be written to a file if specified using the\n`--output` option. This command is primarily used for validating and debugging\ntelemetry schemas and semantic convention registries.\n\n```bash\nweaver resolve schema telemetry-schema.yaml --output telemetry-schema-resolved.yaml\n```\n\nA \"resolved schema\" is one where:\n- All references have been resolved and expanded.\n- All overrides have been applied.\n- This resolved schema is what the code generator and upcoming plugins utilize.\n\n### Command `gen-client`\n\nThis command generates a client SDK from a telemetry schema for a given language\nspecified with the `--language` option.\n\n```bash\nweaver gen-client --schema telemetry-schema.yaml --language go\n```\n\nIn the future, users will be able to specify the protocol to use for the generated\nclient SDK (i.e. OTLP or OTel Arrow Protocol) and few others options.\n\n### Command `languages`\n\nThis command displays all the languages for which a client SDK/API can\nbe generated.\n\n```bash\nweaver languages\n```\n\n### Architecture\n\nThe OTel Weaver tool is architecturally designed as a platform. By default, this\ntool incorporates a template engine that facilitates Client SDK/API generation\nacross various programming languages. In the future, we plan to integrate a\nWASM plugin system, allowing the community to enhance the platform. This would\npave the way for features like enterprise data catalog integration, privacy policy enforcement,\ndocumentation generation, dashboard creation, and more.\n\nBelow is a diagram detailing the primary components of the OTel Weaver tool.\n\n![OTel Weaver Platform](docs/images/otel-weaver-platform.png)\n\n## ToDo\n**Semantic Convention Registry and Application Telemetry Schema**\n- [ ] Add support for open enum types (i.e. allow custom values=true).\n- [ ] Add support for template types.\n- [ ] Add support for `all` in telemetry schema versions section.\n- [ ] Add support for `span_events` in telemetry schema versions section.\n- [ ] Add support for `apply_to_spans` in telemetry schema versions section.\n- [ ] Add support for `apply_to_metrics` in telemetry schema metrics versions section.\n- [ ] Add support for `split` in telemetry schema metrics versions section.\n- [ ] Add support for group constraints `any_of`, ...\n- [ ] Support more than 2 levels of telemetry schema inheritance.\n- [ ] Minimize number of declaration duplications in the resolved schema (especially for attributes).\n\n**Client SDK/API Code Generation**\n- Generate Go Client SDK/API on top of the generic Go Client SDK/API.\n  - [ ] Generate type-safe API for metric groups.\n  - [ ] Support obfuscation and masking.\n- Generate Go Client SDK/API with support for OTel Arrow Protocol.\n- Generate Rust Client SDK/API on top of the generic Rust Client SDK/API.\n- Generate Rust Client SDK/API with support for OTel Arrow Protocol.\n\n**Tooling and Plugins**\n  - [ ] Add support for WASM plugins.\n  - [ ] Add Tera filter to apply obfuscation, masking, ... based on tags and language configuration.\n\n## Links\n\nInternal links:\n- [Component Telemetry Schema](docs/component-telemetry-schema.md) (proposal)\n- [Resolved Telemetry Schema](docs/resolved-telemetry-schema.md) (proposal)\n- [Internal crates interdependencies](docs/dependencies.md)\n- [Change log](CHANGELOG.md)\n\nExternal links:\n- Application Telemetry Schema: Vision and Roadmap - [PR](https://github.com/open-telemetry/oteps/pull/243)\n- OpenTelemetry Telemetry Schema v1.2.0 [Draft](https://github.com/lquerel/oteps/blob/app-telemetry-schema-format/text/0241-telemetry-schema-ext.md) (not yet ready).\n- [OpenTelemetry Semantic Convention File Format](https://github.com/open-telemetry/build-tools/blob/main/semantic-conventions/syntax.md)\n- [OpenTelemetry Schema File Format v1.1.0](https://opentelemetry.io/docs/specs/otel/schemas/file_format_v1.1.0/)\n- Presentation slides from the Semantic Convention SIG meeting on October 23, 2023 [here](https://docs.google.com/presentation/d/1nxt5VFlC1mUjZ8eecUYK4e4SxThpIVj1IRnIcodMsNI/edit?usp=sharing).\n- Meta/Facebook's [positional paper](https://research.facebook.com/publications/positional-paper-schema-first-application-telemetry/) \n  presenting a similar approach but based on Thrift+Annotations+Automations.\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue\nfirst to discuss what you would like to change. For more information, please\nread [CONTRIBUTING](CONTRIBUTING.md).\n\n\n## License\n\nOTel Weaver is licensed under Apache License Version 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff5%2Fotel-weaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ff5%2Fotel-weaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ff5%2Fotel-weaver/lists"}