API 모니터링

유정훈·2023년 6월 20일
0

Java Spring API 모니터링

Dependencies 추가

implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'

application.yml 추가

management:
  endpoints:
    web:
      exposure:
        include: health, info, prometheus
  • actuator만 port변경을 원할 땐,
    managerment:server:port=3333 으로 하면 localhost:3333/actuator/prometheu로 port가 변경됨.

localhost:8080/actuator/prometheus

  • /junghun 이라는 endpoint의 접속 횟수와 접속하는데 걸린 최대 시간, 합을 출력

Prometheus Target

scrape_configs:
  - job_name: 'spring'
	metrics_path: '/actuator/prometheus'
	static_configs:
	  - targets: ['HOST:PORT']

Node js (express) API 모니터링

Express-prom-bundle

Express-prom-bundle npm 라이브러리를 사용

Github

npm: express-prom-bundle

npm install

npm install prom-client express-prom-bundle --save

import module

import module

const promBundle = require("express-prom-bundle");

testeditorApp = express(); // Metric App

const metricsMiddleware = promBundle({
	includeMethod: true,
	includePath: true,
	includeStatusCode: true,
	includeUp: true,
	customLabels: {project_name: 'test_name_labels', project_type: 'test_metrics_labels'},
	metricType: 'summary',
	autoregister: false,
	promClient: {
		collectDefaultMetrics: {
		}
	}
});
editorApp.use(metricsMiddleware);
	
testeditorApp.use(metricsMiddleware.metricsMiddleware);
testeditorApp.listen(3000, () => {
	console.log('Metrics listening on port', 3000);
});
  • metrics는 3000번 포트로 이동 localhost:3000/metrics
  • metricType: 'summary'로 quantile까지 출력

localhost:3000/metrics

http_request_duration_seconds{quantile="0.5",status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.0007122
http_request_duration_seconds{quantile="0.75",status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.001050275
http_request_duration_seconds{quantile="0.95",status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.0015713
http_request_duration_seconds{quantile="0.98",status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.0015713
http_request_duration_seconds{quantile="0.99",status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.0015713
http_request_duration_seconds{quantile="0.999",status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.0015713
http_request_duration_seconds_sum{status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 0.006187
http_request_duration_seconds_count{status_code="200",method="GET",path="/junghun",project_name="test_name_labels",project_type="test_metrics_labels"} 7
  • /junghun 이라는 endpoint의 접속 횟수와 접속하는데 걸린 시간 합과 백분위 시간을 출력
profile
안녕하세요!

0개의 댓글