콘텐츠로 이동

/events

/events 스킬은 최근 Kubernetes 이벤트를 가져와 짧은 순위 목록으로 축약합니다 — Warning 이벤트 먼저, 그다음 Normal 중 주목할 만한 것. 읽기 전용이며 클러스터 상태를 변경하지 않습니다.

출력은 의도적으로 제한됩니다. 따라서 첫 번째 응답은 읽기 쉽고 모델을 통해 재방출하는 데도 비용이 낮습니다. 전체 이벤트 목록은 로컬 JSON 캐시에 기록되며 에이전트는 API를 다시 호출하지 않고 후속 질문에서 이를 읽습니다.

/events # snapshot (uses cache if fresh)
/events --refresh # force a fresh fetch
/events --ttl 5m # only re-fetch if older than 5m

이 스킬은 위치 인수를 사용하지 않습니다. 후속 질문(“payments만”, “pod/checkout-7c9의 이벤트”, “억제된 Normal 이벤트 표시”)은 캐시에서 답변됩니다 — 아래 후속 질문을 참조하십시오.


출처: Kubernetes API 전용 — kubectl get events --all-namespaces (또는 events.k8s.io/v1에 대한 동등한 명령), lastTimestamp 기준 서버 측 정렬.


스킬은 단일 호출로 클러스터의 이벤트를 가져와 전체 목록을 컨텍스트별 캐시 디렉토리에 events.json으로 씁니다. 집계와 심각도 순위 지정은 해당 JSON에서 클라이언트 측에서 수행되므로 TTL 기간 내 반복 실행은 API를 완전히 건너뜁니다.

요약 블록은 다음과 같습니다:

Events: prod-us-east · last 1h · 2 warning groups, 1 notable
WARN payments/Pod BackOff 14× 2m ago "Back-off restarting failed container server in pod checkout-7c9"
WARN ingress/Pod FailedScheduling 1× 38m ago "0/12 nodes are available: 3 node(s) had untolerated taint…"
NOTE kube-system/Node NodeNotReady 1× 52m ago "Node ip-10-0-3-14 status is now: NodeNotReady"
…and 412 Normal events (Pulled, Created, Started, Scheduled) suppressed.
Snapshot cached (TTL 5m). Ask to drill in — e.g. "only payments", "events on pod/checkout-7c9", "show suppressed".

기간이 깔끔하면 스킬은 보고할 내용이 없음을 확인하는 한 줄을 출력하고 종료합니다.


요약에서는 의도적으로 수다스러운 Normal 이유를 축약하고 오브젝트별 세부 정보를 생략하여 초기 응답을 작게 유지합니다. 더 많은 내용을 요청하거나 캐시된 이벤트 목록에서 답변할 수 있는 다른 내용을 요청하면, 에이전트는 스킬을 다시 실행하지 않고 jq로 캐시를 읽습니다:

❯ /events
[ summary... ]
❯ only payments
[ events filtered to namespace payments, from events.json ]
❯ show the suppressed Normal events
[ full Normal-event list, from events.json ]
❯ events on pod/checkout-7c9
[ filtered by involvedObject, walking owners one level up, from events.json ]

캐시에 없는 데이터(로그, 특정 리소스의 YAML, 여러 출처의 근본 원인)의 경우 에이전트는 /events를 확장하는 대신 적절한 스킬 — /logs 또는 /investigate — 로 라우팅합니다.

“refresh” / “fetch again” / “re-check”라고 말하면 에이전트가 --refresh로 스킬을 다시 호출합니다.


이벤트 목록을 가져오는 것 외에도 스킬은 에이전트에게 후속 질문에서 어떻게 동작해야 하는지 안내합니다:

  • 스킬을 다시 호출하기보다 jq로 캐시된 events.json에서 답변하는 것을 우선합니다.
  • 수다스러운 이유 세트(Pulled, Created, Started, Scheduled, SuccessfulCreate)를 축약 가능한 것으로 처리합니다 — 사용자가 억제된 세트를 요청할 때만 표시합니다.
  • 사용자가 “pod/X의 이벤트”를 요청할 때 소유자를 한 단계 위로 탐색하여(PodReplicaSetDeployment, PodJobCronJob) 컨트롤러에 대해 발생한 이벤트를 놓치지 않습니다.
  • BackOff 또는 CrashLoopBackOff 뒤의 컨테이너 출력은 /logs로, 단일 리소스가 초점이 되면 /investigate로 전달합니다.

--refresh
캐시를 우회하고 API에서 새로운 데이터를 가져옵니다.
--ttl <duration>
캐시된 스냅샷이 이보다 오래된 경우에만 다시 가져옵니다 (kubectl 스타일: 1m, 5m, 1h). 기본값: 5m. —refresh가 설정된 경우 무시됩니다.

개요의 글로벌 플래그도 적용됩니다.