Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: add js info and temp datadog adapter link to readme #54

Merged
merged 1 commit into from
Jul 28, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 41 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,33 @@
# Observe

Observe provides observability SDKs for WebAssembly, enabling continuous monitoring of WebAssembly code as it executes within a runtime.
Observe provides observability SDKs for WebAssembly, enabling continuous
monitoring of WebAssembly code as it executes within a runtime.

This repository contains the Runtime SDKs and the Adapters necessary to have live profiling & tracing, and over time will include a complete observability stack for WebAssembly.
This repository contains the Runtime SDKs and the Adapters necessary to have
live profiling & tracing, and over time will include a complete observability
stack for WebAssembly.

## SDKs and Official Adapters

The table below tracks the supported Runtime SDKs and Adapters for the host application language that is running a WebAssembly module. The Runtime SDKs link to a particular WebAssembly runtime, and the Adapter formats the raw telemetry data to be emitted to a particular output/sink. If you need support for another Adapter, please open an issue here or email [[email protected]](mailto:[email protected]).
The table below tracks the supported Runtime SDKs and Adapters for the host
application language that is running a WebAssembly module. The Runtime SDKs link
to a particular WebAssembly runtime, and the Adapter formats the raw telemetry
data to be emitted to a particular output/sink. If you need support for another
Adapter, please open an issue here or email
[[email protected]](mailto:[email protected]).

**Note:** Any supported Runtime SDK can be paired with any Adapter from the same language.
**Note:** Any supported Runtime SDK can be paired with any Adapter from the same
language.

| Language | Runtime SDKs | Adapters |
| -------- | ------------ | -------- |
| Rust | [Wasmtime](/rust) | [Datadog](/rust/src/adapter/datadog.rs), [OpenTelemetry (STDOUT)](/rust/src/adapter/otelstdout.rs), [Zipkin](/rust/src/adapter/zipkin.rs) |
| Go | [Wazero](/go) | [Datadog](/go/adapter/datadog/), [OpenTelemetry (STDOUT)](/go/adapter/otel_stdout/) |


_More languages, SDKs, and adapters are coming soon! Reach out to help us prioritize these additional components ([[email protected]](mailto:[email protected]))._
| Language | Runtime SDKs | Adapters |
| ---------- | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Rust | [Wasmtime](/rust) | [Datadog](/rust/src/adapter/datadog.rs), [OpenTelemetry (STDOUT)](/rust/src/adapter/otelstdout.rs), [Zipkin](/rust/src/adapter/zipkin.rs) |
| Go | [Wazero](/go) | [Datadog](/go/adapter/datadog/), [OpenTelemetry (STDOUT)](/go/adapter/otel_stdout/) |
| JavaScript | [Native](/js) (Browser, Node, Deno, Bun) | [Datadog](/js/packages/observe-sdk-datadog) |

_More languages, SDKs, and adapters are coming soon! Reach out to help us
prioritize these additional components
([[email protected]](mailto:[email protected]))._

## Overview

Expand All @@ -26,19 +36,28 @@ There are two components to this process:
1. [Instrumenting the Wasm code](#instrumenting-wasm-module)
2. [Including a runtime/host SDK](#including-a-runtime-sdk)


## Instrumenting Wasm Module

This package expects the wasm code to be instrumented using our instrumenting compiler. The only way to instrument your wasm right now is through the instrumentation service. The easiest way to do this is to send up your wasm with curl and get an instrumented wasm module back:
This package expects the wasm code to be instrumented using our instrumenting
compiler. The only way to instrument your wasm right now is through the
instrumentation service. The easiest way to do this is to send up your wasm with
curl and get an instrumented wasm module back:

```
curl -F [email protected] https://compiler-preview.dylibso.com/instrument -X POST -H 'Authorization: Bearer <your-api-key>' > code.instr.wasm
```

:key: **You can get an API key by contacting [[email protected]](mailto:[email protected]).**

> **Note**: The Instrumentation Service (https://compiler-preview.dylibso.com/instrument) only re-compiles a .wasm binary and returns the updated code. We do not log or store any information about your submitted code. The compilation also adds no telemetry or other information besides the strictly-necessary auto-instrumentation to the .wasm instructions. If you would prefer to run this service yourself, please contact [[email protected]](mailto:[email protected]) to discuss the available options.
:key: **You can get an API key by contacting
[[email protected]](mailto:[email protected]).**

> **Note**: The Instrumentation Service
> (https://compiler-preview.dylibso.com/instrument) only re-compiles a .wasm
> binary and returns the updated code. We do not log or store any information
> about your submitted code. The compilation also adds no telemetry or other
> information besides the strictly-necessary auto-instrumentation to the .wasm
> instructions. If you would prefer to run this service yourself, please contact
> [[email protected]](mailto:[email protected]) to discuss the available
> options.

## Including a runtime SDK

Expand All @@ -49,7 +68,8 @@ First install the cargo dependency for the SDK:
dylibso-observe-sdk = { git = "https://github.com/dylibso/observe-sdk.git" }
```

> **Note**: A runnable example can be found [here](rust/examples/otel-stdout.rs).
> **Note**: A runnable example can be found
> [here](rust/examples/otel-stdout.rs).

```rust
use dylibso_observe_sdk::adapter::otelstdout::OtelStdoutAdapter;
Expand Down Expand Up @@ -118,14 +138,16 @@ $ make test

### Compile the Test Modules

These are already checked in, but you can compile and instrument them with. Please check in any changes in the `test/` directory.
These are already checked in, but you can compile and instrument them with.
Please check in any changes in the `test/` directory.

```
make instrument WASM_INSTR_API_KEY=<your-api-key>
```

### Running Zipkin

One of the test adapters will output to Zipkin, defaulting to one running on localhost.
One of the test adapters will output to Zipkin, defaulting to one running on
localhost.

docker run -d -p 9411:9411 openzipkin/zipkin
Loading