Visualisasikan data aplikasi Node JS dengan Prometheus + Grafana

Pada artikel ini saya akan menunjukkan cara mengembangkan dashboard yang mengejutkan informatif dan nyaman untuk aplikasi Node JS, saya akan menjelaskan sekelompok Prometheus dengan Grafana dan memberikan templat kode sehingga Anda dapat menggunakan pengetahuan yang diperoleh untuk menyelesaikan masalah Anda.


Sebagian besar artikel tidak secara khusus ditargetkan pada pengembang Node JS dan dapat bermanfaat terlepas dari bahasa pemrogramannya.


Tautan ke repositori Github dengan kode untuk artikel - https://github.com/pavlovdog/grafana-prometheus-node-js-example



Saya pikir kita semua menghadapi tantangan analisis data. Mungkin Anda akan setuju - memiliki gambar visual di depan mata Anda jauh lebih nyaman daripada menempatkan tangan Anda ke dalam database setiap kali atau menghasilkan skrip satu kali.


Pendekatan ini menjadi sangat berguna pada saat sistem "berada di atas rel." Jumlah pengguna secara tak terlihat melompati belasan, dan kemudian ratusan. Dan sekarang Anda tidak punya waktu untuk memonitor aplikasi dalam mode manual. Dan rasanya seperti Tom Cruise dari Pendapat Khusus.


Saya akan menunjukkan betapa mudahnya menambahkan dashboard yang nyaman untuk semua jenis data dan memberikan contoh aplikasi Node JS sederhana yang mengimplementasikan fungsi ini.


Arsitektur


Prometheus + Grafana. Prometheus, . , :


Prometheus


https://prometheus.io/


โ€” . X timestamp -> data. Prometheus โ€” Node JS . HTTP , Prometheus , .


Grafana


https://grafana.com/


Open-source . (data source) โ€” (MySQL, PostgreSQL), (Prometheus).



, , . Grafana โ€” line chart, histogram, heatmap . :


Contoh dasbor dari stand demo resmi Grafana


Going deeper


, online , . โ€” โ€” , . , .


Prometheus + Grafana + Node JS . โ€” https://github.com/pavlovdog/grafana-prometheus-node-js-example.



:


$ git clone https://github.com/pavlovdog/grafana-prometheus-node-js-example
$ cd grafana-prometheus-node-js-example/
$ docker-compose up -d

docker docker-compose:


$ docker --version
Docker version 19.03.5, build 633a0ea838
$ docker-compose --version
docker-compose version 1.23.1, build b02f1306


, localhost:3000 ( โ€” admin, โ€” illchangeitanyway) :


Grafik pertama menunjukkan jumlah total pengguna di semua kategori.  Pada yang kedua - jumlah pengguna untuk setiap kategori, serta nilai rata-rata, minimum, maksimum, dan saat ini.



. :


  • Prometheus
  • App
  • Grafana

docker-compose . โ€” .


Prometheus


prometheus/prometheus.yml:


scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s

    static_configs:
      - targets: [
        'app:9200',
      ]
        labels:
          service: 'app-exporter'
          group: 'testing'
          name: 'app-exporter'

, Prometheus (scraping) (targets). target โ€” Node JS , 9200. โ€” 5 .


Prometheus, localhost:9090/targets.



Prometheus . 4.9 .


App


, , e-commerce โ€” . , Prometheus. localhost:9200/metrics:


# HELP active_users Amount of active users right now per category
# TYPE active_users gauge
active_users{category="oil"} 100
active_users{category="wine"} 194
active_users{category="bread"} 289
active_users{category="butter"} 397

โ€” Prometheus :


- targets: [
    'app:9200',
]

, Prometheus app:9200/. โ€” /metrics (app:9200/metrics).


Grafana


Grafana . ./grafana:


$ tree grafana/
grafana/
โ”œโ”€โ”€ config.ini
โ”œโ”€โ”€ dashboards
โ”‚   โ””โ”€โ”€ simple.json
โ””โ”€โ”€ provisioning
    โ”œโ”€โ”€ dashboards
    โ”‚   โ””โ”€โ”€ all.yml
    โ””โ”€โ”€ datasources
        โ””โ”€โ”€ all.yml

grafana/provisioning/datasources/all.yml:


$ cat grafana/provisioning/datasources/all.yml 
datasources:
- name: 'prometheus-monitoring-1'
  type: 'prometheus'
  access: 'proxy'
  org_id: 1
  url: 'http://prometheus:9090'
  is_default: true
  version: 1
  editable: true

โ€” Prometheus, 9090.



, Grafana Prometheus. (panel) , . , MySQL SQL :


select category, active_users from my_table;

Prometheus, โ€” PromQL. , . :



Grafana handlebars ({{ ... }}) โ€” . active_users:


active_users

PromQL Total users ( ):



sum โ€” active_users .


sum(active_users)


Dalam artikel ini saya mencoba menggambarkan, menurut saya, salah satu langkah paling menarik dalam pengembangan layanan TI - visualisasi metrik aplikasi utama. Jika Anda masih memiliki pertanyaan - jangan ragu untuk menanyakannya di komentar di artikel. Jika Anda tertarik mengembangkan sistem pemantauan untuk bisnis Anda, silakan menulis kepada saya di sergey.p.moscow@gmail.com.


Berlangganan saluran Telegram saya untuk menerima pemberitahuan artikel baru. Terimakasih atas perhatiannya :)


All Articles