본문 바로가기
IT

[Grafana Express] Grafana의 Express(node.js)를 위한 Metrics

by js_world_blog 2024. 1. 29.
반응형

[Grafana Express] Grafana의 Express(node.js)를 위한 Metrics

 

이전 글

[Mac] Express API서버 모니터링 구축 (feat. Prometheus, Grafana)

[Docker] Grafana, Prometheus를 활용한 API서버(Express) 모니터링

 

 

 

Metrics for node.js and express router status

 

 

안녕하세요.

이번 글에서는 Grafana에서 Express API 서버 모니터링을 위한 Metrics와 대시보드구성을 공유하고자 합니다.

우선 API서버 모니터링에서 고려해야 할 지표들과 해당 지표들을 모니터링하기 위한 구성 방법에 대해 알아보겠습니다.

 

 

1. API서버 모니터링에서 고려할 지표들

우선 챗gpt에게 API서버를 모니터링할 때 고려해야할 지표들에 대해 물어보았다. 운영에 필요한 추가적인 지표들이 있을 수 있겠지만 이 정도 정보만 있어도 운영 중 장애대처에 어느 정도 다 대응할 수 있을 것으로 보인다.

 

  • 응답 시간 (Response Time): API 요청에 대한 응답 시간을 측정합니다. 이는 사용자 경험과 서비스 성능에 직접적인 영향을 미칩니다.
  • 에러율 (Error Rate): API 호출 중에 발생한 오류의 비율을 측정합니다. 에러율이 높으면 서버 문제나 클라이언트 요청 오류를 나타낼 수 있습니다.
  • 트래픽 양 (Traffic Volume): API 서버로 들어오는 요청의 양을 모니터링합니다. 트래픽 증가나 감소는 서비스에 대한 인기와 관련이 있을 수 있습니다.
  • 가용성 (Availability): API 서버가 얼마나 가용성이 있는지 측정합니다. 가용성 문제는 사용자에게 서비스를 제공하지 못하게 만들 수 있습니다.
  • 시스템 리소스 사용량 (Resource Usage): CPU, 메모리, 디스크 사용량 등과 같은 시스템 리소스의 사용량을 확인하여 서버의 성능을 평가합니다.
  • 대기열 길이 (Queue Length): 대기 중인 요청의 수를 모니터링하여 서버 부하를 추적합니다. 긴 대기열은 서버가 처리 속도를 따라잡지 못하고 있다는 신호일 수 있습니다.
  • 서버 응답 코드 (HTTP Status Codes): 서버가 반환하는 HTTP 응답 코드를 확인하여 성공, 실패 및 다양한 상태를 추적합니다.
  • 보안 이벤트 (Security Events): 로그인 시도, 권한 오류 등과 같은 보안 이벤트를 감지하여 보안 문제를 식별합니다.

 

 

2. 구성

처음에는 Metrics를 뽑아내는 것을 설치해서 대시보드에 내가 필요한 지표를 하나하나 구성하는 식으로 하다가,

누군가는 이것을 다 해보지않았을까? 라는 생각에 구글링을 하고 역시나 공유되어 있는 좋은 구성을 찾아 공유한다.

 

 

2.1 API서버에 Metrics 설정 추가(프로메테우스 미들웨어 추가)

 

Express 서버에 express-prometheus-middleware 의존성을 추가해 준다.

npm install express-prometheus-middleware

#또는 

yarn add express-prometheus-middleware

 

 

그리고 Express 서버 코드의 적절한 위치에 아래 내용을 추가한다.

 

const prometheusMiddleware = require("express-prometheus-middleware");

app.use(prometheusMiddleware());

 

 

세팅이 정상적으로 완료되었다면 /metrics 경로를 통해 metrics를 볼 수 있다.

 

http://localhost:3000/metrics 

 

 

 

 

2.2 Grafana에서 Metrics 대시보드 불러오기

 

아래 링크로 들어가서 우측의 Download JSON을 클릭하여 대시보드의 JSON 파일을 다운로드한다.

 

https://grafana.com/grafana/dashboards/14565-node-js-dashboard/

 

Node.js and Express Metrics | Grafana Labs

Thank you! Your message has been received!

grafana.com

 

 

그리고 그라파나의 대시보드에서 New -> import를 클릭한다.

 

 

 

다운로드한 JOSN파일을 아래 페이지에서 업로드하면 된다.

 

 

 

업로드가 완료되면 대시보드가 생긴다.

대시보드 구성은 아래와 같다. (사진출처 : Grafana Labs)

 

 

 

정말 간단하게 모니터링 대시보드를 추가하였다.

 

 

 

 

 

* 참고

https://www.npmjs.com/package/express-prometheus-middleware 

https://grafana.com/grafana/dashboards/14565-node-js-dashboard/

 

반응형