Rumah > Java > javaTutorial > Membina Kebolehmerhatian dan Pemantauan untuk Aplikasi Moden dengan Actuator, Prometheus dan Grafana

Membina Kebolehmerhatian dan Pemantauan untuk Aplikasi Moden dengan Actuator, Prometheus dan Grafana

Linda Hamilton
Lepaskan: 2025-01-05 06:15:42
asal
684 orang telah melayarinya

Dalam dunia sistem dan perkhidmatan mikro yang diedarkan hari ini, memastikan aplikasi kami boleh diperhatikan dan dipantau adalah sama pentingnya dengan membina fungsi teras. Kami telah pun menyediakan ciri kritikal seperti pengimbang beban NGINX, penghad kadar dan pemutus litar, langkah seterusnya ialah memfokus pada kebolehlihatan dan pemantauan.

Dalam catatan blog ini, Kami akan membincangkan cara menambah Spring Boot Actuator, Prometheus dan Grafana pada aplikasi kami untuk membina kebolehmerhatian yang mantap timbunan. Ini akan membantu kami menggambarkan kesihatan aplikasi kami, menjejaki metrik prestasi dan menyelesaikan masalah dengan cepat dan cekap.


Apakah itu Kebolehperhatian?

Kebolehcerap merujuk kepada keupayaan anda untuk memahami keadaan dalaman sistem berdasarkan data yang dihasilkannya. Tiga tunjang kebolehmerhatian ialah:

  1. Metrik: Titik data boleh diukur (cth., kadar permintaan, penggunaan memori, penggunaan CPU).
  2. Log: Rekod peristiwa (cth., ralat, amaran atau acara perniagaan).
  3. Jejak: Ikuti permintaan semasa ia mengalir melalui berbilang perkhidmatan.

Dengan memfokuskan pada metrik dan log, kami boleh membina papan pemuka dan makluman yang berkuasa yang memastikan aplikasi anda kekal berprestasi dan boleh dipercayai.


Mengapa Kebolehmerhatian Penting untuk Aplikasi Kami

Seni bina aplikasi semasa kami sudah mempunyai komponen penting:

  • Pengimbang Beban NGINX: Mengagihkan trafik merentas pelayan.
  • Penghad Kadar: Menghalang beban berlebihan dengan mengehadkan bilangan permintaan.
  • Pemutus Litar: Memastikan daya tahan dengan menghentikan panggilan ke perkhidmatan yang gagal.

Walau bagaimanapun, walaupun alat ini meningkatkan prestasi dan kebolehpercayaan, alat ini tidak memberitahu kami mengapa sesuatu mungkin gagal atau prestasi sistem kami di bawah beban. Alat kebolehlihatan seperti Penggerak, Prometheus dan Grafana akan:

  • Jejak metrik masa nyata untuk kesihatan dan prestasi aplikasi.
  • Bantu menggambarkan arah aliran dan potensi kesesakan.
  • Cetus makluman apabila metrik melepasi ambang kritikal.

Timbunan Kebolehmerhatian

Tambahkan pada fail pom.xml anda kebergantungan ini:

<dependency>
   <groupId>io.github.resilience4j</groupId>
   <artifactId>resilience4j-micrometer</artifactId>
   <version>2.2.0</version>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
  <version>1.14.1</version>
</dependency>

Salin selepas log masuk
Salin selepas log masuk

Kemas kini konfigurasi aplikasi.properties anda

resilience4j.circuitbreaker.metrics.enabled=true

management.health.circuitbreakers.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
management.endpoint.health.show-details=always
management.endpoint.health.access=unrestricted
management.endpoint.prometheus.access=unrestricted
management.prometheus.metrics.export.enabled=true
Salin selepas log masuk
Salin selepas log masuk

Penjelasan

management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus

Baris ini mendedahkan URI daripada penggerak, jadi kita boleh menggunakan URI seperti:

  • penggerak/
  • penggerak/kesihatan,
  • penggerak/metrik,
  • penggerak/pemutus litar,
  • penggerak/prometheus

