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

로그 관리와 중앙 집중식 로깅 시스템 구축

by 백수A 2025. 4. 3. 16:04

로그 관리와 중앙 집중식 로깅 시스템 구축

1. 문제 상황: 로그 관리의 어려움

서비스가 확장되면서 여러 서버에서 로그가 생성되는데, 이를 효율적으로 관리하는 것이 어려운 상황이 발생했다.

  • 여러 서버에서 로그가 분산되어 있어 분석이 어려움
  • 서버 장애 발생 시 로그를 확인하려면 각각의 서버에 접속해야 함
  • 로그 저장 공간이 제한적이며 오래된 로그가 자동으로 삭제되지 않음
  • 실시간으로 로그를 분석할 수 있는 시스템이 없음

이러한 문제를 해결하기 위해 중앙 집중식 로깅 시스템을 구축할 필요가 있다.

2. 해결 과정: 중앙 집중식 로깅 시스템 개념과 구축 방법

2.1 중앙 집중식 로깅이란?

중앙 집중식 로깅(Centralized Logging)은 여러 서버에서 생성된 로그를 하나의 중앙 시스템으로 수집하고, 이를 분석할 수 있도록 구성하는 방법이다.

이 시스템을 도입하면 다음과 같은 장점이 있다.

  • 로그를 한 곳에서 모니터링하고 분석할 수 있음
  • 검색 기능을 통해 원하는 로그를 빠르게 찾을 수 있음
  • 실시간으로 로그를 분석하여 장애를 빠르게 감지할 수 있음
  • 자동 백업 및 로그 보관 정책을 설정할 수 있음

2.2 로그 수집 방식

로그를 중앙 시스템으로 전송하는 방식은 다음과 같이 나뉜다.

방식 설명
에이전트 기반 각 서버에 로그 수집 에이전트를 설치하여 중앙 서버로 전송
네트워크 전송 syslog 또는 HTTP API를 통해 로그를 직접 중앙 서버로 전송
파일 기반 로그 파일을 주기적으로 중앙 서버로 복사하여 저장

3. ELK Stack을 활용한 로그 관리

대표적인 중앙 집중식 로깅 시스템으로 ELK Stack(Elasticsearch, Logstash, Kibana)이 있다.

3.1 ELK Stack 구성 요소

  • Elasticsearch: 로그 데이터를 저장하고 검색하는 분산 검색 엔진
  • Logstash: 로그를 수집, 변환하여 Elasticsearch로 전송
  • Kibana: 수집된 로그를 시각화하고 분석하는 대시보드

3.2 ELK Stack 설치

Ubuntu 서버에서 ELK Stack을 설치하는 방법:

# Elasticsearch 설치
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt update
sudo apt install elasticsearch -y
sudo systemctl enable --now elasticsearch

# Logstash 설치
sudo apt install logstash -y

# Kibana 설치
sudo apt install kibana -y
sudo systemctl enable --now kibana

3.3 Logstash를 이용한 로그 수집

/etc/logstash/conf.d/logstash.conf 파일을 생성하고 로그 수집 설정을 추가한다.

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "nginx-logs"
  }
}

설정이 완료되면 Logstash를 실행한다.

sudo systemctl restart logstash

3.4 Kibana에서 로그 시각화

웹 브라우저에서 Kibana(http://localhost:5601)에 접속한 후, "Index Patterns"을 설정하여 로그를 검색하고 시각화할 수 있다.

4. Fluentd를 활용한 로그 수집

ELK Stack 외에도 Fluentd를 활용하여 로그를 수집할 수도 있다.

4.1 Fluentd 설치

curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent3.sh | sh

4.2 Fluentd 설정

/etc/td-agent/td-agent.conf 파일을 수정하여 로그 수집 경로를 설정한다.


  @type tail
  path /var/log/nginx/access.log
  pos_file /var/log/td-agent/nginx-access.log.pos
  tag nginx.access
  format apache



  @type elasticsearch
  host localhost
  port 9200
  logstash_format true

설정 적용 후 Fluentd를 실행한다.

sudo systemctl restart td-agent

5. 중앙 로그 저장소 구성

대규모 로그 데이터를 저장하려면 AWS S3, Google Cloud Storage(GCS) 또는 Hadoop 기반 데이터 레이크를 활용할 수 있다.

  • AWS S3: 로그를 S3 버킷에 저장하고 Athena로 분석
  • GCP Cloud Logging: Google Cloud 환경에서 로그를 자동으로 수집
  • Hadoop HDFS: 빅데이터 분석을 위한 대용량 로그 저장소

6. 알림 시스템 연동

로그를 모니터링하고 이상 징후가 발생하면 알림을 받을 수 있도록 설정할 수 있다.

6.1 Elasticsearch와 Slack 연동

watcher {
  trigger {
    schedule {
      interval: "5m"
    }
  }
  input {
    search {
      request {
        indices: "nginx-logs"
        body: {
          query: {
            match: { "response": "500" }
          }
        }
      }
    }
  }
  actions {
    notify-slack {
      webhook {
        url: "https://hooks.slack.com/services/your/webhook/url"
        method: "POST"
        body: "서버 오류 발생: 500 응답 다수 감지"
      }
    }
  }
}

7. 최종 정리

중앙 집중식 로깅 시스템을 도입하면 로그를 효율적으로 수집, 저장, 분석할 수 있다.

핵심 요약:

  • ELK Stack(Elasticsearch, Logstash, Kibana) 또는 Fluentd를 활용한 로그 수집
  • 로그를 중앙 저장소(S3, HDFS 등)에 보관하여 장기적인 관리
  • 실시간 로그 분석 및 시각화를 통한 빠른 문제 해결
  • 이상 징후 발생 시 Slack, 이메일 등의 알림 시스템 연동

이러한 전략을 적용하면 서비스의 안정성과 가시성을 높일 수 있다.