Skip to content

개념

이 페이지에서는 Ongrid 가 사용하는 명사들을 의존 순서대로 소개합니다. Quickstart 를 마쳤다면 구체적인 형태는 이미 익숙할 것입니다. 여기서는 이름을 붙입니다.

Edge

edge 는 실행 중인 ongrid-edge 프로세스 하나 — 호스트당 한 개입니다. 등록, 텔레메트리, 원격 제어의 단위입니다.

각 edge 는 다음을 가집니다.

  • 서버가 생성한 access key (공개에 가까운, edge 식별자) 와 secret key (한 번만 표시되며 터널 인증에 사용),
  • frontier 브로커의 40012 포트에 대한 장시간 유지되는 아웃바운드 TCP 연결,
  • 감독되는 플러그인 서브프로세스 (promtail, node_exporter, process_exporter, otelcol-contrib) 군,
  • 몇 초 간격의 하트비트 — 멈추면 ONGRID_ALERT_EDGE_OFFLINE_THRESHOLD (기본 90s) 후 edge 는 오프라인으로 표시됩니다.

Edge 는 정수형 edge_id (URL 과 에이전트 도구 호출에서 사용) 또는 name (UI 와 find_topology_node 에서 사용) 로 주소 지정할 수 있습니다. list_edges 로 나열하고, bashedge_id=N 을 주어 특정 edge 에서 명령을 실행하고, query_promql 에 호스트 레이블을 줘서 PromQL 쿼리를 한 edge 로 한정할 수 있습니다.

중요한 점: edge 는 기본적으로 읽기 전용입니다. 에이전트의 호스트 측 기능은 점검용 (bash, host_probe_*, query_processes, query_logs_tail, host_read_file) 이며, 변경하지 않습니다. 쓰기 액션은 감사 로깅이 붙은 WebShell 흐름을 거칩니다.

구체적인 배포 경로는 edge installplatforms / linux-edge 를 참고하세요.

Device

device 는 edge 보다 한층 더 느슨한 개념입니다. edge 가 ongrid-edge 프로세스와 1:1 로 매핑되는 데 반해, device 는 Ongrid 가 알고 있는, 토폴로지에 참여하는 모든 것 — 서비스, 가상 호스트, k8s 파드, SD 나 수동 임포트로 발견된 외부 엔드포인트까지 — 입니다.

지금은 UI 가 토폴로지 뷰를 통해 device 를 암묵적으로 노출합니다. device 는 토폴로지 그래프의 노드입니다. edge, 서비스, 발견된 외부 시스템 모두 노드입니다. expand_topologyfind_topology_node 기능은 device 위에서 동작합니다 — 영향 범위 추론이 이 그래프에 의존합니다.

TIP

edge 만 가지고 있다면 토폴로지 그래프는 호스트 노드 한 층입니다. discover_services 같은 기능이나 k8s SD 통합이 채워지면, 호스트 위에 서비스 노드가 나타나고 옆에 외부 엔드포인트가 추가됩니다.

알림 규칙

알림 규칙 은 텔레메트리 스트림에서 조건이 성립할 때 알림 이벤트를 발생시키는 선언적 명세입니다.

Ongrid 의 규칙 모델은 2 차원입니다. 규칙은 kind (어떤 데이터 타입을 평가) 와 scope (어디서 평가) 를 갖습니다.

내장된 14 개 kind, 데이터 플레인별 분류:

PlaneKinds
호스트 메트릭host_cpu, host_mem, host_disk, host_load, edge_offline, prom_ingest_fail
Metric/PromQLpromql_threshold, promql_burn_rate, promql_absence
로그log_match, log_volume
트레이스trace_latency, trace_error_rate
복합composite_and (위 항목 중 다수의 AND)

규칙은 다음을 담습니다.

  • 해당 kind 의 네이티브 쿼리 언어로 작성된 condition,
  • threshold + for 지속 시간 (발화 전 조건이 유지되어야 하는 시간),
  • severity (critical / warning / info),
  • routing — 어느 채널이 알림을 받을지, 선택적 cooldown 포함.

6 개 내장 호스트 규칙 (host_cpu, host_mem, host_disk, host_load, edge_offline, prom_ingest_fail) 은 ONGRID_ALERT_* 환경 변수에서 적절한 기본값으로 시드되며 UI 에서 켜고 끌 수 있습니다. 커스텀 규칙은 MySQL 에 살고 자유롭게 편집 가능합니다.

알림 기능 을 참고하세요. 규칙 스키마는 Reference 사이드바의 Alert rule schema 에 문서화되어 있습니다.

Incident

incident 는 같은 운영 이야기에 속하는 알림 이벤트들의 상위 그룹입니다. 알림이 조건이 성립할 때마다 발생하는 반면, incident 는 한 번 생성되어 관련 알림이 도착하면 갱신됩니다.

Incident 는 다음의 단위입니다.

  • investigation — 한 incident 에 하나 이상의 investigation.
  • paging — 채널 라우팅은 incident 생성 시점에 일어나며, 알림 단위가 아닙니다.
  • timeline — incident 상세 페이지는 같은 이야기에 묶인 모든 알림 이벤트, 에이전트 액션, 운영자 노트의 시간순 기록입니다.
  • closure — incident 는 open → investigating → mitigated → resolved (또는 false_positive) 를 거칩니다. 상태 변경은 감사 로그에 남습니다.

