이것이 점프 투 공작소

프로메테우스 PUSHGATEWAY에 대해 알아보자 본문

모니터링

프로메테우스 PUSHGATEWAY에 대해 알아보자

겅겅겅 2023. 8. 20. 20:04

PUSHGATEWAY란?

프로메테우스에서 Metric 수집을 위한 PUSH 기반 컴포넌트입니다.

단발성 또는 배치성 작업에 대한 메트릭을 수집하기 위해 사용됩니다.

여러 인스턴스가 PUSH-GATEWAY에 같은 JOB을 전송하면 PUSH-GATEWAY는 전송된 마지막 데이터만 유지합니다.

 

PUSHGATEWAY 설치

docker-compose 파일로 pushgateway 이미지를 실행시킵니다.

push-gateway가 실행되면 지정한 포트로 웹페이지를 실행시킬 수 있습니다.

version: '3'
services:
  pushgateway:
    image: prom/pushgateway:latest
    ports:
      - 9091:9091

 

프로메테우스 JOB 등록

prometheus.yml에 push-gateway의 스크랩 job을 추가합니다.

추가 후 프로메테우스를 재시작하거나 아래 API를 통해 설정을 reload합니다.

curl -X POST http://프로메테우스IP:<포트>/-/reload

prometheus.yml 추가할 push-gateway 설정

  - job_name: push-gateway
    scrape_interval: 15s
    honor_labels: true
    static_configs:
      - targets: [ 'host.docker.internal:9091' ]
  • scrape_interval : push-gateway에서 프로메테우스로 스크랩할 시간을 설정합니다.
  • honor_labels: push-gateway로 push되는 메트릭은 instance 레이블을 포함하지 않기에 최초 push-gateway로 push되었던 메트릭의 레이블을 포함켜 프로메테우스로 가져올지에 대한 옵션입니다.

 

파이썬 -> PUSH-GATEWAY 메트릭 등록

prometheus_client라이브러리의 pushadd_to_gateway를 사용하여 push-gateway로 메트릭을 전송합니다.

작업 중간에 duration이라는 gauge 메트릭에 registry옵션을 통해 push-gateway의 registry로 연결후 pushadd_to_gateway로 전송하는 로직을 추가했습니다.

일반적으로 배치작업의 마지막 finally 부분에서 push-gateway로 전송하는 로직을 실행시킵니다.(저는 따로 구현하지는 않았습니다..!)

API 호출

아래 스크립트를 통해 해당 API를 10번 호출하였습니다.

#!/bin/bash

for ((i=1; i<=10; i++))
do
    response=$(curl -s http://localhost:8088/hello)
    echo "Response $i: $response"
    sleep 1  
done

PUSH-GATEWAY의 메트릭 데이터

push-gateway의 주소로 들어가 확인해보면 아래처럼 메트릭이 수집되어있는 모습을 볼 수 있습니다.

<push-gateway IP>:<port>/metrics의 API 에서도 해당 메트릭을 확인 할 수 있습니다.

프로메테우스에서 확인

up 명령어를 통해 실행중인 push-gateway를 확인 할 수 있고

push-gateway에서 스크랩해온 메트릭 또한 조회 가능합니다.