🌥️Cloud Study🌥️/Etc

[ 모니터링 ] 인스턴스 정지 감지를 위한 Prometheus 설정

L_Chae 2024. 8. 9. 14:23

up에서 job이 Prometheus 혹은 노드(인스턴스)인 경우 모두 1

상황 : 위 이미지의 표현식에서, A변수에 값이 1보다 작을 경우 인스턴스가 죽은 것으로 판단 될 수 있지 않을까?라고 생각했다.

 

결과는 No data라고 출력된다.


살아있는지의 여부는 Prometheus에서 알려주는데,
다운된 Prometheus의 생존 여부를 다운된 쪽에서 알려줘야 Grafana에서 인지할 수 있는 구조이기 때문에 
이 방식으로는 Prometheus가 가동중인 것을 확인할 순 있지만, 다운되었을 경우 알람을 받는 것은 불가능하다.

 

생각한 방법 : Grafana 측에 Prometheus를 설치하고, ~ (이어서 작성하기)

 

인스턴스 정지 감지를 위한 추가 Prometheus 설치

 

 

GitHub - dev-library/log-tracking-app: 행동 추적 후 로그를 남겨주는 애플리케이션입니다.

행동 추적 후 로그를 남겨주는 애플리케이션입니다. Contribute to dev-library/log-tracking-app development by creating an account on GitHub.

github.com

    @GetMapping("/app-health")
    public String healthCheck() {
        return "app_health_status 1.0\n# EOF";
    }

어플리케이션 내부에 위와 같은 엔드포인트를 생성해주었고, 접속 시에는 `app_health_status 1.0 # EOF`로 보여지게 되는데, 이게 바로 Prometheus 매트릭 양식이다. (`(매트릭명) (수치) # EOF`)

 

위의 경우, app_health_status라는 매트릭에 1.0이라는 값이 들어갔다는 의미이다.

 

scrape_configs:
  - job_name: '식별가능한 job이름'
    scrape_interval: 1m(수집 주기, 15s는 15초)
    metrics_path: '/app-health'
    static_configs:
      - targets: ['타겟 어플리케이션ip:포트번호']
      
# 예시
scrape_configs:
  - job_name: "prometheus"

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "app-health-status"
    scrape_interval: 30s
    metrics_path: '/app-health'
    static_configs:
      - targets: ['192.168.2.53:8080']

이를 인식하게 만들기 위해 prometheus.yml 파일 내용을 위와 같이 수정해주고, Grafana에서 해당 Prometheus를 Data sources로 추가해주자.

 

대시보드를 새롭게 만들어준다.

 

인스턴스가 다운된것을 Grafana에서 확인 가능하다