2.13. 클러스터 이벤트 및 로그 모니터링

OpenShift Container Platform 클러스터를 모니터링하고 감사하는 기능은 부적절한 사용으로부터 클러스터와 사용자를 보호하는 데 중요한 부분입니다.

이 용도에 유용한 클러스터 수준 정보의 두 가지 주요 소스, 즉 이벤트와 로깅이 있습니다.

2.13.1. 클러스터 이벤트 감시

클러스터 관리자는 Event 리소스 유형을 익히고 시스템 이벤트 목록을 검토하여 관심있는 이벤트를 결정하는 것이 좋습니다. 이벤트는 네임스페이스, 즉 관련 리소스의 네임스페이스 또는 클러스터 이벤트의 경우에는 default 네임스페이스와 연결됩니다. 기본 네임스페이스에는 인프라 구성요소와 관련된 노드 이벤트 및 리소스 이벤트와 같은 클러스터 모니터링 또는 감사 관련 이벤트가 있습니다.

마스터 API 및 oc 명령은 이벤트 목록의 범위를 노드 관련 항목으로만 지정하는 매개변수는 제공하지 않습니다. 간단한 접근 방식은 grep을 사용하는 것입니다.

$ oc get event -n default | grep Node

출력 예

1h         20h         3         origin-node-1.example.local   Node      Normal    NodeHasDiskPressure   ...

더 유연한 접근 방식은 다른 툴에서 처리할 수 있는 양식으로 이벤트를 출력하는 것입니다. 예를 들어 다음 예에서는 JSON 출력을 대상으로 jq 툴을 사용하여 NodeHasDiskPressure 이벤트만 추출합니다.

$ oc get events -n default -o json \
  | jq '.items[] | select(.involvedObject.kind == "Node" and .reason == "NodeHasDiskPressure")'

출력 예

{
  "apiVersion": "v1",
  "count": 3,
  "involvedObject": {
    "kind": "Node",
    "name": "origin-node-1.example.local",
    "uid": "origin-node-1.example.local"
  },
  "kind": "Event",
  "reason": "NodeHasDiskPressure",
  ...
}

리소스 생성, 수정 또는 삭제와 관련된 이벤트도 클러스터의 오용을 탐지하는 데 적합할 수 있습니다. 예를 들어 다음과 같은 쿼리를 사용하면 과도한 이미지 가져오기를 찾을 수 있습니다.

$ oc get events --all-namespaces -o json \
  | jq '[.items[] | select(.involvedObject.kind == "Pod" and .reason == "Pulling")] | length'

출력 예

4

참고

네임스페이스가 삭제되면 해당 이벤트도 삭제됩니다. 이벤트도 만료될 수 있으며 etcd 스토리지가 가득 차지 않도록 삭제됩니다. 이벤트는 영구 레코드로 저장되지 않으며 시간 경과에 따른 통계를 캡처하려면 자주 폴링해야 합니다.

2.13.2. 로깅

oc log 명령을 사용하면 컨테이너 로그, 빌드 구성, 배포를 실시간으로 볼 수 있습니다. 다른 사용자는 다른 로그에 액세스할 수 있습니다.

  • 프로젝트에 액세스할 수 있는 사용자는 기본적으로 해당 프로젝트의 로그를 볼 수 있습니다.
  • 관리자 역할이 있는 사용자는 모든 컨테이너 로그에 액세스할 수 있습니다.

추가 감사 및 분석을 위해 로그를 저장하려면 cluster-logging 애드온 기능을 사용하여 시스템, 컨테이너 및 감사 로그를 수집, 관리 및 볼 수 있습니다. OpenShift Elasticsearch Operator 및 Red Hat OpenShift Logging Operator를 통해 OpenShift Logging을 배포, 관리 및 업그레이드할 수 있습니다.

2.13.3. 감사 로그

감사 로그를 사용하면 사용자, 관리자 또는 기타 OpenShift Container Platform 구성요소의 동작과 관련된 일련의 활동을 따를 수 있습니다. API 감사 로깅은 각 서버에서 수행됩니다.