发送 OpenTelemetry,用 SQL 查询。
检测 · 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
验证 · 你的流水线,用我们的证据
$ 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 提问。下面每一步都是一次终端会话。
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
Installs a single binary to ~/.local/bin/sigiro. Reads the script first if you would rather: sigiro.com/install.
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 描述。
一份公开文档描述了全部接口。
[
"/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 查询。你、你的智能体或同事都可以再跑一遍。
- 所有信号在一处
- 链路、日志、指标和性能剖析都是表,一条查询就能关联起来。
- 五分钟装好
- 一条命令,两个环境变量。代码一行都不用改。
- 自己部署就免费
- 不按主机、席位或数据量收费。托管测试版尚未公布价格,欢迎来聊。
- 数据留在你手里
- 你把 sigiro 装在自己的服务器上。sigiro 不会把任何数据发给我们。托管测试版例外:遥测数据存放在我们这里。
- sigiro 监控 sigiro
- sigiro 把自己的遥测数据发给 sigiro。我们就是这样发现自己的故障的。