SDK

Все SDK построены поверх OpenTelemetry — вы можете использовать стандартные библиотеки OTel и просто поменять endpoint. Для удобства мы публикуем свои обёртки с sane defaults.

Поддерживаемые языки

Язык Пакет Минимальная версия Auto-instrumentation
Gogo.actaflow.tech/sdkGo 1.21✓ net/http, gin, echo, gRPC, database/sql
Rustactaflow-sdkRust 1.75✓ axum, actix, tonic, reqwest, sqlx
Javatech.actaflow:sdkJDK 17✓ Spring Boot, Quarkus, Micronaut
Pythonactaflow-sdkPython 3.10✓ Django, Flask, FastAPI, Celery
Node.js@actaflow/sdkNode 20✓ Express, Fastify, NestJS, Prisma
.NETActaflow.Sdk.NET 8✓ ASP.NET Core, EF Core
Rubyactaflow-sdkRuby 3.2✓ Rails, Sidekiq
PHPactaflow/sdkPHP 8.2✓ Laravel, Symfony

Примеры

Go

go get go.actaflow.tech/sdk@latest
package main

import (
    "log"
    "go.actaflow.tech/sdk"
)

func main() {
    shutdown, err := sdk.Init(sdk.Config{
        APIKey:     "af_live_...",
        ServiceName:    "payments-api",
        ServiceVersion: "1.4.2",
        Environment:    "production",
        Endpoint:       "actaflow-collector.observability:4317",
        SampleRate:     0.1,
    })
    if err != nil {
        log.Fatal(err)
    }
    defer shutdown()

    // Дальше — стандартный код. HTTP-хендлеры, БД-запросы,
    // gRPC-клиенты автоматически инструментированы.
}

Python

pip install actaflow-sdk
from actaflow import init, instrument

init(
    api_key="af_live_...",
    service_name="payments-api",
    service_version="1.4.2",
    environment="production",
    endpoint="http://actaflow-collector.observability:4318",
    sample_rate=0.1,
)

# Авто-инструментирование Flask
from flask import Flask
app = instrument(Flask(__name__))

@app.route("/charge")
def charge():
    # Span создаётся автоматически, trace_id доступен в request.headers
    return {"status": "ok"}

Rust

cargo add actaflow-sdk
use actaflow_sdk::{init, Config};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let _guard = init(Config {
        api_key: "af_live_...".into(),
        service_name: "payments-api".into(),
        service_version: "1.4.2".into(),
        environment: "production".into(),
        endpoint: "http://actaflow-collector.observability:4318".into(),
        sample_rate: 0.1,
    }).await?;

    // axum/tonic инструменты автоматически
    Ok(())
}

Sampling стратегии

Стратегия Когда использовать
head_ratelimit(0.1) Default. Сэмплирует 10% трейсов на старте. Простой и предсказуемый.
tail_always_error Сохраняет 100% трейсов со статусом ERROR. Только на стороне collector'а.
tail_slow(p=0.99) Сохраняет трейсы с latency выше P99. Полезно для debugging latency.
tail_route("/v1/charge", 1.0) Сохраняет 100% трейсов для критичных endpoints.