ปลั๊กอินแบ็กเอนด์ Grafana ที่จัดการการเรนเดอร์พาเนลและแดชบอร์ดไปยัง PNG โดยใช้เบราว์เซอร์แบบไม่มีส่วนหัว (Chromium)
ปลั๊กอินนี้รวมอยู่ในไฟล์ปฏิบัติการเดียวที่มีรันไทม์ Node.js และเบราว์เซอร์ Chromium ซึ่งหมายความว่าคุณไม่จำเป็นต้องติดตั้ง Node.js และ Chromium ในระบบของคุณเพื่อให้ปลั๊กอินทำงานได้
อย่างไรก็ตาม เบราว์เซอร์ Chromium ขึ้นอยู่กับไลบรารีบางแห่ง หากคุณไม่ได้ติดตั้งไลบรารีเหล่านั้นทั้งหมดไว้ในระบบของคุณ คุณอาจพบข้อผิดพลาดบางอย่างเมื่อคุณพยายามแสดงรูปภาพ สำหรับข้อมูลเพิ่มเติมรวมถึงความช่วยเหลือในการแก้ไขปัญหา โปรดดูเอกสารประกอบการเรนเดอร์รูปภาพ Grafana
การแสดงรูปภาพต้องใช้หน่วยความจำจำนวนมาก เนื่องจาก Grafana สร้างอินสแตนซ์ของเบราว์เซอร์ในพื้นหลังสำหรับการเรนเดอร์จริง เราขอแนะนำหน่วยความจำว่างอย่างน้อย 16GB บนระบบที่เรนเดอร์รูปภาพ
การแสดงภาพหลายภาพพร้อมกันต้องใช้พื้นที่หน่วยความจำที่ใหญ่กว่า คุณสามารถใช้เซอร์วิสการเรนเดอร์แบบรีโมตเพื่อเรนเดอร์อิมเมจบนระบบรีโมต ดังนั้นรีซอร์สระบบโลคัลของคุณจึงไม่ได้รับผลกระทบ
คุณสามารถติดตั้งปลั๊กอินโดยใช้ Grafana CLI (วิธีที่แนะนำ) หรือด้วยอิมเมจ Grafana Docker
grafana-cli plugins install grafana-image-renderer
ปลั๊กอินนี้เข้ากันไม่ได้กับอิมเมจ Grafana Docker ปัจจุบัน และต้องการการขึ้นต่อกันระดับระบบเพิ่มเติม เราขอแนะนำให้ตั้งค่าคอนเทนเนอร์ Docker อื่นสำหรับการเรนเดอร์และใช้การเรนเดอร์ระยะไกลแทน สำหรับคำแนะนำ โปรดดูที่ Run in Docker
หากคุณยังคงต้องการติดตั้งปลั๊กอินด้วยอิมเมจ Grafana Docker โปรดดูคำแนะนำในการสร้างอิมเมจ Grafana แบบกำหนดเองในเอกสารประกอบของ Grafana Docker
หมายเหตุ: ต้องมีการเชื่อมต่ออินเทอร์เน็ต
คุณสามารถเรียกใช้ปลั๊กอินนี้เป็นบริการแสดงผล HTTP ระยะไกลได้ ในการตั้งค่านี้ Grafana เรนเดอร์รูปภาพโดยส่งคำขอ HTTP ไปยังบริการเรนเดอร์ระยะไกล ซึ่งจะเรนเดอร์รูปภาพและส่งคืนกลับในการตอบกลับ HTTP ไปยัง Grafana
คุณสามารถเรียกใช้บริการแสดงผล HTTP ระยะไกลได้โดยใช้ Docker หรือเป็นแอปพลิเคชัน Node.js แบบสแตนด์อโลน
รูปภาพ Grafana Docker ได้รับการเผยแพร่ที่ Docker Hub
ตัวอย่างต่อไปนี้แสดงวิธีที่คุณสามารถเรียกใช้ Grafana และบริการแสดงผล HTTP ระยะไกลในคอนเทนเนอร์ Docker สองคอนเทนเนอร์ที่แยกกันโดยใช้ Docker Compose
สร้าง docker-compose.yml
โดยมีเนื้อหาดังต่อไปนี้:
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
จากนั้นให้รัน docker compose
docker-compose up
ตัวอย่างต่อไปนี้อธิบายวิธีสร้างและเรียกใช้บริการแสดงผล HTTP ระยะไกลเป็นแอปพลิเคชัน Node.js แบบสแตนด์อโลน และกำหนดค่า Grafana อย่างเหมาะสม
โคลนพื้นที่เก็บข้อมูล Git ของปลั๊กอินตัวเรนเดอร์รูปภาพ Grafana
ติดตั้งการพึ่งพาและสร้าง:
yarn install --pure-lockfile
yarn run build
เรียกใช้เซิร์ฟเวอร์:
node build/app.js server --port=8081
อัปเดตการกำหนดค่า Grafana:
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
รีสตาร์ท Grafana
การเข้าถึงจุดสิ้นสุดการเรนเดอร์ถูกจำกัดไว้เฉพาะคำขอที่ให้โทเค็นการตรวจสอบสิทธิ์ โทเค็นนี้ควรได้รับการกำหนดค่าในไฟล์การกำหนดค่า Grafana และไฟล์การกำหนดค่าตัวแสดงผล โทเค็นนี้มีความสำคัญเมื่อคุณเรียกใช้ปลั๊กอินในโหมดการเรนเดอร์ระยะไกลเพื่อหลีกเลี่ยงการเปิดเผยไฟล์โดยไม่ได้รับอนุญาต (ดู CVE-2022-31176)
ดูเอกสารประกอบการเรนเดอร์รูปภาพ Grafana เพื่อกำหนดค่าโทเค็นลับนี้ ค่าเริ่มต้น -
ได้รับการกำหนดค่าทั้งบน Grafana และตัวเรนเดอร์รูปภาพเมื่อคุณเริ่มต้น แต่เราขอแนะนำอย่างยิ่งให้คุณอัปเดตค่านี้เป็นค่าที่ปลอดภัยยิ่งขึ้น
สำหรับการตั้งค่าการกำหนดค่าที่มี โปรดดูเอกสารประกอบการเรนเดอร์รูปภาพ Grafana
หากต้องการความช่วยเหลือในการแก้ไขปัญหา โปรดดูเอกสารการแก้ไขปัญหา Grafana Image Rendering
ในการรันชุดทดสอบอัตโนมัติของการเรนเดอร์รูปภาพ คุณต้องรันคำสั่งต่อไปนี้จากโฟลเดอร์รูท:
yarn test
การดำเนินการนี้จะเปิดตัวอินสแตนซ์ Grafana ใน Docker จากนั้นจึงเรียกใช้ชุดทดสอบ
หมายเหตุ:
หากมีการเปลี่ยนแปลงที่คาดหวังในไฟล์รูปภาพอ้างอิง (อยู่ใน /tests/testdata
) ให้รัน yarn test-update
และพุชข้อมูลอ้างอิงที่อัปเดต
หากการทดสอบล้มเหลวและคุณต้องการเห็นความแตกต่างระหว่างภาพที่คุณได้รับและภาพอ้างอิง ให้รัน yarn test-diff
สิ่งนี้จะสร้างอิมเมจ (เรียกว่า diff_
) ที่มีความแตกต่างในโฟลเดอร์ /tests/testdata
หากการทดสอบประสบความสำเร็จในสภาพแวดล้อมในพื้นที่ของคุณ แต่ล้มเหลวในโดรน คุณสามารถทำตามขั้นตอนเหล่านี้เพื่อทำการทดสอบในสภาพแวดล้อมที่คล้ายกับไปป์ไลน์ของโดรน การดำเนินการนี้จะเมานต์ไฟล์ในเครื่องของคุณของ repo grafana-image-renderer
ในอิมเมจ Docker ดังนั้นการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นในอิมเมจ Docker จะพร้อมใช้งานในสภาพแวดล้อมท้องถิ่นของคุณ ซึ่งจะทำให้คุณสามารถรัน yarn test-diff
และ yarn test-update
ใน Docker และดูผลลัพธ์ภายในเครื่องได้
cd ./devenv/docker/drone
docker-compose up
drone-docker-puppeteer
และรันคำสั่งต่อไปนี้: 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
หมายเหตุ: การทดสอบอาจใช้เวลานานกว่าในคอนเทนเนอร์ Docker หากคุณประสบปัญหาการหมดเวลา คุณสามารถรันคำสั่ง test ด้วย --testTimeout option
:
PUPPETEER_CACHE_DIR=/drone/src/cache CI=true yarn test-ci --testTimeout=10000