도커를 활용한 자바스크립트 앱의 로그 수집 및 분석 방법

많은 기업들이 웹 기반 애플리케이션을 개발하고 운영 중입니다. 이러한 애플리케이션은 자바스크립트로 작성되는 경우가 많고, 사용자의 행동 로그 등의 정보를 수집하여 분석하는 것은 중요한 부분입니다. 이때 도커를 활용하면 자바스크립트 앱의 로그 수집과 분석을 간편하게 할 수 있습니다.

1. 도커로 ELK 스택 구성하기

ELK (Elasticsearch, Logstash, Kibana) 스택은 로그 데이터를 처리하고 시각화하기 위한 툴셋입니다. 도커를 사용하여 간단하게 ELK 스택을 구성할 수 있습니다.

스택 구성

version: '3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0
    ports:
      - 9200:9200
    networks:
      - elk-network
  logstash:
    image: docker.elastic.co/logstash/logstash:7.15.0
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
    networks:
      - elk-network
  kibana:
    image: docker.elastic.co/kibana/kibana:7.15.0
    ports:
      - 5601:5601
    networks:
      - elk-network
networks:
  elk-network:

2. 로그 데이터 수집 설정하기

자바스크립트 앱의 로그 데이터를 수집하기 위해서는 로그 데이터를 Logstash로 전송할 필요가 있습니다. 이를 위해 Logstash에 로그 데이터를 전송하는 설정을 구성해야 합니다.

logstash.conf

input {
  tcp {
    port => 5000
    codec => json_lines
  }
}
output {
  elasticsearch {
    hosts => "elasticsearch:9200"
    index => "app-logs-%{+YYYY.MM.dd}"
  }
}

위 설정은 JSON 형식의 로그 데이터를 TCP 포트 5000으로 수집하여 Elasticsearch에 전송하는 설정입니다. app-logs-날짜 형식으로 인덱스를 생성하여 저장합니다.

3. 자바스크립트 앱에 로그 수집 기능 추가하기

자바스크립트 앱에 로그 수집 기능을 추가하여 Logstash로 로그 데이터를 전송해야 합니다. 이를 위해 다음과 같이 logstash-nodejs 모듈을 사용할 수 있습니다.

const Logstash = require('logstash-nodejs');

const logstash = new Logstash({
  type: 'tcp',
  host: 'logstash',
  port: 5000
});

logstash.send({
  message: '로그 메시지',
  level: 'info'
});

위 예제는 logstash-nodejs 모듈을 사용하여 Logstash로 로그 데이터를 전송하는 코드입니다. messagelevel 등의 로그 데이터를 전송할 수 있습니다.

4. Kibana를 통한 로그 데이터 시각화 및 분석

ELK 스택을 구성하고 Logstash를 통해 로그 데이터를 수집한 뒤, Kibana를 사용하여 로그 데이터를 시각화하고 분석할 수 있습니다. 웹 브라우저에서 localhost:5601로 접속하여 Kibana를 사용할 수 있습니다.

로그 데이터를 다양한 형태로 시각화하고 검색하여 분석할 수 있으며, 필요에 따라 대시보드를 구성하여 원하는 정보를 한눈에 확인할 수 있습니다.

마무리

도커를 활용하여 자바스크립트 앱의 로그 수집과 분석을 간편하게 할 수 있습니다. ELK 스택의 각 컴포넌트를 구성하고 Logstash를 활용하여 로그 데이터를 처리하고, Kibana를 통해 시각화하고 분석할 수 있습니다. 이를 통해 사용자의 행동 로그 등을 기반으로한 데이터 분석을 수행할 수 있습니다.

#javascript #docker