diff --git a/docs/android/index.md b/docs/android/index.md index 507811d4..30c324b2 100644 --- a/docs/android/index.md +++ b/docs/android/index.md @@ -1,7 +1,7 @@ --- title: Getting Started description: Learn about Embrace for the Android platform -sidebar_position: 0 +sidebar_position: 1 --- # Android Platform Documentation diff --git a/docs/performance-tracing/implementation/exporting.md b/docs/performance-tracing/implementation/exporting.md new file mode 100644 index 00000000..55cd253c --- /dev/null +++ b/docs/performance-tracing/implementation/exporting.md @@ -0,0 +1,19 @@ +--- +title: Exporting traces +description: Exporting traces +sidebar_position: 2 +--- + +## Exporting Traces via the Spans API + +Some text here + +## Exporting Traces via Data Destinations + +Some text here + +## Exporting Traces to Open Telemetry Collectors + +Traces instrumented with the Embrace SDK can be exported exported to to any [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) directly from an app using the [SpanExporter](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-exporter). + +For details see: [Export to OpenTelemetery Collectors](https://dev.emb-eng.com/docs-pr161/open-telemetry/integration/#export-to-opentelemetry-collectors) diff --git a/docs/performance-tracing/implementation/index.md b/docs/performance-tracing/implementation/index.md new file mode 100644 index 00000000..c2a2e349 --- /dev/null +++ b/docs/performance-tracing/implementation/index.md @@ -0,0 +1,9 @@ +--- +title: Implementation +description: Implementation +sidebar_position: 1 +--- + +# Implementation + +Stuff will happen here. Links to SDKs. \ No newline at end of file diff --git a/docs/performance-tracing/implementation/sdks/index.md b/docs/performance-tracing/implementation/sdks/index.md new file mode 100644 index 00000000..7350654d --- /dev/null +++ b/docs/performance-tracing/implementation/sdks/index.md @@ -0,0 +1,14 @@ +--- +title: Using Embrace SDKs +description: SDKs +sidebar_position: 0 +--- + +Detailed instrumatation instructions can be found at the links below: + +- [Android](/docs/android/features/traces.md) +- [iOS](/docs/ios/open-source/features/traces.md) +- [React Native](/docs/react-native/features/traces.md) +- [Unity](/docs/unity/features/traces.md) +- [Flutter](/docs/flutter/features/traces.md) + diff --git a/docs/performance-tracing/implementation/third-party.md b/docs/performance-tracing/implementation/third-party.md new file mode 100644 index 00000000..f8a0f653 --- /dev/null +++ b/docs/performance-tracing/implementation/third-party.md @@ -0,0 +1,5 @@ +--- +title: Third-party instrumentation +description: Third-party instrumentation +sidebar_position: 1 +--- \ No newline at end of file diff --git a/docs/performance-tracing/index.md b/docs/performance-tracing/index.md new file mode 100644 index 00000000..126b78c7 --- /dev/null +++ b/docs/performance-tracing/index.md @@ -0,0 +1,33 @@ +--- +title: Getting Started +description: Get Started with Performance Tracing +sidebar_position: 0 +--- + +# Getting Started + +## Improving performance with Traces + +Embrace’s Performance Tracing solution gives you visibility into any app operation you’d like to track, including duration, success rate, and any contextual metadata collected at runtime that helps debug the root cause of your mobile app's performance issues. With our tool, you can quickly spot any bottlenecks in your app’s architecture, pinpoint areas you need to troubleshoot with high precision, and ultimately deliver a truly optimized user experience. + +## Learn More + +See these tracing topics: + +- [What is Performance Tracing?](https://embrace.io/blog/what-is-performance-tracing/) +- [Building Dashboards, Alerts, and Widgets with spans and traces](https://embrace.io/blog/spans-in-custom-dashboards-alerts/) +- [View active network requests in traces](https://embrace.io/blog/network-spans-in-traces/) +- [How to optimize mobile performance using traces](https://embrace.io/blog/mobile-performance-tracing/) + +## Instrumentation Details + +Detailed instrumentation instructions can be found the the link below: +- [Android](/docs/android/features/traces.md) +- [iOS](/docs/ios/open-source/features/traces.md) +- [React Native](/docs/react-native/features/traces.md) +- [Unity](/docs/unity/features/traces.md) +- [Flutter](/docs/flutter/features/traces.md) + +## View Traces in the Embrace Dashboard + +After you’ve instrumented your app, you can see your traces in the [Embrace UI](https://embrace.io/docs/features/traces/) diff --git a/docs/performance-tracing/technical-details.md b/docs/performance-tracing/technical-details.md new file mode 100644 index 00000000..0b1b93d8 --- /dev/null +++ b/docs/performance-tracing/technical-details.md @@ -0,0 +1,58 @@ +--- +title: Technical Details +description: Technical Details for Performance Tracing +sidebar_position: 2 +--- + +# Technical Details for Performance Tracing + +Here are some details about how tracing works in Embrace: + +## Definitions + +Trace: Describes the end-to-end journey of one or more connected spans. + +Span: Describes an operation or "work" taking place on a service. Spans can describe broad operations - for example, the operation of an app fetching and rendering an image in the UI - or as granular as a single invocation of a function. + +Root Span: A span that doesn't have a parent that represents the entire workflow at a high level. + +Span Instance: A specific occurrence of a workflow, representing an individual run of it, identified by a unique Span ID. + +Child Spans: Spans that list a given span as their parent. When filtering, a matching child span includes its parent. + + + + +## Span Outcomes + +Successful (definition and if it’s auto or manual set) + +Error (definition and if it’s auto or manual set) + +User Abandon (definition and if it’s auto or manual set) + +Unknown (definition and if it’s auto or manual set) + +## Span Filters in dashboard + +All Spans: TBD + +Slowest Spans: Spans completed successfully with duration > p95. + +Fastest Spans: Spans completed successfully and not slow (with duration < p95). + +Types of Unsuccessful Spans: + +- Error: Spans encountered an error. +- Unknown: Insufficient data to determine outcome. +- User Abandon: User navigated away before completion. + +## Implementation + +Detailed instrumentation instructions can be found at the links below: +- [Android](/docs/android/features/traces.md) +- [iOS](/docs/ios/open-source/features/traces.md) +- [React Native](/docs/react-native/features/traces.md) +- [Unity](/docs/unity/features/traces.md) +- [Flutter](/docs/flutter/features/traces.md) +- diff --git a/docs/performance-tracing/tracing-ui.md b/docs/performance-tracing/tracing-ui.md new file mode 100644 index 00000000..4b59be06 --- /dev/null +++ b/docs/performance-tracing/tracing-ui.md @@ -0,0 +1,89 @@ +--- +title: Tracing UI +description: Tracing UI in the Dashboard +sidebar_position: 3 +--- +NOTE to future self when we implement this we need to delete: https://embrace.io/docs/features/traces/ + +# Tracing UI + +Embrace’s Traces solution gives you visibility into any app operation you’d like to track, including duration, success rate, and any contextual metadata collected at runtime that helps debug the root cause of your mobile app's performance issues. With our tool, you can quickly spot any bottlenecks in your app’s architecture, pinpoint areas you need to troubleshoot with high precision, and ultimately deliver a truly optimized user experience. + +## Root Spans View +The primary page shows all root spans in your app, as well as summary metrics like count, error rate, percentiles of duration, and changes from a previous version. + +Traces + +To narrow down the spans that are summarized in this view, you can apply the following filters on the root span as well as the child spans: +* Name +* Duration* +* Outcome +* Attributes keys and values +* Span event names + +*failed Spans are not included for duration aggregates, they are displayed as `0` + +## Root Span Summary View +By clicking on the name of a Root Span in the Root Spans View, you can see a partial listing of all the instances of that Root Span. + +Each row represents a specific instance of that Root Span being recorded. You can see its status, unique Span ID, and duration, in addition to start and end times. All of these columns other than the Span ID is sortable. + +Clicking on the instance will open up an in-line preview of the details of that instance, including the child spans that it has, their duration, and whether they were completed successfully. + +On the right side each row that shows a Root Span instance, there are two icons. The first one takes you to the Root Span Instance View, where you can see all the details about that instance, including attributes and events on each child span. The second one takes you to the specific session in the User Timeline view that this instance ended in so you can see the full context of what happened before and after this Root Span was recorded. + +Root Span summary + +You can filter by properties similar to those in the Root Span View. + +Trace summary filters + +## Root Span Instance View +This view shows a Root Span in its entirety. Not only can you see all the information in trace instance preview, you can also see at the individual events and attributes recorded as part of on a each child span, along with metadata about the device and app. + +Trace instance + +## User Timeline view +Root Spans appear in both the Timeline View and Timeline Details. + +Clicking on "See Details" for any Root Span within the timeline will take you directly to the Root Span Instance View. + +User timeline + +## Sessions Filters +Not only can you filter spans in the various pages dedicated to Traces, you can filter sessions in the Sessions View by whether or not they contain specific spans with certain attributes and events. + +Session filters + +## Boards, Alerts, and Custom Metrics +You can create Boards, Alerts, and Custom Metrics based on span data. + +Trace widgets +Trace alerts + +## Slow Root Spans +With the Slow Root Spans feature, you can identify performance bottlenecks and prioritize your optimization efforts. +Slow Root Spans are instances with both significant occurrences (100 over the last two days) and durations surpassing the 95th percentile of successful spans bearing the same name. +You can get the slow Root Spans on the issues page. + +Slow traces + +Once you click on a Slow Root Span, you can see specific instances of that span. + +## Span Instances Filters +Filter your instances by durantion or outcome with these filters: + * **All**: all instances displayed + * **Slowest**: instances completed successfully with duration > p95. + * **Fastest**: instances completed successfully and not slow (with duration < p95). + * **Unsuccessful**: + * **Erro**r: instances encountered an error. + * **Unknown**: insufficient data to determine instance outcome. + * **User Abandon**: user navigated away before instance completion. + +## Implementation Details +For detailed implementation instructions, see links below: + 1. [**Android**](/android/features/traces) + 2. [**iOS**](/ios/open-source/features/traces) + 3. [**Unity**](/unity/features/traces) + 4. [**React Native**](/react-native/features/traces) + 5. [**Flutter**](/flutter/features/traces) diff --git a/docs/performance-tracing/troubleshooting/FAQ.md b/docs/performance-tracing/troubleshooting/FAQ.md new file mode 100644 index 00000000..95feb0a2 --- /dev/null +++ b/docs/performance-tracing/troubleshooting/FAQ.md @@ -0,0 +1,7 @@ +--- +title: FAQ +description: FAQ +sidebar_position: 5 +--- + +FAQ here \ No newline at end of file diff --git a/docs/performance-tracing/troubleshooting/further-learning.md b/docs/performance-tracing/troubleshooting/further-learning.md new file mode 100644 index 00000000..c85be48d --- /dev/null +++ b/docs/performance-tracing/troubleshooting/further-learning.md @@ -0,0 +1,7 @@ +--- +title: Further Learning +description: Further Learning +sidebar_position: 5 +--- + +Learn here from other Embrace resources like knowledge base or blogs or tutorials or stuff. \ No newline at end of file diff --git a/docs/performance-tracing/troubleshooting/index.md b/docs/performance-tracing/troubleshooting/index.md new file mode 100644 index 00000000..07c13744 --- /dev/null +++ b/docs/performance-tracing/troubleshooting/index.md @@ -0,0 +1,9 @@ +--- +title: Feature Support +description: Feature Support +sidebar_position: 4 +--- + +# Troubleshooting + +Having trouble? Check out these addtional reseources. diff --git a/docs/performance-tracing/use-cases.md b/docs/performance-tracing/use-cases.md new file mode 100644 index 00000000..37974aa9 --- /dev/null +++ b/docs/performance-tracing/use-cases.md @@ -0,0 +1,9 @@ +--- +title: Use Cases +description: Use Cases for Tracing +sidebar_position: 5 +--- + +## Use Cases + +We should write a lot in here. \ No newline at end of file diff --git a/sidebars.ts b/sidebars.ts index 24876773..0ea1b023 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -96,6 +96,11 @@ const sidebars: SidebarsConfig = { label: "Features", items: [{ type: "autogenerated", dirName: "features" }], }, + { + type: "category", + label: "Tracing", + items: [{ type: "autogenerated", dirName: "performance-tracing" }], + }, { type: "category", label: "Partnerships", diff --git a/static/images/span-components.png b/static/images/span-components.png new file mode 100644 index 00000000..b2d82829 Binary files /dev/null and b/static/images/span-components.png differ diff --git a/static/images/span-relationships.png b/static/images/span-relationships.png new file mode 100644 index 00000000..53bcde30 Binary files /dev/null and b/static/images/span-relationships.png differ