Шаг 1 из 3 — Получите API ключ
Перейдите в раздел API Keys → Create Key. Скопируйте ключ вида oai_...
Шаг 2 из 3 — Установите SDK
# Python
pip install requests
# Скачайте observeai.py из раздела SDK выше
# Node.js — зависимостей нет
# Скачайте observeai.js из раздела SDK выше
Шаг 3 из 3 — Отправьте первые данные
# Python
from observeai import ObserveAI
client = ObserveAI(
api_key="oai_ваш_ключ",
service_name="my-service",
api_url="https://observeai.kayaniq.ru"
)
client.info("Приложение запущено!")
client.trace("GET /api/users", duration_ms=42)
client.metric(cpu_percent=45.2, memory_percent=60.1)
client.close()
✅ После отправки данные появятся в разделах Traces, Logs, Infrastructure через несколько секунд.
"""ObserveAI Python SDK — полный справочник"""
from observeai import ObserveAI
client = ObserveAI(
api_key="oai_ваш_ключ",
service_name="my-service",
api_url="https://observeai.kayaniq.ru",
batch_size=50, # отправка пачками
flush_interval=2.0, # секунд между flush
)
# ── Логирование ─────────────────────────────────
client.debug("Детальный лог")
client.info("Запрос обработан")
client.warn("Высокое потребление памяти")
client.error("Ошибка подключения", attributes={"db": "postgres"})
# ── Трейсинг ─────────────────────────────────────
# Простой span
trace_id = client.trace("GET /users", duration_ms=42, status="ok")
# Замер времени через context manager
with client.span("db.query") as s:
users = db.execute("SELECT * FROM users")
s.set_attribute("rows", len(users))
# Вложенные spans (распределённый трейс)
with client.span("POST /orders") as root:
with client.span("db.insert",
trace_id=root.trace_id,
parent_span_id=root.span_id) as db_span:
db_span.set_attribute("table", "orders")
db.insert_order(order)
# ── Метрики ──────────────────────────────────────
client.metric(
cpu_percent=45.2,
memory_percent=62.0,
memory_usage_mb=1024,
disk_percent=35.0,
load_average_1m=1.2,
)
# Авто-сбор системных метрик (pip install psutil)
client.collect_system_metrics()
# ── Завершение ───────────────────────────────────
client.close() # flush буфера
# Context manager
with ObserveAI(api_key="oai_...") as c:
c.info("auto-flush при выходе")
// ObserveAI Node.js SDK — полный справочник
const { ObserveAI } = require('./observeai'); // нет зависимостей!
const client = new ObserveAI({
apiKey: 'oai_ваш_ключ',
serviceName: 'my-service',
apiUrl: 'https://observeai.kayaniq.ru',
});
// ── Логирование ─────────────────────────────────
client.debug('Детальный лог');
client.info('Запрос обработан');
client.warn('Предупреждение');
client.error('Ошибка', { attributes: { db: 'postgres' } });
// ── Трейсинг ─────────────────────────────────────
client.trace('GET /users', { durationMs: 42 });
// Замер времени + вложенный контекст
const users = await client.withSpan('GET /users', async ({ traceId, attrs }) => {
const result = await db.getUsers();
attrs.count = result.length;
return result;
});
// Express middleware (авто-трейс ВСЕХ запросов)
app.use(ObserveAI.expressMiddleware(client));
// ── Метрики ──────────────────────────────────────
client.metric({ cpuPercent: 45.2, memoryPercent: 62.0 });
// Завершение
await client.close();
// ObserveAI Go SDK — полный справочник
import observeai "github.com/your-org/observeai"
client := observeai.New(observeai.Config{
APIKey: "oai_ваш_ключ",
ServiceName: "my-service",
APIURL: "https://observeai.kayaniq.ru",
FlushInterval: 2 * time.Second,
})
defer client.Close()
// ── Логирование ─────────────────────────────────
client.Debug("Детальный лог")
client.Info("Запрос обработан")
client.Error("Ошибка", observeai.LogOpts{
Attributes: map[string]interface{}{"db": "postgres"},
})
// ── Трейсинг ─────────────────────────────────────
traceID := client.Trace("GET /users", observeai.SpanOpts{
DurationMs: 42,
Status: "ok",
})
// Замер времени с обработкой ошибок
err := client.WithSpan("db.query", observeai.SpanOpts{}, func() error {
return db.Query("SELECT * FROM users")
})
// ── Метрики ──────────────────────────────────────
client.Metric(observeai.MetricOpts{
CPUPercent: 45.2,
MemoryPercent: 62.0,
DiskPercent: 35.0,
})
// ── HTTP middleware (net/http) ────────────────────
http.Handle("/", client.HTTPMiddleware(myHandler))
// ObserveAI C# SDK — полный справочник
await using var client = new ObserveAI.ObserveAIClient(
apiUrl: "https://observeai.kayaniq.ru",
apiKey: "oai_ваш_ключ",
serviceName: "my-service"
);
// ── Логирование ─────────────────────────────────
await client.DebugAsync("Детальный лог");
await client.InfoAsync("Запрос обработан");
await client.WarnAsync("Предупреждение");
await client.ErrorAsync("Ошибка", new() {
Attributes = new() { ["db"] = "postgres" }
});
// ── Трейсинг ─────────────────────────────────────
var traceId = client.Trace("GET /users", new() { DurationMs = 42 });
// Замер времени (generic)
var users = await client.WithSpanAsync<List<User>>("db.query", async () => {
return await db.GetUsersAsync();
});
// ── Метрики ──────────────────────────────────────
await client.MetricAsync(new() {
CpuPercent = 45.2,
MemoryPercent = 62.0,
DiskPercent = 35.0,
});
// IAsyncDisposable — flush при using
// await using var c = new ObserveAIClient(...);
<!-- Подключите SDK в HTML -->
<script src="/app/js/observeai-browser.js"></script>
<script>
const client = new ObserveAI({
apiKey: 'oai_ваш_ключ',
serviceName: 'my-frontend',
apiUrl: 'https://observeai.kayaniq.ru',
autoPageview: true, // авто-трейс SPA навигации
autoErrors: true, // авто-лог JS ошибок
});
// Обёртка над fetch с авто-трейсингом
const data = await client.fetch('/api/users').then(r => r.json());
// Замер пользовательского действия
await client.withSpan('checkout.process', async () => {
await stripe.confirmPayment();
});
// Логи
client.info('Страница загружена');
client.error('Ошибка оплаты', { attributes: { code: 42 } });
// Отправка при закрытии страницы (navigator.sendBeacon)
window.addEventListener('beforeunload', () => client.close());
</script>
# Все запросы требуют заголовок X-API-Key
# Получите ключ в разделе API Keys → Create Key
## POST /api/v1/ingest/spans — отправить трейсы
curl -X POST https://observeai.kayaniq.ru/api/v1/ingest/spans \
-H "X-API-Key: oai_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"spans": [{
"trace_id": "trace-abc123",
"span_id": "span-001",
"parent_span_id": "",
"service_name": "my-service",
"name": "GET /users",
"timestamp": "2026-05-22T10:00:00.000Z",
"duration_ms": 42.5,
"status": "ok",
"attributes": "{\"http.method\":\"GET\"}"
}]
}'
## POST /api/v1/ingest/logs — отправить логи
curl -X POST https://observeai.kayaniq.ru/api/v1/ingest/logs \
-H "X-API-Key: oai_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"logs": [{
"service_name": "my-service",
"level": "info",
"message": "Server started on port 8080",
"timestamp": "2026-05-22T10:00:00.000Z",
"trace_id": "",
"span_id": "",
"attributes": "{}"
}]
}'
## POST /api/v1/ingest/infrastructure — метрики
curl -X POST https://observeai.kayaniq.ru/api/v1/ingest/infrastructure \
-H "X-API-Key: oai_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"metrics": [{
"host": "server-1",
"service_name": "my-service",
"timestamp": "2026-05-22T10:00:00.000Z",
"cpu_percent": 45.2,
"memory_percent": 62.0,
"disk_percent": 35.0,
"network_in_mbps": 10.5,
"network_out_mbps": 5.2,
"load_average_1m": 1.2,
"container_id": "",
"container_name": ""
}]
}'
## GET /api/v1/traces — получить трейсы
curl "https://observeai.kayaniq.ru/api/v1/traces?limit=20&start_time=2026-05-22T00:00:00Z" \
-H "Authorization: Bearer ваш_jwt_токен"
# Полный Swagger UI: https://observeai.kayaniq.ru/docs