JX / Junexis ObservabilityRola w platformie →
Menu Observability

Poznaj Observability

WprowadzeniePierwszy sygnałMożliwościIntegracjeDostępność i ograniczenia

Observability / sygnały operacyjne

Twój pierwszy sygnał

Wyślij informację o operacji i odczytaj ją z API. Na początek wystarczy jeden wpis audytu. Bez Studio, urządzenia i konfiguracji całego systemu.

Co zobaczysz?

Wpis z działaniem review.run i wynikiem Succeeded. To kontrolowana informacja wysłana przez Ciebie — nie automatyczny pomiar działania platformy.

1. Uruchom lokalne API

Potrzebujesz repozytorium junexis-observability, .NET SDK zgodnego z jego global.json (obecnie .NET 10) oraz PowerShell 7 lub równoważnego klienta HTTP. Publiczny katalog nie udostępnia gotowego zestawu do tej instrukcji.

W katalogu repozytorium:

dotnet build Junexis.Observability.slnx -c Release
dotnet run --no-launch-profile --project src/Junexis.Observability.QueryApi -c Release --no-build -- --urls http://127.0.0.1:18128

Pozostaw terminal włączony. Port 18128 musi być wolny. API jest lokalnym procesem; ta strona nie uruchamia go za Ciebie.

W drugim terminalu:

$api = 'http://127.0.0.1:18128'
Invoke-RestMethod "$api/"

Odpowiedź status: ready potwierdza, że API odpowiada. Nie potwierdza gotowości urządzeń, Runtime ani trwałego magazynu.

2. Przygotuj jeden wpis audytu

Audyt opisuje kto, jaką operację i z jakim skutkiem zgłosił. Zewnętrzna struktura zdarzenia niesie identyfikatory i kontekst, a payloadJson zawiera właściwy wpis audytu.

$session = 'first-signal-' + [guid]::NewGuid().ToString('N')
$payload = @{
    actor = 'local-review'
    action = 'review.run'
    target = 'observability'
    outcome = 'Succeeded'
    reason = 'Local API acceptance'
    evidenceRefs = @()
} | ConvertTo-Json -Compress

$event = @{
    eventId = [guid]::NewGuid().ToString('N')
    kind = 'Audit'
    producer = 'local-review'
    component = 'review'
    platformRole = 'Tooling'
    occurredAt = [DateTimeOffset]::UtcNow.ToString('O')
    receivedAt = '0001-01-01T00:00:00+00:00'
    correlationId = $session
    sessionId = $session
    buildId = 'local-review'
    schemaVersion = '1.0'
    payloadType = 'AuditRecord'
    payloadJson = $payload
    tags = @{ review = 'local' }
} | ConvertTo-Json -Depth 8

Succeeded to treść deklaracji producenta. Samo API nie wykonuje tej operacji ani nie uwierzytelnia wpisanego tekstu actor. Identyfikator sesji jest tu kluczem do powiązania wpisów, nie kontem logowania.

3. Wyślij i odczytaj

Invoke-RestMethod -Method Post -Uri "$api/ingress/events" `
    -ContentType 'application/json' -Body $event

$entries = @(Invoke-RestMethod "$api/audit?sessionId=$session")
$entries | ForEach-Object { $_.record } |
    Format-Table actor, action, target, outcome

Pierwsze przyjęcie zwraca HTTP 202. W odczycie znajdziesz jeden wpis z local-review, review.run, observability i Succeeded.

Pierwszy sukces: wysłany wpis jest widoczny w odpowiedzi API.

Rozróżniasz treść zdarzenia od zapytania, które ją odnajduje. Nie musisz konfigurować pozostałych integracji.

4. Sprawdź ponowienie

Wyślij ponownie tę samą zmienną $event, bez generowania nowego identyfikatora:

Invoke-RestMethod -Method Post -Uri "$api/ingress/events" `
    -ContentType 'application/json' -Body $event
@(Invoke-RestMethod "$api/audit?sessionId=$session").Count

Poprawnie rozpoznany duplikat zwraca HTTP 200, a liczba wpisów pozostaje 1. Stan rozpoznawania duplikatów jest w pamięci procesu. Nie jest to gwarancja zachowania po restarcie ani dokładnie jednego importu z dowolnego zewnętrznego źródła.

Wynik rzeczywistej próby

24 października 2026 uruchomiliśmy Release Query API na loopback i wysłaliśmy cztery kontrolowane rodzaje zdarzeń. Każdy został przyjęty, odczytany oraz rozpoznany przy ponowieniu.

Sygnał Pierwsze przyjęcie Ponowienie Wpisów w odczycie
Audit 202 200 1
Log 202 200 1
Health 202 200 1
Telemetry 202 200 1
Wpis audytu z rzeczywistej odpowiedzi — wybrane pole record
{
  "actor": "local-review",
  "action": "review.run",
  "target": "observability",
  "outcome": "Succeeded",
  "reason": "Local API acceptance",
  "evidenceRefs": []
}

To zapis wcześniejszej próby API, bez danych z fizycznego urządzenia, Studio ani rzeczywistego Runtime. Powyższe polecenia tworzą nową sesję, więc jej identyfikatory i czasy będą inne. Otwórz zapis próby w JSON.

Zakończ własny proces API przez Ctrl+C w jego terminalu. Główne magazyny są w pamięci i ich zawartość nie przetrwa restartu.

Poznaj pozostałe możliwości · Przejdź do integracji.