Cloud/SpringCloud로 개발하는 MSA

MS 모니터링 (wsl2 grafana)

Tony Lim 2022. 11. 5. 17:14

Turbin , Hystrix는 예전에 쓰던것이다.

ms에서 생성되는 Hystrix 클라이언트 스트림 메시지를 터빈 서버로 수집함

 

MicroMeter

@GetMapping("/welcome")
@Timed(value = "users.welcome",longTask = true)
public String welcome() {
    return greeting.getMessage();
}
management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans, busrefresh , info, metrics, prometheus

application.yml 설정에서 actuator 가 metrics url로 해당 메소드의 정보를 받아올 수 있는 url을 "user.welcome"으로 제공해준다. 

 

Prometheus, Grafana

프로메테우스는 Metrics 를 수집하고 모니터링 및 알람에 사용되는 앱이다.  쿠베에서도 여러 ms의 metrics들을 service discovery의 도움을 받아서 정보들을 수집해오고 , pod같은게 down 되면 slack등으로 알람을 보내준다.

Pull 방식의 구조(위의 쿠베환경에서 지속적으로 정보를 끌어옴) + Metrics Exporter가 제공 (http url로 제공) 

시계열 db이고 저장된것들을 query할 수 있다.

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "user-service"
    spcrape_interval: 15s
    metrics_path: "/user-service/actuator/prometheus"
    static_configs:
      - targets: ["localhost:8000"]

  - job_name: "apigateway-service"
    spcrape_interval: 15s
    metrics_path: "/actuator/prometheus"
    static_configs:
      - targets: ["localhost:8000"]

  - job_name: "order-service"
    spcrape_interval: 15s
    metrics_path: "/order-service/actuator/prometheus"
    static_configs:
      - targets: ["localhost:8000"]

actuator에서 제공해주는 actuator/promethus 가져올 수 있게 prometheus.yml에 설정을 해준다.

docker로 prometheus를 띄우는 겨웅 localhost라 적으면 제대로 찾지못할 수도 있다. wsl2의 ifconfig해서 나오는 주소로 입력해주자

 

grafana 같은 경우에는 wsl2에서 기동이 되지 않아서 docker로 기동했다.

host -> wsl2 에서 localhost:9090( prometheus 서버 접속) 은 가능하지만

wsl2안의 docker에서 돌고 있는 grafana 에서 localhost:9090 의 접속은 prometheus가 아니게 된다. 따라서 wsl2의 ip:9090을 해줘야 add datasource를 할 수 있게 된다.

위 빨간 동그라미 두곳을 잘 설정해줘야 프로메테우스에서 query해온 값과 동일하게 얻을 수 있다.

job은 prometheus.yml에서 설정한 job을 쓸수 있다.

앞에 sum안에 들어간 인자는 actuator/pormetheus 에서 제공하는 정보이다.