İçeriğe geç
Pathrule

dokümanlar

Signals hızlı başlangıç

Pathrule Signals SDK'sını ekleyin, bir hedef seçin (kendi toplayıcınız, Pathrule Local veya Pathrule Cloud), hataları ve olayları kod yollarıyla birlikte raporlayın ve doğrulamayı mümkün kılan sürümü belirleyin.

Bu sayfada

Bu sayfada Signals SDK'sını bir uygulamaya ekliyor, olaylarının nereye gideceğini seçiyor ve Signals'ın gruplayıp doğruladığı hataları ve olayları raporluyorsunuz. SDK her modda aynıdır; yalnızca hedef değişir.

SDK'yı ekleyin

npm install @pathrule/signals

SDK, Apache-2.0 lisanslı @pathrule/signals paketidir. Node 18 veya üzerinde ve güncel tarayıcılarda (ES2022 ve fetch) çalışır. Herkese açık npm paketi yayımlanma aşamasında olduğundan güncel durumu genel bakış sayfasından kontrol edin.

Başlatın

import { pathrule, httpCollector } from "@pathrule/signals";

pathrule.init({
  destination: httpCollector({
    url: "https://collector.example.com/signals",
    headers: { Authorization: `Bearer ${process.env.SIGNALS_TOKEN}` },
  }),
  environment: "production",
  release: { version: "2.4.0", commit: process.env.GIT_SHA },
});

environment değeri development, preview veya production olabilir.

Bir hedef seçin

Bağımsız, kendi toplayıcınız. httpCollector({ url, headers?, credentials? }), zarfları Signals protokolünü konuşan herhangi bir uç noktaya POST eder. Ortada bir Pathrule hesabı yoktur.

Pathrule Local. Projede bir kez yerel bir çalışma alanı oluşturun, ardından olayları makinenizdeki Pathrule sunucusuna gönderin. Bu hedef yalnızca Node'da çalışır.

pathrule init --local
import { pathrule } from "@pathrule/signals";
import { pathruleLocal } from "@pathrule/signals/local";

pathrule.init({ destination: pathruleLocal(), environment: "development", release: "2.4.0" });

Pathrule Cloud. Bir proje anahtarı oluşturun ve bunu Cloud hedefine verin. Anahtarlar prs_ ile başlar, yalnızca yazma yetkilidir ve istemci kodunda dağıtılmaları güvenlidir. Anahtar yönetimi için Cloud Signals sayfasına bakın.

import { pathrule, pathruleCloud } from "@pathrule/signals";

pathrule.init({
  destination: pathruleCloud({ key: process.env.PATHRULE_SIGNALS_KEY }),
  environment: "production",
  release: { version: "2.4.0", commit: process.env.GIT_SHA },
});

Özel bir hedef, SignalsDestination arayüzünü uygulayan herhangi bir nesnedir.

Hataları ve olayları raporlayın

try {
  await submitOrder(cart);
  pathrule.event("order placed", {
    node: "/apps/web/checkout",
    flow: "checkout",
    meta: { outcome: "success" },
  });
} catch (error) {
  pathrule.error(error, { node: "/apps/web/checkout", flow: "checkout" });
  throw error;
}

İkinci argüman bir link'tir: node olayın ait olduğu kod yoludur, flow kullanıcının gördüğü akışı adlandırır, text kısa bir açıklama ekler ve meta ayrıntıları taşır. Bir grubun akışında meta.outcome: "success" içeren bir olay, o gruba yönelik bir düzeltmenin doğrulanmasını sağlayan kanıttır.

Sürümü belirleyin

release bir sürüm dizesi, version, commit ve deployment alanlarını içeren bir nesne ya da null olabilir. releaseFromEnvironment(process.env) bu değeri yaygın dağıtım değişkenlerinden okur. Sürüm kimliği olmadan Signals olayları yine gruplayabilir, ancak bir düzeltmeyi doğrulayamaz: pathrule.status().verification değeri no_release olur.

Süreç sonlanmadan önce kuyruğu boşaltın

const result = await pathrule.flush({ timeoutMs: 5000 });
// result: { outcome, delivered, pending, dropped }

flush() hiçbir zaman reject etmez. Zaman aşımı varsayılan olarak 5 saniyedir, en fazla 30 saniye olabilir. Tarayıcılarda SDK, sayfa kapanırken bekleyenleri sendBeacon ile gönderir; Node'da ise beforeExit anında kuyruğu boşaltır. Serverless fonksiyonlar gibi kısa ömürlü süreçlerde bu çağrıyı kendiniz yapın.

Yapılandırma

SeçenekNe işe yarar
destinationZarfların gideceği yer: httpCollector, pathruleLocal, pathruleCloud ya da kendi hedefiniz.
key, endpointpathruleCloud çağrısına verilmediğinde Cloud anahtarı ve uç noktası.
environmentdevelopment, preview veya production.
releaseSürüm dizesi, { version, commit, deployment } ya da null.
scrubHerhangi bir şey gönderilmeden önce hassas verileri temizleyen bir hook.
declareDuyurulacak enstrümantasyon noktaları; bildirimler yalnızca development ve preview ortamlarında gönderilir.
timeoutMsİstek zaman aşımı, varsayılan olarak 10000.

pathrule.status() doğrulamanın ready, no_release ya da inactive durumunda olduğunu bildirir, pathrule.reset() ise istemciyi sıfırlar.