ELK 스택: 개념, 특징, 장점 및 사용 방법

ELK 스택(Elasticsearch, Logstash, Kibana)은 실시간 데이터 수집, 분석, 시각화를 위한 오픈 소스 도구 모음입니다. 분산형 구조와 강력한 검색 기능을 통해 대용량 데이터를 효율적으로 처리하고, Kibana를 통해 시각화할 수 있습니다.
ELK 스택: 개념, 특징, 장점 및 사용 방법

On this page

오늘은 ELK 스택에 대해 이야기해 보려고 해요. ELK 스택은 Elasticsearch, Logstash, Kibana로 구성된 강력한 데이터 처리 및 시각화 도구 세트입니다. 데이터 분석, 로그 수집 및 시각화를 위한 탁월한 솔루션이죠. 그럼, 하나씩 자세히 알아보겠습니다.

ELK 스택이란?

ELK 스택은 Elasticsearch, Logstash, Kibana의 약자입니다. 이 세 가지 도구가 결합되어 대용량 데이터의 실시간 분석 및 시각화를 가능하게 합니다.

  1. Elasticsearch: 분산 검색 및 분석 엔진입니다. 구조화된 데이터와 비구조화된 데이터를 모두 저장하고 검색할 수 있습니다.
  2. Logstash: 로그 수집 및 처리 파이프라인 도구입니다. 다양한 소스에서 데이터를 수집하고 변환하여 Elasticsearch로 보낼 수 있습니다.
  3. Kibana: 데이터 시각화 도구입니다. Elasticsearch의 데이터를 쉽게 탐색하고 시각화할 수 있는 대시보드를 제공합니다.

ELK 스택의 특징과 장점

특징

  • 실시간 데이터 처리: 실시간으로 데이터를 수집, 처리 및 시각화할 수 있습니다.
  • 확장성: Elasticsearch는 분산형 구조로 설계되어 있어 쉽게 확장할 수 있습니다.
  • 다양한 데이터 소스: Logstash를 통해 다양한 데이터 소스에서 데이터를 수집할 수 있습니다.
  • 강력한 검색 기능: Elasticsearch의 강력한 검색 기능을 통해 대용량 데이터에서 빠르게 원하는 정보를 찾을 수 있습니다.

장점

  • 개방형 플랫폼: 오픈 소스 프로젝트로, 커뮤니티의 지원과 다양한 플러그인을 활용할 수 있습니다.
  • 유연성: 다양한 데이터 형식을 지원하며, 필요에 맞게 데이터를 변환하고 처리할 수 있습니다.
  • 시각화: Kibana를 사용해 데이터를 쉽게 시각화하고, 대시보드를 통해 데이터를 모니터링할 수 있습니다.
  • 비용 효율성: 무료로 사용 가능한 오픈 소스 솔루션이며, 유료 지원도 제공되어 필요에 따라 선택할 수 있습니다.

ELK 스택 설치 및 사용 방법

이제 ELK 스택을 실제로 어떻게 설치하고 사용하는지 단계별로 알아볼까요? 이번 포스팅에서는 Docker Compose를 사용하여 ELK 스택을 설치하고 AWS RDS에서 데이터를 가져와서 분석하는 과정을 다룰 것입니다.

1. Docker Compose 파일 작성

먼저, Docker Compose 파일을 작성하여 ELK 스택을 구성합니다. 아래는 docker-compose.yml 파일의 예입니다.

version: '7'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.13.3
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
      - TZ=Asia/Seoul  # 서울 시간대 설정
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"

  logstash:
    build:
      context: ./logstash
    environment:
      - TZ=Asia/Seoul
    volumes:
      - ./logstash/pipeline:/usr/share/logstash/pipeline
    ports:
      - "5044:5044"
    depends_on:
      - elasticsearch

  kibana:
    image: docker.elastic.co/kibana/kibana:7.13.3
    environment:
      - ELASTICSEARCH_URL=http://elasticsearch:9200
      - TZ=Asia/Seoul
    ports:
      - "5601:5601"

