도커를 활용한 자바스크립트 앱의 모니터링 및 경고 설정 방법

도커(Docker)는 애플리케이션을 컨테이너로 패키징하여 실행하는 오픈 소스 플랫폼입니다. 도커는 가볍고 효율적인 애플리케이션 실행 환경을 제공하며, 자바스크립트 앱의 모니터링 및 경고 설정에도 유용하게 활용할 수 있습니다. 이번 포스트에서는 도커를 활용하여 자바스크립트 앱을 모니터링하고, 경고 설정을 하는 방법에 대해 알아보겠습니다.

1. 도커 컨테이너에 모니터링 도구 설치하기

먼저, 도커 컨테이너에 모니터링 도구를 설치해야 합니다. 여러 가지 선택지 중에서는 PrometheusGrafana 조합이 인기가 있습니다. Prometheus는 오픈 소스 모니터링 및 경고 도구로, Grafana는 데이터를 시각화하여 모니터링 대시보드를 구성하는 도구입니다.

다음은 도커 컨테이너에 PrometheusGrafana를 설치하는 예제입니다.

$ docker run -d -p 9090:9090 --name prometheus prom/prometheus
$ docker run -d -p 3000:3000 --name grafana grafana/grafana

2. 자바스크립트 앱에 모니터링 설정하기

자바스크립트 앱을 도커 컨테이너로 실행하기 전에, 모니터링 설정을 추가해야 합니다. 여기에서는 expressprom-client 라이브러리를 사용하여 예제를 작성하였습니다.

const express = require('express');
const { collectDefaultMetrics, register } = require('prom-client');

const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.get('/metrics', (req, res) => {
  res.set('Content-Type', register.contentType);
  res.end(register.metrics());
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

// 기본 메트릭 수집 설정
collectDefaultMetrics({ timeout: 5000 });

위 예제에서는 /metrics 엔드포인트를 추가하여 prom-client를 통해 메트릭 정보를 수집하고, collectDefaultMetrics({ timeout: 5000 })를 사용하여 기본 메트릭을 5초마다 수집하도록 설정하였습니다.

3. 도커 컨테이너 실행하기

자바스크립트 앱을 도커 컨테이너로 실행하기 위해 Dockerfile을 작성합니다.

FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD [ "node", "app.js" ]

위 Dockerfile을 사용하여 도커 이미지를 빌드하고, 앱을 실행합니다.

$ docker build -t my-app .
$ docker run -d -p 3000:3000 --name my-app my-app

4. Grafana 대시보드 설정하기

마지막으로, Grafana 대시보드를 설정하여 모니터링 정보를 시각화할 수 있습니다. Grafana에 접속한 후, ConfigurationData Sources에서 Prometheus를 추가하고, DashboardsImport에서 예제 대시보드를 가져올 수 있습니다.

여기까지 설정을 완료하면, 자바스크립트 앱의 모니터링 정보를 Grafana 대시보드에서 확인할 수 있습니다.

결론

이번 포스트에서는 도커를 활용하여 자바스크립트 앱의 모니터링 및 경고 설정 방법에 대해 알아보았습니다. 도커 컨테이너에 Prometheus와 Grafana를 설치하고, 자바스크립트 앱에 모니터링 설정을 추가하는 방법을 살펴보았습니다. 이를 통해 애플리케이션의 상태를 실시간으로 모니터링하고, 필요한 경우 경고 설정을 통해 예외 상황에 대처할 수 있습니다.

#도커 #자바스크립트