Skip to content
sigiro

OpenTelemetry를 보내고, SQL로 쿼리하십시오.

sigiro는 트레이스, 로그, 메트릭, 프로파일을 저장합니다. HTTP API 하나에서 SQL로 쿼리하고, 에이전트는 CLI와 MCP로, 사람은 대시보드에서 읽습니다.

factory loop · five stages
탐지, step 1 of 5

탐지 · sigiro

$ curl -sS -X POST localhost:9999/v1/query --data-binary \

"SELECT count(*) AS failed_spans FROM sigiro_spans

WHERE service_name = 'checkout' AND status_code = 2

AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes'"

[{ "failed_spans": 246 }]

진단 · sigiro

$ curl -sS -X POST localhost:9999/v1/query --data-binary \

"SELECT span_name, count(*) AS failures FROM sigiro_spans

WHERE service_name = 'checkout' AND status_code = 2

AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes'

GROUP BY span_name ORDER BY failures DESC LIMIT 5"

[{ "span_name": "POST /api/orders", "failures": 246 }]

수정 · 사용자의 에이전트

$ claude "checkout times out since 9f2c1ab"

read src/orders/upstream.ts

edit src/orders/upstream.ts +4 −1

test 42 passed

push fix: bound the orders upstream call at 5s

검증 · 사용자의 파이프라인, sigiro의 증거로

$ curl -sS -X POST localhost:9999/v1/query --data-binary \

"SELECT count(*) AS errors_last_5m FROM sigiro_spans

WHERE service_name = 'checkout' AND status_code = 2

AND timestamp > CURRENT_TIMESTAMP - INTERVAL '5 minutes'"

[{ "errors_last_5m": 0 }]

학습 · 사용자의 메모리

$ cat playbooks/checkout-upstream-timeout.md

## checkout · upstream timeout

observed 246 failed checkout spans in a 30-minute window

cause unbounded upstream call, shipped in 9f2c1ab

fix 5s deadline on the orders client

watch the same shape on any service calling orders

직접 설치하면 무료이며 sigiro는 저희에게 어떤 데이터도 보내지 않습니다. 가입하면 호스팅 베타를 쓰게 되고, 텔레메트리는 저희가 운영하는 서버에 저장됩니다.

사용 방법

네 단계. 연결하고, 질문하고, 상관관계를 보고, 파고듭니다.

OpenTelemetry 익스포터를 sigiro로 향하게 하고, SQL로 질문합니다. 아래의 각 단계는 셸 세션 하나입니다.

연결, step 1 of 4
연결1 of 4
$ curl -fsSL https://sigiro.com/install | sh
installed ~/.local/bin/sigiro
$ sigiro serve &
[1] 41802
listening on 4317, 4318, 9999
$ export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
$ export OTEL_SERVICE_NAME=checkout
$ npm start &
[1] 41823
checkout listening on :3000
$ sigiro status
ready · OTLP 4317 and 4318 · service checkout · 18,402 spans in 5 min
$

sigiro는 표준 포트에서 표준 OTLP를 사용합니다.

$ curl -fsSL https://sigiro.com/install | sh
installed ~/.local/bin/sigiro

$ sigiro serve &
[1] 41802
listening on 4317, 4318, 9999

$ export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
$ export OTEL_SERVICE_NAME=checkout
$ npm start &
[1] 41823
checkout listening on :3000

$ sigiro status
ready · OTLP 4317 and 4318 · service checkout · 18,402 spans in 5 min

$ curl -sS -X POST localhost:9999/v1/query --data-binary \
    "SELECT span_name, count(*) AS calls FROM sigiro_spans
     WHERE service_name = 'checkout'
       AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes'
     GROUP BY span_name ORDER BY calls DESC LIMIT 5"
[
  { "span_name": "POST /api/orders", "calls": 1284 },
  { "span_name": "GET /api/cart", "calls": 342 }
]

$ cat models.sql
SELECT s.span_attributes ->> 'gen_ai.request.model' AS model,
       count(DISTINCT s.span_id) AS calls, max(s.duration) AS slowest