volumes:
  esdata:
    driver: local

2. Logstash 설정 파일 작성

다음으로, Logstash 설정 파일을 작성하여 데이터베이스에서 데이터를 가져오도록 설정합니다.

logstash/pipeline/logstash.conf

input {
  jdbc {
    jdbc_connection_string => "jdbc:sqlserver://<AWS_RDS_ENDPOINT>;databaseName=<DATABASE_NAME>"
    jdbc_user => "<USERNAME>"
    jdbc_password => "<PASSWORD>"
    jdbc_driver_library => "/usr/share/logstash/logstash-core/lib/jars/mssql-jdbc-8.2.2.jre8.jar"
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    statement => "SELECT ... regDate FROM t_table WHERE regdate > :sql_last_value"
    use_column_value => true
    tracking_column => "regdate"
    tracking_column_type => "timestamp"
    schedule => "*/2 * * * *"
    last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run"
    clean_run => false
    jdbc_page_size => 1000
    plugin_timezone => "local"
    jdbc_default_timezone => "Asia/Seoul"
  }
}

output {
  stdout { codec => rubydebug }
  elasticsearch {
    hosts => ["<http://elasticsearch:9200>"]
    index => "t_table"
    action => "index"
    document_id => "%{...idx}"
  }
}

3. Docker Compose 실행

Docker Compose를 사용하여 ELK 스택을 실행합니다.

docker-compose up -d --build

4. Kibana 설정 및 사용

Kibana에 접속하여 Elasticsearch에 데이터를 인덱싱하고 시각화합니다.

  • Kibana에 접속: http://localhost:5601로 접속합니다.
  • 인덱스 패턴 생성:
    1. "Management"를 클릭합니다.
    2. "Stack Management" 아래에 있는 "Index Patterns"를 클릭합니다.
    3. "Create index pattern" 버튼을 클릭합니다.
    4. Index pattern에 `t_table를 입력하고 "Next step"을 클릭합니다.
    5. "Time field"에서 regDate를 선택하고 "Create index pattern"을 클릭합니다.
  • 데이터 시각화: Kibana의 "Discover" 메뉴에서 인덱스 패턴을 선택하여 데이터를 탐색하고, 다양한 시각화 도구를 사용하여 데이터를 시각화합니다.

데이터 수집 및 확인

데이터가 올바르게 수집되고 있는지 확인하려면 Logstash 로그와 Elasticsearch 인덱스를 확인합니다.

Logstash 로그 확인

docker-compose logs logstash

Elasticsearch 인덱스 확인

bash코드 복사
curl -X GET "localhost:9200/t_table/_search?pretty" -H 'Content-Type: application/json' -d '{
  "size": 10,
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "regDate": {
        "order": "desc"
      }
    }
  ]
}'

이 명령어를 통해 Elasticsearch에 인덱싱된 데이터가 제대로 수집되었는지 확인할 수 있습니다.

결론

ELK 스택은 로그 수집, 데이터 분석, 시각화를 위한 강력한 도구 세트입니다. Docker Compose를 사용하면 손쉽게 ELK 스택을 설치하고 관리할 수 있으며, 다양한 데이터 소스에서 데이터를 수집하여 실시간으로 분석할 수 있습니다. 이번 포스팅을 통해 ELK 스택의 개념과 설치 방법을 이해하고, 실제 데이터를 수집하고 시각화하는 방법을 익히셨길 바랍니다. 추가적으로 궁금한 점이나 도움이 필요한 부분이 있다면 언제든지 질문해 주세요!

행복한 데이터 분석 되세요! 😊

Subscribe to Keun's Story newsletter and stay updated.

Don't miss anything. Get all the latest posts delivered straight to your inbox. It's free!
Great! Check your inbox and click the link to confirm your subscription.
Error! Please enter a valid email address!