All Projects → apache → skywalking-rust

apache / skywalking-rust

Licence: Apache-2.0 License
Apache SkyWalking Rust Agent

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to skywalking-rust

Skywalking
APM, Application Performance Monitoring System
Stars: ✭ 18,341 (+73264%)
Mutual labels:  apm, dapper, service-mesh, observability, distributed-tracing, skywalking
skywalking-client-js
Client-side JavaScript exception and tracing library for Apache SkyWalking APM.
Stars: ✭ 171 (+584%)
Mutual labels:  apm, dapper, observability, distributed-tracing, skywalking
Skywalking Docker
SkyWalking Docker file archive for all official releases
Stars: ✭ 206 (+724%)
Mutual labels:  apm, dapper, service-mesh, observability, distributed-tracing
Skywalking Data Collect Protocol
Data Collect Protocols of Apache SkyWalking
Stars: ✭ 49 (+96%)
Mutual labels:  apm, dapper, service-mesh, observability, distributed-tracing
skywalking-python
The Python agent for Apache SkyWalking
Stars: ✭ 152 (+508%)
Mutual labels:  apm, dapper, observability, distributed-tracing, skywalking
skywalking-nodejs
The NodeJS agent for Apache SkyWalking
Stars: ✭ 81 (+224%)
Mutual labels:  apm, dapper, observability, distributed-tracing, skywalking
Skywalking Rocketbot Ui
SkyWalking RocketBot UI
Stars: ✭ 658 (+2532%)
Mutual labels:  apm, dapper, service-mesh, observability, distributed-tracing
Skywalking Kubernetes
Apache SkyWalking Kubernetes Deployment Helm Chart
Stars: ✭ 207 (+728%)
Mutual labels:  apm, dapper, service-mesh, observability, distributed-tracing
skywalking-kong
Kong agent for Apache SkyWalking
Stars: ✭ 17 (-32%)
Mutual labels:  apm, dapper, observability, distributed-tracing, skywalking
skywalking-swck
Apache SkyWalking Cloud on Kubernetes
Stars: ✭ 62 (+148%)
Mutual labels:  apm, observability, distributed-tracing, skywalking
skywalking-query-protocol
Query Protocol for Apache SkyWalking in GraphQL format
Stars: ✭ 45 (+80%)
Mutual labels:  apm, observability, skywalking
skywalking-banyandb
An observability database aims to ingest, analyze and store Metrics, Tracing and Logging data.
Stars: ✭ 111 (+344%)
Mutual labels:  apm, observability, skywalking
Signoz
Open source Observability Platform. 👉 SigNoz helps developers find issues in their deployed applications & solve them quickly
Stars: ✭ 738 (+2852%)
Mutual labels:  apm, observability, distributed-tracing
STAM
STAM, Streaming Topology Analysis Method
Stars: ✭ 26 (+4%)
Mutual labels:  apm, observability, skywalking
live-platform
Add breakpoints, logs, metrics, and spans to live production applications
Stars: ✭ 37 (+48%)
Mutual labels:  observability, distributed-tracing, skywalking
Transmittable Thread Local
📌 TransmittableThreadLocal (TTL), the missing Java™ std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.
Stars: ✭ 4,678 (+18612%)
Mutual labels:  apm, dapper, distributed-tracing
Skyapm Dotnet
The .NET/.NET Core instrument agent for Apache SkyWalking
Stars: ✭ 1,268 (+4972%)
Mutual labels:  apm, observability, distributed-tracing
easeagent
An agent component for the Java system
Stars: ✭ 437 (+1648%)
Mutual labels:  apm, observability, distributed-tracing
Skyapm Php Sdk
The PHP instrument agent for Apache SkyWalking
Stars: ✭ 292 (+1068%)
Mutual labels:  apm, service-mesh, observability
gateway
A proxy to buffer and forward metrics, events, and traces.
Stars: ✭ 94 (+276%)
Mutual labels:  apm, observability, distributed-tracing

Apache SkyWalking Rust Agent

Sky Walking logo

Twitter Follow

CI

SkyWalking Rust Agent provides observability capability for Rust App and Library, including tracing, metrics, topology map for distributed system and alert. It uses SkyWalking native formats and core concepts to keep best compatibility and performance.

Concepts

All concepts are from the official SkyWalking definitions.

Span

Span is an important and common concept in distributed tracing system. Learn Span from Google Dapper Paper. For better performance, we extend the span into 3 kinds.

  1. EntrySpan EntrySpan represents a service provider, also the endpoint of server side. As an APM system, we are targeting the application servers. So almost all the services and MQ-consumer are EntrySpan(s).
  2. LocalSpan LocalSpan represents a normal Java method, which does not relate to remote service, neither a MQ producer/consumer nor a service(e.g. HTTP service) provider/consumer.
  3. ExitSpan ExitSpan represents a client of service or MQ-producer, as named as LeafSpan at early age of SkyWalking. e.g. accessing DB by JDBC, reading Redis/Memcached are cataloged an ExitSpan.

Tag and Log are similar attributes of the span.

  • Tag is a key:value pair to indicate the attribute with a string value.
  • Log is heavier than tag, with one timestamp and multiple key:value pairs. Log represents an event, typically an error happens.

TracingContext

TracingContext is the context of the tracing process. Span should only be created through context, and be archived into the context after the span finished.

Example

use skywalking_rust::context::trace_context::TracingContext;
use skywalking_rust::reporter::grpc::Reporter;
use tokio;

async fn handle_request(reporter: ContextReporter) {
    let mut ctx = TracingContext::default("svc", "ins");
    {
        // Generate an Entry Span when a request
        // is received. An Entry Span is generated only once per context.
        let span = ctx.create_entry_span("operation1").unwrap();

        // Something...

        {
            // Generates an Exit Span when executing an RPC.
            let span2 = ctx.create_exit_span("operation2").unwrap();
            
            // Something...

            ctx.finalize_span(span2);
        }

        ctx.finalize_span(span);
    }
    reporter.send(context).await;
}

#[tokio::main]
async fn main() {
    let tx = Reporter::start("http://0.0.0.0:11800").await;

    // Start server...
}

License

Apache 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].