FROM sigiro_spans s JOIN sigiro_logs l USING (trace_id)
WHERE s.service_name = 'checkout' AND l.severity_number >= 17
  AND s.timestamp > now() - INTERVAL '30 minutes'
GROUP BY model ORDER BY slowest DESC

$ curl -sS -X POST localhost:9999/v1/query \
    --data-binary "$(cat models.sql)"
MODEL           CALLS  SLOWEST
gpt-5.2-mini      246    30.0s
claude-haiku-4.6   31     2.1s

$ curl -sS -X POST localhost:9999/v1/query --data-binary \
    "SELECT trace_id, duration, status_message FROM sigiro_spans
     WHERE service_name = 'checkout' AND status_code = 2
       AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes'
     ORDER BY timestamp DESC LIMIT 3"
[
  { "trace_id": "9f2c1ab4e77d", "duration": 30012,
    "status_message": "context deadline exceeded" },
  { "trace_id": "3b81fe0a2c56", "duration": 30004,
    "status_message": "context deadline exceeded" }
]

Start

install the CLI
curl -fsSL https://sigiro.com/install | sh

Installs a single binary to ~/.local/bin/sigiro. Reads the script first if you would rather: sigiro.com/install.

or give this to your agent
Install and run sigiro, the observability data layer, on this machine. Run: curl -fsSL https://sigiro.com/install | sh — then start it with: sigiro serve. It listens on 4317 and 4318 for OTLP and on 9999 for its HTTP API. Point this project’s OpenTelemetry exporter at http://localhost:4318. Then register `sigiro mcp` as a stdio MCP server (for Claude Code: claude mcp add sigiro -- sigiro mcp) so you can query the telemetry directly with its list_services and run_query tools.

Paste into Claude Code, Codex, Cursor or any MCP-capable agent. It installs sigiro, starts it, and registers sigiro mcp as an MCP server.

탐색. 에이전트가 도움 없이 API 설명을 읽습니다.

공개 문서 하나가 모든 엔드포인트를 설명합니다.

GET /openapi.json · 공개, 키 불필요
[
  "/v1/query",
  "/v1/services",
  "/v1/traces/{trace_id}"
]

얻는 것

마이그레이션 불필요. sigiro는 이미 사용 중인 도구에 연결됩니다.

텔레메트리를 보내는 곳

  • OpenTelemetry
  • Node.js
  • Python
  • Go
  • Java
  • .NET
  • Ruby
  • Rust
  • Claude Code
  • Codex
  • Vercel AI SDK
  • LangChain
  • Ollama

실행하는 곳

  • Docker
  • Kubernetes
  • Fly.io
  • Railway
  • Render
  • Cloudflare

결과를 읽는 곳

  • Claude Code
  • Cursor
  • Codex
  • SQL을 쓰는 모든 도구
다시 실행할 수 있는 답
모든 답은 SQL 쿼리입니다. 사용자, 에이전트, 동료 누구나 같은 쿼리를 다시 실행할 수 있습니다.
모든 신호를 한곳에
트레이스, 로그, 메트릭, 프로파일은 쿼리 하나로 조인할 수 있는 테이블입니다.
5분이면 설치가 끝납니다
명령어 하나와 환경 변수 두 개면 됩니다. 코드는 바꾸지 않습니다.
직접 설치하면 무료입니다
호스트 수, 사용자 수, 데이터 양에 따른 요금이 없습니다. 호스팅 베타의 가격은 아직 공개하지 않았습니다. 문의해 주십시오.
데이터는 사용자 환경에 남습니다
sigiro는 사용자의 서버에 설치합니다. sigiro는 저희에게 어떤 데이터도 보내지 않습니다. 예외는 호스팅 베타로, 텔레메트리가 저희 쪽에 저장됩니다.
sigiro가 sigiro를 모니터링합니다
sigiro는 자체 텔레메트리를 sigiro로 보냅니다. 저희는 이렇게 저희 장애를 찾습니다.