
Rootly 인시던트, 알림 및 팀을 쿼리 가능한 지식 그래프로 전환합니다. 서비스 종속성, 당직 커버리지 공백 및 인시던트 간 패턴을 시각화합니다.
graphify를 기반으로 구축된 이 도구는 Andrej Karpathy의 LLM Wiki 아이디어에서 영감을 받았습니다. 매 쿼리마다 처음부터 지식을 재발견하는 대신, LLM이 시간이 지날수록 더 풍부해지는 영구적이고 구조화된 지식 그래프를 구축하도록 합니다. Graphify는 모든 파일 폴더를 가져와 커뮤니티, 연결, 신뢰도 점수가 있는 쿼리 가능한 그래프로 변환합니다. 이 포크는 Rootly API를 대상으로 합니다.
Rootly API에 연결하고, 선택한 시간 창에 대한 인시던트, 알림, 팀 및 서비스 카탈로그를 수집하여 로컬 코퍼스로 내보낸 다음, 해당 코퍼스를 쿼리 가능한 지식 그래프로 변환합니다. 수집에는 graphify rootly를, 더 깊은 의미 분석이 필요할 때는 Claude Code 또는 Codex에서 /graphify를 사용하세요.
새로 설치 (Graphify + Rootly 임포터):
pip install "graphifyy[rootly]"
graphify install # Claude Code
graphify install --platform codex # Codex
기존 Graphify 설정에 Rootly 임포터 추가:
pip install "graphifyy[rootly]" --upgrade
프로젝트 루트에 .env 파일을 만듭니다:
ROOTLY_API_KEY=rootly_...
인시던트, 트리거된 알림 및 팀을 가져옵니다. 심각도 색상, 알림 필터, 팀/서비스 레이어를 사용하여 초기 그래프를 구축합니다.
graphify rootly
비대화형:
graphify rootly --api-key-env ROOTLY_API_KEY --days 30 --mode standard
출력은 graphify-rootly-data/graphify-out/에 기록됩니다:
graph.html — 브라우저에서 열어 그래프 탐색GRAPH_REPORT.md — 신 노드, 커뮤니티, 제안된 질문graph.json — 쿼리용 원시 그래프인시던트 코퍼스에 대해 병렬 서브에이전트를 실행하여 인시던트 간 테마, 반복 패턴, 근본 원인 관계를 추론합니다.
Claude Code — 채팅에 입력:
/graphify graphify-rootly-data --mode deep
Codex — 채팅에 입력:
run graphify on graphify-rootly-data --mode deep
| 리소스 | 내용 | 필터 |
|---|---|---|
| 인시던트 | 제목, 심각도, 상태, 타임라인, 서비스, 팀, 설명 | 날짜 창 (--days) |
| 알림 | 요약, 상태, 소스, 노이즈 플래그, 타임라인 |
graph.html이 브라우저에서 열리면:
rootly-graphify는 Rootly 수집 단계와 그래프 분석 단계로 구성됩니다.
결정론적 Rootly 수집. API 키를 검증하고, 7일, 30일 또는 90일 창을 선택하고, started_at이 해당 창 내에 있는 인시던트를 가져오고, 인시던트별 하위 리소스를 통해 트리거된 알림을 가져오고, 모든 팀 데이터를 가져와 로컬 코퍼스 디렉토리에 기록합니다.
초기 Rootly 그래프 구축. 내장된 Rootly 러너는 인시던트, 알림, 팀 및 서비스에 대한 노드를 만들고, 유형화된 가장자리(triggered, affects, owns, responded_by, targets)로 연결하고, 그래프를 클러스터링한 다음 graph.html, GRAPH_REPORT.md 및 graph.json을 기록합니다. HTML에는 심각도 색상 코딩, 팀/서비스 레이어 및 알림 필터가 포함됩니다.
선택적 심층 강화. /graphify ./graphify-rootly-data --mode deep을 실행하여 마크다운 파일에 대해 병렬 서브에이전트를 보내고 인시던트 간 테마, 근거 및 개념적 링크를 추론합니다.
현재 최상위 출력 사용. 의미 강화 후 graphify-out/graph.html을 엽니다. 현재 일반 내보내기 도구는 이미 유지 관리되는 필터와 시각 자료를 직접 포함하므로 별도의 재적용 단계가 필요하지 않습니다.
클러스터링은 그래프 토폴로지 기반입니다 — 임베딩 없음. Leiden은 가장자리 밀도로 커뮤니티를 찾습니다. 의미 유사성 가장자리(semantically_similar_to, INFERRED로 표시)는 커뮤니티 탐지에 직접 영향을 줍니다. 별도의 임베딩 단계나 벡터 데이터베이스가 필요하지 않습니다.
모든 관계는 EXTRACTED (소스에서 직접 발견), INFERRED (합리적 추론, 신뢰도 점수 포함) 또는 AMBIGUOUS (검토 플래그 지정)로 태그됩니다.
신 노드 — 차수가 가장 높은 인시던트 또는 서비스 (모든 것이 연결되는 곳)
놀라운 연결 — 복합 점수로 순위가 매겨진 인시던트 간 링크, 각각 평이한 영어 설명 포함
제안된 질문 — 그래프가 인시던트 기록에 대해 고유하게 답변할 수 있는 4~5개의 질문
신뢰도 점수 — 모든 INFERRED 가장자리에는 confidence_score(0.0–1.0)가 있습니다. EXTRACTED 가장자리는 항상 1.0입니다.
의미 유사성 가장자리 — 구조적 연결이 없는 인시던트 간 개념적 링크. 동일한 근본 패턴으로 인해 발생했지만 서비스나 팀을 공유하지 않는 두 인시던트.
토큰 효율성 — 첫 번째 실행은 추출 및 그래프 구축에 토큰이 소모됩니다. 이후의 모든 쿼리는 원시 마크다운 대신 컴팩트 그래프를 읽습니다. 이것이 비용이 절감되는 지점입니다. SHA256 캐시는 재실행 시 변경된 파일만 다시 처리합니다.
# --- Rootly 워크플로우 (터미널) ---
graphify rootly # 대화형 Rootly 임포트 흐름
graphify rootly --days 30 # 지난 30일간의 인시던트 수집
graphify rootly --api-key-env ROOTLY_API_KEY # 비대화형, 환경변수에서 키 조회
graphify rootly --output ./my-rootly-corpus # 사용자 지정 폴더에 코퍼스 기록
# --- 의미 강화 (에이전트: Claude Code / Codex) ---
/graphify ./graphify-rootly-data # Rootly 코퍼스 분석
/graphify ./graphify-rootly-data --mode deep # 더 적극적인 INFERRED 가장자리
/graphify ./graphify-rootly-data --update # 변경된 파일만 재추출
# --- 그래프 쿼리 (에이전트) ---
/graphify query "which services have the most recurring incidents?"
/graphify query "what patterns connect the SEV1 incidents?"
/graphify path "payment-api" "auth-service"
/graphify explain "Incident: Database connection pool exhausted"
# --- 선택적 내보내기 ---
/graphify ./graphify-rootly-data --wiki # 커뮤니티별 에이전트 크롤링 가능 위키
/graphify ./graphify-rootly-data --no-viz # HTML 건너뛰기, 보고서 + JSON만
/graphify ./graphify-rootly-data --obsidian # Obsidian 볼트
# --- 항상 켜져 있는 어시스턴트 지침 ---
graphify claude install # CLAUDE.md + PreToolUse 훅 (Claude Code)
graphify codex install # AGENTS.md (Codex)
# 새 데이터 가져오기 및 재구축
graphify rootly --api-key-env ROOTLY_API_KEY --days 30 --mode standard
# 의미 단계로 재강화 (Claude Code)
/graphify graphify-rootly-data --update
| 패턴 | 설명 | 그래프가 도움이 되는 이유 |
|---|
| 서비스 인시던트 히트맵 | 어떤 서비스가 얼마나 심각하게 문제인지. 노드 크기 = 인시던트 수, 색상 = 최악 심각도. | 함께 실패하는 경향이 있는 서비스를 클러스터링하여 숨겨진 인프라 종속성을 드러냅니다. |
| 팀 온콜 및 에스컬레이션 맵 | 모든 일정 및 에스컬레이션 정책에서 누가 무엇을 담당하는지 한눈에 보여줍니다. | 단일 장애점(3개 팀에 걸쳐 4개 일정을 담당하는 사람)과 커버리지 격차를 발견합니다. |
| 알림→인시던트 퍼널 | 어떤 알림 소스가 실제 인시던트를 생성하는지 vs. 순수 잡음인지. | 200개의 알림과 0개의 인시던트를 가진 알림 소스는 노드 크기로 즉시 확인 가능합니다. |
| 인시던트 → 조치 항목 후속 조치 | 우리가 실제로 고장난 것을 수정하고 있는가? 실선 = 완료, 점선 = 미해결. | 팀 또는 서비스 주변의 미해결 조치 항목 클러스터는 체계적인 후속 조치 문제를 드러냅니다. |
| 서비스 간 장애 상관관계 | 동일한 시간 창 내에 어떤 서비스들이 함께 실패하는지. | 커뮤니티 탐지는 동일한 기본 인프라에 의존할 가능성이 있는 공동 운명 그룹을 찾습니다. |
| 트리거된 것만 (인시던트에 연결됨) |
| 팀 | 이름, 슬러그, 서비스 소유권 | 계정 내 모든 팀 |