도커(Docker)는 애플리케이션을 컨테이너로 패키징하여 실행하는 오픈 소스 플랫폼입니다. 도커는 가볍고 효율적인 애플리케이션 실행 환경을 제공하며, 자바스크립트 앱의 모니터링 및 경고 설정에도 유용하게 활용할 수 있습니다. 이번 포스트에서는 도커를 활용하여 자바스크립트 앱을 모니터링하고, 경고 설정을 하는 방법에 대해 알아보겠습니다.
1. 도커 컨테이너에 모니터링 도구 설치하기
먼저, 도커 컨테이너에 모니터링 도구를 설치해야 합니다. 여러 가지 선택지 중에서는 Prometheus
와 Grafana
조합이 인기가 있습니다. Prometheus
는 오픈 소스 모니터링 및 경고 도구로, Grafana
는 데이터를 시각화하여 모니터링 대시보드를 구성하는 도구입니다.
다음은 도커 컨테이너에 Prometheus
와 Grafana
를 설치하는 예제입니다.
$ docker run -d -p 9090:9090 --name prometheus prom/prometheus
$ docker run -d -p 3000:3000 --name grafana grafana/grafana
2. 자바스크립트 앱에 모니터링 설정하기
자바스크립트 앱을 도커 컨테이너로 실행하기 전에, 모니터링 설정을 추가해야 합니다. 여기에서는 express
와 prom-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에 접속한 후, Configuration
→ Data Sources
에서 Prometheus를 추가하고, Dashboards
→ Import
에서 예제 대시보드를 가져올 수 있습니다.
여기까지 설정을 완료하면, 자바스크립트 앱의 모니터링 정보를 Grafana 대시보드에서 확인할 수 있습니다.
결론
이번 포스트에서는 도커를 활용하여 자바스크립트 앱의 모니터링 및 경고 설정 방법에 대해 알아보았습니다. 도커 컨테이너에 Prometheus와 Grafana를 설치하고, 자바스크립트 앱에 모니터링 설정을 추가하는 방법을 살펴보았습니다. 이를 통해 애플리케이션의 상태를 실시간으로 모니터링하고, 필요한 경우 경고 설정을 통해 예외 상황에 대처할 수 있습니다.