Menggunakan prometheus dengan docker

Dalam fail docker-compose.yaml kami, kami mencipta perkhidmatan untuk prometheus:

<dependency>
   <groupId>io.github.resilience4j</groupId>
   <artifactId>resilience4j-micrometer</artifactId>
   <version>2.2.0</version>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
  <groupId>io.micrometer</groupId>
  <artifactId>micrometer-registry-prometheus</artifactId>
  <version>1.14.1</version>
</dependency>

Salin selepas log masuk
Salin selepas log masuk

Fail konfigurasi untuk prometheus

Di akar projek anda buat folder yang dipanggil prometheusan dan di dalamnya fail yang dipanggil prometheus.yaml

resilience4j.circuitbreaker.metrics.enabled=true

management.health.circuitbreakers.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
management.endpoint.health.show-details=always
management.endpoint.health.access=unrestricted
management.endpoint.prometheus.access=unrestricted
management.prometheus.metrics.export.enabled=true
Salin selepas log masuk
Salin selepas log masuk

Sekarang, apabila kita berlari:

prometheus:
    image: prom/prometheus:latest
    ports:
      - "9090:9090"
    networks:
      - app_network
    volumes:
      - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus

Salin selepas log masuk

Bekas prometheus akan bermula dan menggunakan metrik daripada penggerak/metrik URI daripada pelayan spring-boot kami.

Kita boleh melihat papan pemuka di http://localhost:9090/, contohnya:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Papan pemuka daripada Prometheus

Tetapi, ini tidak bagus. Kami mahu melihat beberapa graf, dan untuk ini kami menggunakan Grafana.


Tambah Grafana

Kemas kini fail karang docker anda dengan perkhidmatan lain:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets:
          - 'spring-server-1:8080'
          - 'spring-server-2:8080'
        labels:
          environment: development
          application: spring-boot

Salin selepas log masuk

Kini anda boleh mengakses papan pemuka grafana di http://localhost:3000

Mula-mula mereka akan bertanya kelayakan anda, cuma tulis admin untuk pengguna dan kata laluan.

Konfigurasikan Prometheus

Pada menu kiri atas, pergi ke sambungan > tambah sambungan baharu dan cari Prometheus

Konfigurasikan url sambungan seperti ini:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Konfigurasikan Prometheus pada Grafana

Klik pada butang simpan & uji, jika semuanya baik, anda boleh mula memilih papan pemuka anda.

Papan pemuka

Pergi ke Papan Pemuka Grafana dan pilih papan pemuka untuk anda.

Untuk ini, saya memilih Spring Boot Resilience4j Circuit Breaker (3.x)

Jika semuanya berfungsi dengan baik, anda akan melihat sesuatu seperti ini:

Building Observability and Monitoring for Modern Applications with Actuator, Prometheus and Grafana

Graf pemutus litar

Sila semak imbas papan pemuka lain.


Kata Akhir

Dengan menyepadukan Actuator, Prometheus dan Grafana ke dalam aplikasi kami, kami telah mengambil langkah besar ke arah membina sistem yang sangat boleh diperhatikan. Dengan adanya metrik, pengelogan dan pemantauan, anda akan dapat:

  • Dapatkan keterlihatan penuh ke dalam aplikasi dan infrastruktur anda.
  • Kesan dan selesaikan isu secara proaktif.
  • Optimumkan prestasi dan kebolehpercayaan.

Dengan adanya alatan ini, kami bukan sahaja akan memantau sistem kami dengan berkesan tetapi juga meletakkan asas untuk penskalaan dengan yakin pada masa hadapan.


? Rujukan

  • Dokumen Grafana
  • Dokumen Prometheus

? Repositori Projek

  • Repositori Projek pada Github

? Bercakap dengan saya

  • LinkedIn
  • Github
  • Portfolio

Atas ialah kandungan terperinci Membina Kebolehmerhatian dan Pemantauan untuk Aplikasi Moden dengan Actuator, Prometheus dan Grafana. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan