{"id":13994558,"url":"https://github.com/dylibso/observe-sdk","last_synced_at":"2025-04-09T15:07:08.693Z","repository":{"id":173463698,"uuid":"649819801","full_name":"dylibso/observe-sdk","owner":"dylibso","description":"Continuous runtime observablity SDKs to monitor WebAssembly code.","archived":false,"fork":false,"pushed_at":"2024-08-28T17:28:53.000Z","size":3434,"stargazers_count":169,"open_issues_count":34,"forks_count":7,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-09T15:06:59.882Z","etag":null,"topics":["instrumentation","opentelemetry","otel","tracing","wasmtime","webassembly"],"latest_commit_sha":null,"homepage":"https://dev.dylibso.com/docs/observe/overview","language":"TypeScript","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/dylibso.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-05T17:54:49.000Z","updated_at":"2025-03-27T10:24:29.000Z","dependencies_parsed_at":"2023-10-14T22:09:15.755Z","dependency_job_id":"ffab9ddf-faad-45c4-8390-0e57abf6f5ae","html_url":"https://github.com/dylibso/observe-sdk","commit_stats":null,"previous_names":["dylibso/observe-sdk"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylibso%2Fobserve-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylibso%2Fobserve-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylibso%2Fobserve-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dylibso%2Fobserve-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dylibso","download_url":"https://codeload.github.com/dylibso/observe-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055284,"owners_count":21040157,"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":["instrumentation","opentelemetry","otel","tracing","wasmtime","webassembly"],"created_at":"2024-08-09T14:02:56.781Z","updated_at":"2025-04-09T15:07:08.660Z","avatar_url":"https://github.com/dylibso.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003eCheckout the official overview and documentation here:\u003cbr/\u003e\n\u003cb\u003e\u003ca href=\"https://dev.dylibso.com/docs/observe/overview\"\u003ehttps://dev.dylibso.com/docs/observe/overview\u003c/a\u003e\u003c/b\u003e\n\u003c/p\u003e\n\n---\n\n\u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\".github/assets/observe-wasm-light.png\"\u003e\n    \u003cimg alt=\"WebAssembly Observability - Observe SDK by Dylibso\" width=\"75%\" style=\"max-width: 600px\" src=\".github/assets/observe-wasm.png\"\u003e\n\u003c/picture\u003e\n\n[![CI](https://github.com/dylibso/observe-sdk/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/dylibso/observe-sdk/actions/workflows/ci.yml)\n\n# WebAssembly Observability Toolkit\n\nObserve provides observability SDKs for WebAssembly, enabling continuous\nmonitoring of WebAssembly code as it executes within a runtime.\n\nThis repository contains the Runtime SDKs and the Adapters necessary to have\nlive profiling \u0026 tracing, and over time will include a complete observability\nstack for WebAssembly.\n\n## SDKs and Official Adapters\n\nThe table below tracks the supported Runtime SDKs and Adapters for the host\napplication language that is running a WebAssembly module. The Runtime SDKs link\nto a particular WebAssembly runtime, and the Adapter formats the raw telemetry\ndata to be emitted to a particular output/sink. If you need support for another\nAdapter, please open an issue here or email\n[support@dylibso.com](mailto:support@dylibso.com).\n\n**Note:** Any supported Runtime SDK can be paired with any Adapter from the same\nlanguage.\n\n| Language   | Runtime SDKs                             | Adapters                                                                                                                                                                                                                            |\n| ---------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Rust       | [Wasmtime](/rust)                        | [Datadog](/rust/src/adapter/datadog.rs), [Honeycomb](/rust/src/adapter/honeycomb.rs), [Lightstep](/rust/src/adapter/lightstep.rs), [OpenTelemetry (stdout)](/rust/src/adapter/otelstdout.rs), [Zipkin](/rust/src/adapter/zipkin.rs) |\n| Go         | [Wazero](/go)                            | [Datadog](/go/adapter/datadog/), [Honeycomb](/go/adapter/honeycomb/), [Lightstep](/go/adapter/lightstep/), [OpenTelemetry](/go/adapter/opentelemetry)                                                                       |\n| JavaScript | [Native](/js) (Browser, Node, Deno, Bun) | [Datadog](/js/packages/observe-sdk-datadog), [Honeycomb](/js/packages/observe-sdk-honeycomb), [Lightstep](/js/packages/observe-sdk-lightstep)                                                                                       |\n\n_More languages, SDKs, and adapters are coming soon! Reach out to help us\nprioritize these additional components\n([support@dylibso.com](mailto:support@dylibso.com))._\n\n## Overview\n\nThere are two components to this process:\n\n1. [Including a runtime/host SDK](#including-a-runtime-sdk)\n2. [Instrumenting the Wasm code](#instrumenting-wasm-modules)\n\n## Including a runtime SDK and an Adapter\n\nFirst you should choose a Host SDK corresponding to your host application's\nlanguage and Wasm runtime. The Host SDK captures raw observability events from\nthe running Wasm module and sends them to an adapter. You must choose an adapter\nbased on where you want your data to go. At the moment, we support a few systems\nout of the box. In the future we will support a lot more and will have more\ncommunity driven options. If you don't see support for your favorite\nobservability tools feel free to reach out to us at\n([support@dylibso.com](mailto:support@dylibso.com)).\n\nEach language includes some examples demonstrating use with different adapters.\nYou can view these examples here:\n\n- [Rust](rust/examples)\n- [Go](go/bin)\n- [Js](js/packages)\n\n## Instrumenting Wasm Modules\n\nThere are two ways to instrument the Wasm modules: automatically and manually.\n\n### Automatically instrument your Wasm\n\nThe easiest way to instrument your code right now is to use our instrumenting\ncompiler. This is a tool that can look at your Wasm and recompile it with\ninstrumentation built in. The compiler is available as a service. You can\ngenerate a key to use\n[this service for free here](https://compiler-preview.dylibso.com/).\n\nTo use the key:\n\n```\ncurl --fail -F wasm=@code.wasm https://compiler-preview.dylibso.com/instrument -X POST -H 'Authorization: Bearer \u003cyour-api-key\u003e' \u003e code.instr.wasm\n```\n\n\u003e **Note**: The Instrumentation Service\n\u003e [https://compiler-preview.dylibso.com/instrument](https://compiler-preview.dylibso.com) only re-compiles a .wasm\n\u003e binary and returns the updated code. We do not log or store any information\n\u003e about your submitted code. The compilation also adds no telemetry or other\n\u003e information besides the strictly-necessary auto-instrumentation to the .wasm\n\u003e instructions. If you would prefer to run this service yourself, please contact\n\u003e [support@dylibso.com](mailto:support@dylibso.com) to discuss the available\n\u003e options.\n\n### Manually instrument your Wasm\n\nThe Host SDKs expose a series of host functions that make up our _Observe API_.\nYou can code directly against this if you wish. Because we are still changing\nand experimenting with this API, we have not built much tooling or support for\nthis yet. See [the Observe API README](observe-api/) to learn more about the API\nand the language bindings we provide.\n\nExpect to see some documentation and alpha tools by September 2023. We will be\nbuilding out a lot of the language specific layers, but we hope the community\ncan help by building tools on top of it and integrating with existing libraries\nlike OpenTelemetry.\n\n## Development\n\n### Building\n\nTo build the current wasmtime-based SDK, run:\n\n```\n$ cargo build\n```\n\n### Testing\n\n```\n$ make test\n```\n\n### Compile the Test Modules\n\nThese are already checked in, but you can compile and instrument them with.\nPlease check in any changes in the `test/` directory.\n\n```\nmake instrument WASM_INSTR_API_KEY=\u003cyour-api-key\u003e\n```\n\n### Running Zipkin\n\nOne of the test adapters will output to Zipkin, defaulting to one running on\nlocalhost.\n\n    docker run -d -p 9411:9411 openzipkin/zipkin\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylibso%2Fobserve-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdylibso%2Fobserve-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdylibso%2Fobserve-sdk/lists"}