9 Şubat 2021 Salı

SpringBoot Actuator - Startup Endpoint

Giriş
Bu endpoint ile uygulamayı başlatırken hangi bean'lerin daha çok vakit aldığını görmek mümkün. Web kullanımını etkinleştirmek için şöyle yaparız
management.endpoints.web.exposure.include=startup
Eğer yml kullanılyorsak  şöyle yaparız
management:
  endpoints:
    web:
      exposure:
        include: 'startup'
ApplicationStartup arayüzünü gerçekleştiren iki tane bean var

1. BufferingApplicationStartup Sınıfı
Örnek
Şöyle yaparız
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;

@SpringBootApplication
public class Application {

  public static void main(String[] args) {
    SpringApplication application = new SpringApplication(Application.class);
    application.setApplicationStartup(new BufferingApplicationStartup(10000));
    application.run(args);
  }
}
Sonuçları almak için POST göndermek gerekir. Şöyle yaparız
curl --location --request POST 'http://localhost:8080/actuator/startup'
Çıktı olarak şunu alırız. Burada isimleri studentRepository ve studentsController olan iki tane bean için bilgiler görülebilir. 
{
  "startupStep": {
    "name": "spring.beans.instantiate",
    "id": 123,
    "parentId": 122,
    "tags": [
      {
        "key": "beanName",
        "value": "studentRepository"
      }
    ]
  },
  "startTime": "2021-01-26T06:38:09.234585991Z",
  "endTime": "2021-01-26T06:38:09.380445297Z",
  "duration": "PT0.145859306S"
},
{
  "startupStep": {
  "name": "spring.beans.instantiate",
  "id": 122,
  "parentId": 5,
  "tags": [
    {
      "key": "beanName",
      "value": "studentsController"
    }
  ]
  },
  "startTime": "2021-01-26T06:38:09.231829732Z",
  "endTime": "2021-01-26T06:38:09.382129262Z",
  "duration": "PT0.15029953S"
},
2. FlightRecordingApplicationStartup Sınıfı
Örnek
Şöyle yaparız
public static void main(String[] args) {
  SpringApplication application = new SpringApplication(Application.class);
  application.setApplicationStartup(new FlightRecorderApplicationStartup());
  application.run(args);
}
Uygulamayı başlatmak için şöyle yaparız.  myrecording.jfr dosyası oluşur. Bu dosyayı JDK Mission Control ile açabiliriz.
java -XX:+FlightRecorder \        
        -XX:StartFlightRecording=duration=5s,filename=myrecording.jfr \        
        -jar target/spring-boot-crud-jpa.jar


Hiç yorum yok:

Yorum Gönder