많은 기업들이 웹 기반 애플리케이션을 개발하고 운영 중입니다. 이러한 애플리케이션은 자바스크립트로 작성되는 경우가 많고, 사용자의 행동 로그 등의 정보를 수집하여 분석하는 것은 중요한 부분입니다. 이때 도커를 활용하면 자바스크립트 앱의 로그 수집과 분석을 간편하게 할 수 있습니다.
1. 도커로 ELK 스택 구성하기
ELK (Elasticsearch, Logstash, Kibana) 스택은 로그 데이터를 처리하고 시각화하기 위한 툴셋입니다. 도커를 사용하여 간단하게 ELK 스택을 구성할 수 있습니다.
스택 구성
- Elasticsearch: 로그 데이터를 저장하고 검색하는 역할을 합니다.
- Logstash: 로그 데이터를 수집하여 Elasticsearch에 전송하는 데이터 파이프라인 역할을 합니다.
- Kibana: Elasticsearch에 저장된 로그 데이터를 시각화하고 분석하는 대시보드 역할을 합니다.
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로 로그 데이터를 전송하는 코드입니다. message
와 level
등의 로그 데이터를 전송할 수 있습니다.
4. Kibana를 통한 로그 데이터 시각화 및 분석
ELK 스택을 구성하고 Logstash를 통해 로그 데이터를 수집한 뒤, Kibana를 사용하여 로그 데이터를 시각화하고 분석할 수 있습니다. 웹 브라우저에서 localhost:5601
로 접속하여 Kibana를 사용할 수 있습니다.
로그 데이터를 다양한 형태로 시각화하고 검색하여 분석할 수 있으며, 필요에 따라 대시보드를 구성하여 원하는 정보를 한눈에 확인할 수 있습니다.
마무리
도커를 활용하여 자바스크립트 앱의 로그 수집과 분석을 간편하게 할 수 있습니다. ELK 스택의 각 컴포넌트를 구성하고 Logstash를 활용하여 로그 데이터를 처리하고, Kibana를 통해 시각화하고 분석할 수 있습니다. 이를 통해 사용자의 행동 로그 등을 기반으로한 데이터 분석을 수행할 수 있습니다.
#javascript #docker