본문 바로가기
카테고리 없음

제로부터 DevOps까지 9편 - 모니터링 & 로깅

by 타임 플레그 2025. 5. 29.
반응형

운영 환경에서의 모니터링 & 로깅 - 진짜 '운영자'의 첫걸음

“서비스는 배포 후부터가 진짜 시작입니다.”
배포를 마친 후 우리는 한 발짝 더 나아가야 합니다. 이제부터는 장애를 예방하고, 트래픽을 감시하고, 문제를 추적해야 합니다. 이 모든 것을 가능하게 해주는 도구가 바로 모니터링과 로깅 시스템입니다.


🧭 왜 운영 환경에 모니터링과 로깅이 필요한가?

  • “배포 후 접속이 안 돼요.” → 누구도 알림을 받지 못했다면?
  • “에러가 났는데 로그가 없어요.” → 어디서부터 확인해야 할까?

개발자는 기능을 만들고, 운영자는 시스템을 유지합니다.
하지만 스타트업이나 소규모 팀에서는 이 역할이 곧 당신 자신이 됩니다.

🧠 실전 경험 기반 통찰

  • 운영 문제는 대부분 “몰랐기 때문에” 심각해진다
  • 로깅과 모니터링은 예방과 대응의 시작점이다

🔍 모니터링이란?

모니터링은 서비스의 상태를 실시간으로 감시하고, 이상 징후를 조기에 발견하는 행위입니다.

대표 도구

  • Prometheus: 메트릭 수집 & 시계열 데이터 저장
  • Grafana: 시각화 대시보드 제공

수집 가능한 정보

  • CPU, 메모리, 네트워크 사용량
  • HTTP 요청 수, 에러율
  • DB 연결 상태

예시

  • 트래픽 급증 → 시스템 부하 → 장애 발생 → 사전 대응 가능

📦 로깅이란?

로깅은 서비스에서 발생한 사건(에러, 요청 등)을 기록하는 과정입니다.

대표 도구

  • ELK Stack (Elasticsearch + Logstash + Kibana)
  • Loki (Grafana + 로그 스트리밍에 최적화된 구조)

로그로 알 수 있는 것들

  • 어떤 API가 호출되었는가?
  • 어떤 에러가 얼마나 자주 나는가?
  • 어느 시점에 문제가 시작됐는가?
  • 특정 사용자에게만 발생하는 이슈 파악

🧪 Docker 기반 간단 연동 실습

1. Grafana + Prometheus

docker-compose.yml 예시

version: '3.8'
 
services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
 
grafana:
image: grafana/grafana
ports:
- "3001:3000"

prometheus.yml 설정 예시

scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['host.docker.internal:9100']

Tip: node-exporter를 통해 서버 리소스 모니터링을 더 정밀하게 할 수 있습니다.

2. Loki + Grafana 로그 연동

  • Loki는 Docker 로그를 스트리밍해서 실시간 시각화 가능
  • loki, promtail, grafana를 조합해 로그 대시보드 구성
  • JSON 로그 구조화를 통해 검색과 필터가 쉬워짐

📡 알림 시스템 연동하기

  • Grafana Alerting → 특정 조건 충족 시 Slack, 이메일 등으로 알림 전송
  • Slack Webhook 설정 → 무료 요금제로도 충분히 활용 가능
Content-Type: application/json
 
{
"text": "[ALERT] 서비스 응답 시간 지연!"
}

실전 팁: 알림은 너무 많으면 무시된다. 중요한 조건만 지정하고, 주기 설정을 정교하게 하자.


🚨 자주 발생하는 운영 이슈 & 체크리스트

항목점검 포인트

서버 재시작 로그 백업, 포트 충돌 확인
DB 연결 끊김 DB 컨테이너 상태, 볼륨 권한 확인
API 오류 로그 확인, Nginx 에러 로그 병행 검토
트래픽 급증 리소스 모니터링, Auto Scaling 고려
로그 디스크 초과 logrotate 설정, 로그 저장소 분리

🧭 회고: 이제는 “개발자”가 아닌 “운영자”

개발과 배포만으로 끝나지 않는 이유, 바로 이 운영 과정 때문입니다.
이제 우리는 코드만 보는 것이 아니라, 시스템 전체를 바라보는 눈을 가지게 되었습니다.

👀 우리가 배운 것

  • 장애는 예방 가능하다
  • 지표와 로그는 운영자의 무기다
  • 도구보다 중요한 건 “관찰하고 개선하려는 태도”다

운영을 경험해본 개발자만이, 신뢰할 수 있는 서비스를 설계할 수 있습니다.


🔮 다음 편 예고: 자동 복구 & 장애 대응 시스템 설계

장애가 발생했을 때, 자동으로 복구되거나 최소한 사람이 빠르게 대응할 수 있어야 합니다.
다음 편에서는 이를 위한 자동 재시작, 헬스체크, 롤백 시나리오 등을 다룹니다.


🔧 지금부터는 당신이 운영팀입니다.
우리는 ‘개발자’에서 ‘DevOps 엔지니어’로 성장 중입니다.

반응형