[Grafana Express] Grafana의 Express(node.js)를 위한 Metrics
이전 글
[Mac] Express API서버 모니터링 구축 (feat. Prometheus, Grafana)
[Docker] Grafana, Prometheus를 활용한 API서버(Express) 모니터링
안녕하세요.
이번 글에서는 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/
'IT' 카테고리의 다른 글
[Docker] Grafana, Prometheus를 활용한 API서버(Express) 모니터링 (1) | 2024.01.29 |
---|---|
[Mac] 터미널에서 Putty처럼 사용하기 (0) | 2023.09.27 |
[Mac] Homebrew 설치 (0) | 2023.09.27 |
[Express Node] api 서버에 api key 도입하기 (0) | 2023.08.10 |