| name | observability-planner |
| description | TRIGGER when: planning OTel spans for a new sigma directive type; defining
metric collection points for sigma v2 agents; setting up alert thresholds
for commander or pod operations.
SKIP: non-sigma observability, infrastructure monitoring, Dexter/Archer scope.
|
| version | 0.2.0 |
| license | MIT |
observability_planner
Elixir ๋ชจ๋: Sigma.V2.Skill.ObservabilityPlanner
MCP ์ด๋ฆ: observability_planner
๋ฒ์ : v2 (Phase 5)
Before You Start
- ์ด ์คํฌ์ OTel(OpenTelemetry) ๊ด์ฐฐ๊ฐ๋ฅ์ฑ ๊ณํ์ ์์ฑ. ์ค์ ๋ฉํธ๋ฆญ ์์ง ์ค์ ์ ๋ณ๋.
existing_metrics๊ฐ ์์ผ๋ฉด ๊ธฐ๋ณธ 3๊ฐ(latency, error_rate, throughput)๋ฅผ ๋ชจ๋ ์ ๊ท ์ถ๊ฐ๋ก ๊ถ๊ณ .
alert_channels๊ฐ ๋น์ด์์ผ๋ฉด ์๋ ์ฑ๋ ์์ ๊ฒฝ๊ณ . ์ต์ 1๊ฐ ์ค์ ๊ฐ๋ ฅ ๊ถ๊ณ .
- ๋ฐํ๋๋
recommended_metrics๋ ์ถ๊ฐ ๊ถ๊ณ ๋ชฉ๋ก (๊ธฐ์กด ๋ฉํธ๋ฆญ๊ณผ ์ค๋ณต ์ ๊ฑฐ๋จ).
- ์ด์ ๊ฐ์ง ํจํด(
anomaly_patterns)์ ํ ํน์ฑ์ ๋ฐ๋ผ ์กฐ์ ํ์ โ ๊ธฐ๋ณธ๊ฐ์ ์ต์ํ์ ์ปค๋ฒ๋ฆฌ์ง.
Input Schema
{
"type": "object",
"properties": {
"service": {
"type": "string",
"description": "๋ชจ๋ํฐ๋ง ๋์ ์๋น์ค/ํ๋ช
(์: 'blog', 'luna', 'sigma')"
},
"existing_metrics": {
"type": "array",
"items": { "type": "string" },
"default": [],
"description": "ํ์ฌ ์์ง ์ค์ธ ๋ฉํธ๋ฆญ๋ช
๋ชฉ๋ก"
},
"alert_channels": {
"type": "array",
"items": { "type": "string" },
"default": [],
"description": "์๋ ์์ ์ฑ๋ ๋ชฉ๋ก (์: ['telegram', 'webhook'])"
},
"slo_targets": {
"type": "object",
"description": "SLO ๋ชฉํ๊ฐ (์: {latency_p99_ms: 500, error_rate_pct: 1.0})"
}
}
}
Process
- ๊ธฐ๋ณธ ๋ฉํธ๋ฆญ ๊ฐญ ๋ถ์:
["latency_p99", "error_rate", "throughput_rps"] ์ค existing_metrics์ ์๋ ํญ๋ชฉ ์๋ณ.
- ์๋น์ค๋ณ ์ถ๊ฐ ๋ฉํธ๋ฆญ ๊ถ๊ณ :
service ์ด๋ฆ ๊ธฐ๋ฐ์ผ๋ก ๋๋ฉ์ธ ํนํ ๋ฉํธ๋ฆญ ์ถ๊ฐ (blogโseo_score, lunaโposition_accuracy ๋ฑ).
- ์๋ ๊ท์น ์์ฑ: ๊ฐ ๊ธฐ๋ณธ ๋ฉํธ๋ฆญ์ ๋ํด ์๊ณ๊ฐ ๊ธฐ๋ฐ ์๋ ๊ท์น ์์ฑ.
slo_targets๊ฐ ์์ผ๋ฉด ํด๋น ๊ฐ ์ฌ์ฉ.
- ์ด์ ๊ฐ์ง ํจํด ๋ชฉ๋กํ:
data_stale, cost_spike, quality_drop 3์ข
๊ธฐ๋ณธ ํจํด + ์๋น์ค ํนํ ํจํด.
- ์ปค๋ฒ๋ฆฌ์ง ์ ์ ์ฐ์ถ: ๊ธฐ๋ณธ ๋ฉํธ๋ฆญ ์ปค๋ฒ๋ฆฌ์ง(50%) + ์๋ ์ค์ (30%) + SLO ์ ์(20%) ๊ฐ์ค ํฉ์ฐ.
- ๊ฒฐ๊ณผ ๋ฐํ:
recommended_metrics, alert_rules, anomaly_patterns, coverage_score.
Defaults
| ํ๋ผ๋ฏธํฐ | ๊ธฐ๋ณธ๊ฐ | ์กฐ์ ๊ธฐ์ค |
|---|
existing_metrics | [] | ํ์ฌ n8n / launchd ์์ง ํญ๋ชฉ ํ์
ํ ์
๋ ฅ |
alert_channels | [] | ์ต์ telegram ๋๋ webhook 1๊ฐ |
slo_targets | ์์ | ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ๊ธฐ์ค์ผ๋ก ์ ์ |
Integration
์๊ทธ๋ง ๋ด ํธ์ถ ์ง์ :
Sigma.V2.Commander.analyze_formation/2 โ ํ ๊ด์ฐฐ๊ฐ๋ฅ์ฑ ๊ฐญ ๋ถ์ ๋จ๊ณ
- ํด๋ก๋ํ ๋ชจ๋ํฐ๋ง ์ค์ ์ ์ฐ๊ณ (๋ฑ์คํฐ/์์ฒ/๋ฅํฐ ์ค์ ๊ถ๊ณ )
- MCP ์๋ํฌ์ธํธ:
POST /mcp/sigma/tools/observability_planner/call
Examples
Good โ ์๋น์ค + SLO ํฌํจ:
{
"service": "luna",
"existing_metrics": ["latency_p99", "error_rate"],
"alert_channels": ["telegram", "webhook"],
"slo_targets": {
"latency_p99_ms": 300,
"error_rate_pct": 0.5
}
}
Bad โ ๋น ์ํ์์ ์์:
{ "service": "blog" }
Edge โ ๋ชจ๋ ๊ธฐ๋ณธ ๋ฉํธ๋ฆญ ์ด๋ฏธ ์กด์ฌ:
{
"service": "sigma",
"existing_metrics": ["latency_p99", "error_rate", "throughput_rps"],
"alert_channels": ["webhook"]
}
Failure Modes
| ํจํด | ์์ธ | ๋์ฒ |
|---|
coverage_score ๋ฎ์ | alert_channels + slo_targets ๋ฏธ์ค์ | ๋ ํ๋ผ๋ฏธํฐ ์ถ๊ฐ ํ ์ฌํธ์ถ |
| ์๋น์ค ํนํ ๋ฉํธ๋ฆญ ์์ | service ๋ฏธ์ ๊ณต ๋๋ ์ ์ ์๋ ์๋น์ค๋ช
| service ํ๋ผ๋ฏธํฐ ์ ํํ ์ ๋ฌ (blog/luna/ska/sigma ๋ฑ) |
| ์๋ ๊ท์น ๋น์ด์์ | alert_channels ๋น ๋ฐฐ์ด | ์ต์ ["telegram"] ์ค์ |