그룹핑 로직은 지금은 의도적으로 단순합니다. {rule_id, edge_id} 튜플과 1 시간 활동 윈도우 기준입니다. 로드맵은 규칙별로 (group_by) 구성 가능하게 하는 것입니다.

Investigation

investigation 은 incident 에 부착된 구조화된 에이전트 실행입니다. 출력은 Markdown investigation 보고서 — 추정 근본 원인의 순위 리스트와 증거입니다.

전형적인 investigation 은 5 개의 서브 에이전트를 거칩니다.

  1. incident-investigator (coordinator) — incident 를 가설들로 분해.
  2. sre specialist — SLO 소진, 최근 배포, 알림 상관 분석.
  3. compute / disk / network specialist — 영향 받은 edge 의 호스트 레벨 점검.
  4. ops specialist — 지식 베이스 조회, 플레이북 매칭.
  5. reviewer (critic loop) — 초안 보고서를 다시 읽어 사인오프 전 누락된 증거를 요청.

각 단계는 UI 의 추론 타임라인 에 기록됩니다 — 모든 도구 호출, 소비된 모든 모델 토큰, 모든 서브 에이전트 디스패치. 감사 가능성이 핵심입니다.

incident 또는 채팅 ("investigate the order-service drop at 14:02") 에서 investigation 을 수동으로 띄울 수도 있습니다. 출력은 같은 곳으로 갑니다: incident 에 묶인 investigation 보고서.

RCA 기능 을 참고하세요. investigation 을 구동하는 persona 는 Agents 사이드바의 Incident investigator 에 문서화되어 있습니다.

Channel

channel 은 알림에 대해 구성된 아웃바운드 목적지입니다. "channel" 은 두 가지 다소 다른 형태를 포함합니다.

  • Webhook channel — Slack incoming webhooks, Larksuite (Feishu) webhooks, DingTalk webhooks, WeCom 그룹 로봇, 일반 webhook. 단방향 입니다 — Ongrid 가 카드를 게시하고 끝.
  • IM channel — Telegram 봇, Larksuite 앱, DingTalk 앱, WeCom 앱, Slack 앱. 양방향 입니다 — 같은 채널이 알림을 전달하고 사용자가 답장하고 에이전트에 질문하고 investigation 을 트리거할 수 있습니다.

각 채널은 다음을 가집니다.

  • name (자유형), type (slack / feishu / dingtalk / wecom / webhook / telegram), endpoint 자료 (URL + secret, 또는 앱 토큰 + chat ID, 또는 봇 토큰 + allow-from 리스트…).
  • scope — 어느 조직 / 어느 롤이 여기로 라우팅된 알림을 볼 수 있는지. 또한 선택적 allow_from 발신자 화이트리스트 (특히 Telegram) 로 임의의 사람이 봇과 대화할 수 없게 합니다.
  • default locale — 이 채널에서 에이전트가 응답하는 언어, UI 로케일과 독립.

채널은 일급 시민입니다. 알림 규칙이 이름으로 채널을 참조하고, 에이전트가 선제적으로 메시지를 보낼 수 있으며, 한 채널을 여러 규칙에 webhook URL 을 재붙여 넣지 않고도 연결할 수 있습니다.

채널 개요 를 참고하세요.

IM 채널 (양방향)

별도로 강조할 가치가 있는 "channel" 의 서브타입입니다. IM 채널은 채팅 표면 (Telegram, Larksuite, DingTalk, WeCom, Slack) 을 완전한 에이전트 인터페이스로 바꿉니다.

양방향이 구체적으로 의미하는 것:

  • 에이전트가 게시할 수 있다 — 알림, investigation 보고서, 예약된 다이제스트.
  • 사용자가 답장할 수 있다 — 질문 ("왜 디스크가 꽉 찼지?"), 명령 ("/list edges"), 후속 ("investigate that").
  • 모든 메시지는 Web UI 세션과 동일한 user_agentorg 에 바인딩됩니다 — 동일한 RBAC, 동일한 감사 로그, 동일한 기능 레지스트리.
  • sender_allowlist (Telegram) 또는 앱 권한 게이트 (그 외) 가 그룹에서 봇과 대화 가능한 사람을 결정합니다.

채널별 locale 이 여기서 중요합니다. 사용자 대면 UI 로케일이 영어더라도 Telegram 그룹은 여전히 한국어 응답을 원할 수 있고, 이를 채널별로 설정합니다.

가장 유연한 예시는 channels / telegram 을 참고하세요.

Persona / agent

persona 는 구성 가능한 에이전트 정체성입니다 — YAML/JSON 선언으로 다음을 정합니다.

  • 에이전트가 선호하는 model (사이트 기본을 폴백으로),
  • 허용된 기능 (기능은 scope 를 가집니다: host, manager, org, 그리고 class: safe, payload_read, payload_writeRBAC 참고),
  • 에이전트의 어조로 작성된 system prompt,
  • 선택적 서브 에이전트 선언 (coordinator persona 가 specialist persona 를 띄울 수 있음).

