옵저버빌리티(Observability)는 OpenShift 클러스터의 상태를 모니터링하고, 문제를 진단하며, 성능을 최적화하는 것을 의미해.
OpenShift에서는 다음과 같은 요소를 활용해서 옵저버빌리티 기능을 제공해.
| 옵저버빌리티 구성 요소 | 설명 |
|---|---|
| 로그(Log) | 애플리케이션 및 시스템에서 발생하는 이벤트 기록 |
| 메트릭(Metrics) | CPU, 메모리, 네트워크 사용량 등의 수치 데이터 |
| 트레이싱(Tracing) | 애플리케이션 내부에서 요청(Request)이 어떻게 흐르는지 추적 |
| 알람(Alerting) | 특정 임계값을 초과하면 경고를 발생시킴 |
OpenShift에서는 다양한 오픈소스 모니터링 도구를 사용해서 옵저버빌리티를 구현할 수 있어.
| 도구 | 기능 |
|---|---|
| Prometheus | 메트릭 수집 및 저장 |
| Grafana | 메트릭 시각화 대시보드 |
| Elasticsearch | 로그 데이터 저장 및 검색 |
| Fluentd (or Loki) | 로그 수집 및 전달 |
| Kibana | 로그 데이터 분석 및 시각화 |
| Jaeger | 분산 트레이싱 (Tracing) |
| Alertmanager | 알람(Notification) 관리 |
메트릭은 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 성능 대시보드를 볼 수 있음
로그 관리는 클러스터 내에서 발생하는 이벤트를 기록하고 분석하는 기능이야.
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에서 로그 데이터를 검색 가능
트레이싱은 마이크로서비스 기반 애플리케이션에서 요청이 어떻게 처리되는지 추적하는 기능이야.
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에서 실행된 모든 트랜잭션을 검색
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
| 명령어 | 설명 |
|---|---|
oc logs -f <pod_name> | 특정 Pod의 실시간 로그 확인 |
oc get pods -n openshift-monitoring | 모니터링 시스템 상태 확인 |
oc get route -n openshift-monitoring grafana | Grafana 대시보드 URL 확인 |
oc get route -n openshift-logging kibana | Kibana 로그 분석 URL 확인 |
oc get route -n openshift-distributed-tracing jaeger | Jaeger 트레이싱 대시보드 URL 확인 |
oc apply -f alert-rules.yaml | Prometheus Alertmanager에 알람 규칙 적용 |
Prometheus + Grafana EFK (Elasticsearch, Fluentd, Kibana) Jaeger Prometheus Alertmanager 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에서 옵저버빌리티를 활용해서 시스템을 모니터링하고 문제를 분석할 수 있겠지? 🚀
더 궁금한 점 있으면 질문해줘! 😊