Red Hat OpenShift 플랫폼 - 옵저

이eun·2025년 3월 10일

Red Hat OpenShift의 옵저버빌리티(Observability) 개념

옵저버빌리티(Observability)는 OpenShift 클러스터의 상태를 모니터링하고, 문제를 진단하며, 성능을 최적화하는 것을 의미해.

OpenShift에서는 다음과 같은 요소를 활용해서 옵저버빌리티 기능을 제공해.

옵저버빌리티 구성 요소설명
로그(Log)애플리케이션 및 시스템에서 발생하는 이벤트 기록
메트릭(Metrics)CPU, 메모리, 네트워크 사용량 등의 수치 데이터
트레이싱(Tracing)애플리케이션 내부에서 요청(Request)이 어떻게 흐르는지 추적
알람(Alerting)특정 임계값을 초과하면 경고를 발생시킴

1. OpenShift에서 제공하는 옵저버빌리티 툴

OpenShift에서는 다양한 오픈소스 모니터링 도구를 사용해서 옵저버빌리티를 구현할 수 있어.

도구기능
Prometheus메트릭 수집 및 저장
Grafana메트릭 시각화 대시보드
Elasticsearch로그 데이터 저장 및 검색
Fluentd (or Loki)로그 수집 및 전달
Kibana로그 데이터 분석 및 시각화
Jaeger분산 트레이싱 (Tracing)
Alertmanager알람(Notification) 관리

2. 메트릭(Metrics) - 클러스터 및 애플리케이션 성능 모니터링

메트릭은 CPU 사용량, 메모리 사용량, 네트워크 트래픽 등과 같은 시스템 상태 정보를 수집하는 데이터야.

📌 Prometheus를 사용하여 메트릭 확인

oc get pods -n openshift-monitoring

👉 prometheus-k8s-* Pod가 실행 중인지 확인

📌 메트릭 데이터 수집 예제

curl -s http://<prometheus-service>:9090/api/v1/query?query=container_cpu_usage_seconds_total

👉 특정 컨테이너의 CPU 사용량을 Prometheus에서 직접 조회 가능

📌 Grafana 대시보드에서 메트릭 시각화

oc get route -n openshift-monitoring grafana

👉 URL을 브라우저에서 열면 OpenShift 성능 대시보드를 볼 수 있음


3. 로그(Log) - 애플리케이션 및 시스템 이벤트 기록

로그 관리는 클러스터 내에서 발생하는 이벤트를 기록하고 분석하는 기능이야.
OpenShift에서는 Elasticsearch, Fluentd, Kibana(EFK 스택)를 활용해서 로그를 관리할 수 있어.

📌 애플리케이션 로그 확인

oc logs -f <pod_name>

📌 클러스터 시스템 로그 확인 (OpenShift 내부 로그)

oc logs -n openshift-logging

📌 Elasticsearch에서 로그 검색

oc exec -n openshift-logging -it <elasticsearch-pod> -- curl -XGET 'localhost:9200/_cat/indices?v'

👉 저장된 로그 인덱스 확인 가능

📌 Kibana에서 로그 분석

oc get route -n openshift-logging kibana

👉 URL을 브라우저에서 열면 Kibana에서 로그 데이터를 검색 가능


4. 트레이싱(Tracing) - 애플리케이션 내부 요청 흐름 추적

트레이싱은 마이크로서비스 기반 애플리케이션에서 요청이 어떻게 처리되는지 추적하는 기능이야.
OpenShift에서는 Jaeger를 사용해서 트레이싱을 구현할 수 있어.

📌 Jaeger 대시보드 확인

oc get route -n openshift-distributed-tracing jaeger

👉 URL을 브라우저에서 열면 Jaeger 대시보드를 볼 수 있음

📌 Jaeger API를 사용하여 특정 서비스의 트레이스 검색

curl -X GET "http://<jaeger-service>:16686/api/traces?service=my-app"

👉 my-app에서 실행된 모든 트랜잭션을 검색


5. 알람(Alerting) - 특정 이벤트 발생 시 알림 전송

Alerting은 서버가 다운되거나, CPU 사용량이 급증하는 등 문제가 발생했을 때 알림을 보내는 기능이야.
OpenShift에서는 Prometheus Alertmanager를 사용해서 알림을 설정할 수 있어.

📌 Alertmanager에서 현재 설정된 알람 확인

oc get pods -n openshift-monitoring | grep alertmanager

📌 CPU 사용량이 80% 이상일 때 알람 설정 예제 (Alertmanager 설정 파일)

groups:
- name: cpu-alerts
  rules:
  - alert: HighCPUUsage
    expr: 100 * (sum by(instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) / sum by(instance) (rate(node_cpu_seconds_total[5m]))) > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "High CPU usage detected"
      description: "CPU usage is above 80% for more than 5 minutes."

📌 설정 적용 후 Prometheus에 반영

oc apply -f alert-rules.yaml

6. OpenShift에서 Observability 명령어 정리

명령어설명
oc logs -f <pod_name>특정 Pod의 실시간 로그 확인
oc get pods -n openshift-monitoring모니터링 시스템 상태 확인
oc get route -n openshift-monitoring grafanaGrafana 대시보드 URL 확인
oc get route -n openshift-logging kibanaKibana 로그 분석 URL 확인
oc get route -n openshift-distributed-tracing jaegerJaeger 트레이싱 대시보드 URL 확인
oc apply -f alert-rules.yamlPrometheus Alertmanager에 알람 규칙 적용

📌 정리

  1. 옵저버빌리티(Observability)란?
    • 클러스터 및 애플리케이션 상태를 모니터링하고 문제를 분석하는 과정
  2. OpenShift에서 활용하는 도구
    • 메트릭(Metrics)Prometheus + Grafana
    • 로그(Log)EFK (Elasticsearch, Fluentd, Kibana)
    • 트레이싱(Tracing)Jaeger
    • 알람(Alerting)Prometheus Alertmanager
  3. 중요한 OpenShift 명령어
    • oc logs -f <pod> → 실시간 로그 확인
    • oc get route -n openshift-monitoring grafana → 성능 대시보드
    • oc get route -n openshift-logging kibana → 로그 분석
    • oc get route -n openshift-distributed-tracing jaeger → 트레이싱

이제 OpenShift에서 옵저버빌리티를 활용해서 시스템을 모니터링하고 문제를 분석할 수 있겠지? 🚀
더 궁금한 점 있으면 질문해줘! 😊

0개의 댓글