Ongrid 는 여러 persona 를 기본 제공합니다.

  • coordinator — 기본; 사용자 질문을 분해하고 specialist 로 라우팅하거나 기능을 직접 실행.
  • incident-investigator — incident 모드 coordinator; 토폴로지를 따라가고, 신호를 상관 분석하고, 보고서를 작성.
  • sre, network, compute, disk, ops — coordinator 들이 호출하는 specialist 들.
  • reviewer — incident-investigator 의 초안에 대한 critic loop.

자체 persona 도 작성할 수 있습니다. Persona 포맷은 Reference 사이드바의 Agent persona format 에 문서화되어 있습니다. 커스텀 persona 는 MySQL 에 저장되고, 다음 에이전트 실행에서 픽업됩니다.

Skill (기능)

기능 (skill) 은 에이전트가 호출할 수 있는 도구입니다. 각 기능은 다음을 선언합니다.

  • name (예: query_promql, bash, expand_topology),
  • 인자와 결과의 JSON schema,
  • scopehost (터널을 통해 특정 edge 에서 실행), manager (manager 프로세스 내에서 실행), org (cross-edge manager 기능),
  • classsafe, payload_read, payload_write. 읽기 전용 클래스는 제한이 없고 쓰기 클래스는 승인을 거칩니다.
  • 선택적 activation keyword — 설정되면 사용자 쿼리가 키워드를 언급하지 않는 한 기능은 프롬프트에 들어가지 않습니다. 기능 레지스트리가 모델 컨텍스트 윈도우를 초과하지 않도록 유지하는 toolbag 디퍼럴 메커니즘입니다.

기능은 레지스트리에 저장됩니다. 에이전트 커널 (기본 graph 커널) 이 현재 턴에서 어떤 기능이 보이는지를 scope, RBAC, activation keyword 에 기반해 해석합니다. 약 30 개 기능이 기본 제공됩니다 (bash, host_probe_*, query_promql, query_logs, query_traceql, expand_topology, find_topology_node, read_repo, search_knowledge, web_search, …).

기능 capability 를 참고하세요. 매니페스트 포맷은 Reference 사이드바의 Skill manifest 에 문서화되어 있습니다. 커스텀 기능은 ONGRID_SKILLS_EXTERNAL_DIRS 에서 로딩 가능합니다.

지식 베이스

지식 베이스는 에이전트가 search_knowledge 로 검색할 수 있는 조직 문서의 모음입니다. 문서는 한 번 임베딩되어 Qdrant 에 저장되고, 검색은 하이브리드 (벡터 + BM25) 입니다.

소스는 계층화되어 있습니다.

  • vault — Ongrid 가 번들로 제공하는 내장 읽기 전용 지식 베이스. 네트워크 진단, Linux 내부, Prometheus / Loki / Tempo 레시피, 흔한 incident 패턴을 다루는 대략 100 개의 Markdown 플레이북. vault 는 공개 ongridio/vault 저장소에서 요청 시 동기화됩니다.
  • upload — 조직 관리자가 업로드한 Markdown, TXT, PDF, DOCX 파일. docextract 를 거쳐 업로드 트리에 들어갑니다.
  • manual — UI 에디터에서 직접 작성한 항목.
  • repo — 읽기 전용 SSH 키 (ADR-023) 로 동기화된 전체 Git 저장소. 자신의 runbook 저장소를 인제스트하는 데 유용합니다.

에이전트는 search_knowledge(query, k=N) 을 호출하여 메타데이터가 붙은 순위화된 청크를 받습니다. 임베딩은 기본적으로 오프라인 ONNX 번들 BGE 모델 (fast-bge-small-zh-v1.5) 로 계산됩니다. 설정에서 호스팅 임베더 (OpenAI, Zhipu, GLM…) 로 교체할 수 있습니다.

지식 베이스 capability 를 참고하세요.

종합

전형적인 운영 루프:

text
  edge ─▶ telemetry ─▶ alert rule ─▶ alert event ─▶ incident

                                              ┌────────┴────────┐
                                              ▼                 ▼
                                       investigation        channel
                                       (agent + skills)     (Slack / TG /
                                              │              IM …)

                                       investigation
                                       report
  • edge 가 텔레메트리를 송출한다.
  • 알림 규칙 이 평가하여 알림 이벤트를 만든다.
  • 이벤트는 incident 로 그룹핑된다 (또는 열린 incident 에 부착).
  • incident 는 알림을 위해 채널 로 라우팅된다.
  • investigation 이 자동 시작 (또는 운영자 트리거) 된다. 에이전트가 기능지식 베이스 를 사용해 보고서를 만든다.
  • persona 가 investigation 이 실행되는 어조와 도구 팔레트를 결정한다.

전체 파이프라인은 관측 가능합니다. 모든 단계가 UI 타임라인에 나타나고, 모든 기능 호출이 감사 로그에 남고, 모든 토큰 소비가 LLM 예산 패널에 표시됩니다.