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

Jan 05, 2025 am 06:15 AM

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Apr 19, 2025 pm 11:42 PM

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Apr 19, 2025 pm 11:30 PM

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Apr 19, 2025 pm 11:45 PM

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Bagaimana cara menukar objek Java dengan selamat ke array? Bagaimana cara menukar objek Java dengan selamat ke array? Apr 19, 2025 pm 11:33 PM

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Apr 19, 2025 pm 11:27 PM

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimana dengan elegan mendapatkan syarat pertanyaan bangunan pembolehubah kelas entiti apabila menggunakan tkmybatis untuk pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan syarat pertanyaan bangunan pembolehubah kelas entiti apabila menggunakan tkmybatis untuk pertanyaan pangkalan data? Apr 19, 2025 pm 09:51 PM

Apabila menggunakan tkmybatis untuk pertanyaan pangkalan data, bagaimana dengan anggun mendapatkan nama pembolehubah kelas entiti untuk membina keadaan pertanyaan adalah masalah biasa. Artikel ini akan ...

See all articles