[nodejs] Docker 컨테이너를 이용한 Node.js 애플리케이션 모니터링 및 로깅

Docker는 많은 기업에서 애플리케이션을 배포하고 운영하기 위한 주요 도구로 사용되고 있습니다. Node.js는 플랫폼이나 운영체제에 상관없이 동작할 수 있기 때문에 Docker와도 매우 호환이 잘 됩니다. 이번에는 Docker 컨테이너를 이용하여 Node.js 애플리케이션을 모니터링하고 로깅하는 방법에 대해 알아보겠습니다.

Node.js 애플리케이션을 Docker 컨테이너로 실행

먼저, Node.js 애플리케이션을 Docker 컨테이너로 실행하는 방법은 다음과 같습니다.

docker run -d -p 3000:3000 --name my-node-app my-node-image

위 명령어에서 my-node-image는 Node.js 애플리케이션을 포함한 Docker 이미지의 이름이며, my-node-app은 Docker 컨테이너의 이름입니다.

모니터링

Node.js 애플리케이션을 모니터링하기 위해서는 PrometheusGrafana와 같은 오픈 소스 도구를 활용할 수 있습니다.

version: '3'
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    ports:
      - '9090:9090'

  node-exporter:
    image: prom/node-exporter
    ports:
      - '9100:9100'

  grafana:
    image: grafana/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=yourpassword
    ports:
      - '3000:3000'

위의 예시는 Node.js 애플리케이션을 모니터링하기 위한 docker-compose.yml 파일로, Prometheus, Node Exporter, Grafana를 함께 실행하고 있습니다.

로깅

Docker 컨테이너 내에서 Node.js의 로그를 수집하고 관리하기 위해서는 ELK 스택 (Elasticsearch, Logstash, Kibana)와 같은 도구를 활용할 수 있습니다.

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.12.1

위 명령어는 Elasticsearch를 Docker 컨테이너로 실행하는 예시입니다. Logstash와 Kibana도 동일한 방식으로 실행할 수 있습니다.

Docker 컨테이너를 이용한 Node.js 애플리케이션 모니터링과 로깅은 애플리케이션 운영에 있어 매우 중요한 부분이며, Docker와 함께 다양한 오픈 소스 도구를 활용하여 효율적으로 관리할 수 있습니다.