Plugin backend Grafana yang menangani rendering panel dan dasbor ke PNG menggunakan browser tanpa kepala (Chromium).
Plugin ini dikemas dalam satu executable dengan runtime Node.js dan browser Chromium. Ini berarti Anda tidak perlu menginstal Node.js dan Chromium di sistem Anda agar plugin dapat berfungsi.
Namun, browser Chromium bergantung pada perpustakaan tertentu. Jika Anda tidak menginstal semua perpustakaan tersebut di sistem Anda, Anda mungkin melihat beberapa kesalahan saat mencoba merender gambar. Untuk informasi lebih lanjut termasuk bantuan pemecahan masalah, lihat dokumentasi Grafana Image Rendering.
Merender gambar memerlukan banyak memori, terutama karena Grafana membuat instance browser di latar belakang untuk rendering sebenarnya. Kami merekomendasikan minimal 16GB memori bebas pada sistem rendering gambar.
Merender beberapa gambar secara paralel memerlukan jejak memori yang lebih besar. Anda dapat menggunakan layanan rendering jarak jauh untuk merender gambar pada sistem jarak jauh, sehingga sumber daya sistem lokal Anda tidak terpengaruh.
Anda dapat menginstal plugin menggunakan Grafana CLI (cara yang disarankan) atau dengan image Grafana Docker.
grafana-cli plugins install grafana-image-renderer
Plugin ini tidak kompatibel dengan image Grafana Docker saat ini dan memerlukan dependensi tingkat sistem tambahan. Kami menyarankan untuk menyiapkan container Docker lain untuk rendering dan menggunakan rendering jarak jauh sebagai gantinya. Untuk instruksinya, lihat Jalankan di Docker.
Jika Anda masih ingin menginstal plugin dengan image Grafana Docker, lihat instruksi untuk membuat image Grafana kustom di dokumentasi Grafana Docker.
Catatan: Membutuhkan koneksi internet.
Anda dapat menjalankan plugin ini sebagai layanan rendering HTTP jarak jauh. Dalam pengaturan ini, Grafana merender gambar dengan membuat permintaan HTTP ke layanan rendering jarak jauh, yang kemudian merender gambar dan mengembalikannya dalam respons HTTP ke Grafana.
Anda dapat menjalankan layanan rendering HTTP jarak jauh menggunakan Docker atau sebagai aplikasi Node.js yang berdiri sendiri.
Gambar Grafana Docker dipublikasikan di Docker Hub.
Contoh berikut menunjukkan bagaimana Anda dapat menjalankan Grafana dan layanan rendering HTTP jarak jauh di dua kontainer Docker terpisah menggunakan Docker Compose.
Buat docker-compose.yml
dengan konten berikut:
version : ' 2 '
services :
grafana :
image : grafana/grafana:latest
ports :
- ' 3000:3000 '
environment :
GF_RENDERING_SERVER_URL : http://renderer:8081/render
GF_RENDERING_CALLBACK_URL : http://grafana:3000/
GF_LOG_FILTERS : rendering:debug
renderer :
image : grafana/grafana-image-renderer:latest
ports :
- 8081
Selanjutnya, jalankan penulisan buruh pelabuhan.
docker-compose up
Contoh berikut menjelaskan cara membangun dan menjalankan layanan rendering HTTP jarak jauh sebagai aplikasi Node.js mandiri dan mengonfigurasi Grafana dengan tepat.
Kloning repositori Git plugin penyaji gambar Grafana.
Instal dependensi dan bangun:
yarn install --pure-lockfile
yarn run build
Jalankan servernya:
node build/app.js server --port=8081
Perbarui konfigurasi Grafana:
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
Mulai ulang Grafana.
Akses ke titik akhir rendering dibatasi untuk permintaan yang menyediakan token autentikasi. Token ini harus dikonfigurasi dalam file konfigurasi Grafana dan file konfigurasi renderer. Token ini penting ketika Anda menjalankan plugin dalam mode rendering jarak jauh untuk menghindari pengungkapan file yang tidak sah (lihat CVE-2022-31176).
Lihat dokumentasi Rendering Gambar Grafana untuk mengonfigurasi token rahasia ini. Nilai default -
dikonfigurasikan pada Grafana dan penyaji gambar saat Anda memulai, tetapi kami sangat menyarankan Anda untuk memperbarui nilai ini ke nilai yang lebih aman.
Untuk pengaturan konfigurasi yang tersedia, silakan lihat dokumentasi Grafana Image Rendering.
Untuk bantuan pemecahan masalah, lihat dokumentasi pemecahan masalah Grafana Image Rendering.
Untuk menjalankan rangkaian pengujian otomatis perender gambar, Anda perlu menjalankan perintah berikut dari folder akar:
yarn test
Ini akan meluncurkan instance Grafana di Docker dan, kemudian, menjalankan rangkaian pengujian.
Catatan:
Jika ada beberapa perubahan yang diharapkan dalam file gambar referensi (terletak di /tests/testdata
), jalankan yarn test-update
dan dorong referensi yang diperbarui.
Jika pengujian gagal dan Anda ingin melihat perbedaan antara gambar yang Anda dapatkan dan gambar referensi, jalankan yarn test-diff
. Ini akan menghasilkan gambar (disebut diff_
) yang berisi perbedaan dalam folder /tests/testdata
.
Jika pengujian berhasil di lingkungan lokal Anda tetapi gagal di Drone. Anda dapat mengikuti langkah-langkah berikut untuk menjalankan pengujian di lingkungan yang mirip dengan pipeline Drone. Ini akan memasang file lokal dari repo grafana-image-renderer
di image Docker sehingga setiap perubahan yang terjadi di image Docker akan tersedia di lingkungan lokal Anda. Hal ini memungkinkan Anda menjalankan yarn test-diff
dan yarn test-update
di Docker dan melihat hasilnya secara lokal.
cd ./devenv/docker/drone
docker-compose up
drone-docker-puppeteer
dan jalankan perintah berikut: cd /drone/src
PUPPETEER_CACHE_DIR=/drone/src/cache yarn install --frozen-lockfile --no-progress
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci
Catatan: Pengujian mungkin memerlukan waktu lebih lama di kontainer Docker. Jika Anda mengalami masalah batas waktu, Anda dapat menjalankan perintah pengujian dengan --testTimeout option
:
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000