ปลั๊กอินแบ็กเอนด์ Grafana ที่จัดการการเรนเดอร์พาเนลและแดชบอร์ดไปยัง PNG โดยใช้เบราว์เซอร์ที่ไม่มีส่วนหัว (Chromium)
ลินุกซ์ (x64)
หน้าต่าง (x64)
แมคโอเอสเอ็กซ์ (x64)
ปลั๊กอินนี้รวมอยู่ในไฟล์ปฏิบัติการเดียวที่มีรันไทม์ Node.js และเบราว์เซอร์ Chromium ซึ่งหมายความว่าคุณไม่จำเป็นต้องติดตั้ง Node.js และ Chromium ในระบบของคุณเพื่อให้ปลั๊กอินทำงานได้
อย่างไรก็ตาม เบราว์เซอร์ Chromium ขึ้นอยู่กับไลบรารีบางแห่ง หากคุณไม่ได้ติดตั้งไลบรารีเหล่านั้นทั้งหมดไว้ในระบบของคุณ คุณอาจพบข้อผิดพลาดบางอย่างเมื่อคุณพยายามแสดงรูปภาพ สำหรับข้อมูลเพิ่มเติมรวมถึงความช่วยเหลือในการแก้ไขปัญหา โปรดดูเอกสารประกอบการเรนเดอร์รูปภาพ Grafana
การแสดงภาพต้องใช้หน่วยความจำจำนวนมาก เนื่องจาก Grafana สร้างอินสแตนซ์ของเบราว์เซอร์ในพื้นหลังสำหรับการเรนเดอร์จริง เราขอแนะนำหน่วยความจำว่างอย่างน้อย 16GB บนระบบที่เรนเดอร์รูปภาพ
การแสดงภาพหลายภาพพร้อมกันต้องใช้พื้นที่หน่วยความจำที่ใหญ่กว่า คุณสามารถใช้เซอร์วิสการเรนเดอร์แบบรีโมตเพื่อเรนเดอร์อิมเมจบนระบบรีโมต ดังนั้นรีซอร์สระบบโลคัลของคุณจึงไม่ได้รับผลกระทบ
คุณสามารถติดตั้งปลั๊กอินโดยใช้ Grafana CLI (วิธีที่แนะนำ) หรือด้วยอิมเมจ Grafana Docker
ปลั๊กอิน grafana-cli ติดตั้ง 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
โดยมีเนื้อหาดังต่อไปนี้:
เวอร์ชัน: '2' บริการ: grafana: ภาพ: grafana / grafana: พอร์ตล่าสุด: - สภาพแวดล้อม '3000:3000': GF_RENDERING_SERVER_URL: http://renderer:8081/render GF_RENDERING_CALLBACK_URL: http://grafana:3000/ GF_LOG_FILTERS: การแสดงผล: debug renderer:image: grafana/grafana-image-renderer:latestports: - 8081
จากนั้นให้รัน docker compose
นักเทียบท่า-เขียนขึ้น
ตัวอย่างต่อไปนี้อธิบายวิธีสร้างและเรียกใช้บริการแสดงผล HTTP ระยะไกลเป็นแอปพลิเคชัน Node.js แบบสแตนด์อโลน และกำหนดค่า Grafana อย่างเหมาะสม
โคลนพื้นที่เก็บข้อมูล Git ของปลั๊กอินตัวเรนเดอร์รูปภาพ Grafana
ติดตั้งการพึ่งพาและสร้าง:
การติดตั้งเส้นด้าย --pure-lockfile สร้างเส้นด้ายวิ่ง
เรียกใช้เซิร์ฟเวอร์:
เซิร์ฟเวอร์โหนด build/app.js --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_<test case>.png
) ที่มีความแตกต่างในโฟลเดอร์ /tests/testdata
หากการทดสอบประสบความสำเร็จในสภาพแวดล้อมในพื้นที่ของคุณ แต่ล้มเหลวในโดรน คุณสามารถทำตามขั้นตอนเหล่านี้เพื่อทำการทดสอบในสภาพแวดล้อมที่คล้ายกับไปป์ไลน์ของโดรน การดำเนินการนี้จะเมานต์ไฟล์ในเครื่องของคุณของ repo grafana-image-renderer
ในอิมเมจ Docker ดังนั้นการเปลี่ยนแปลงใดๆ ที่เกิดขึ้นในอิมเมจ Docker จะพร้อมใช้งานในสภาพแวดล้อมท้องถิ่นของคุณ ซึ่งจะทำให้คุณสามารถรัน yarn test-diff
และ yarn test-update
ใน Docker และดูผลลัพธ์ภายในเครื่องได้
รันสภาพแวดล้อมโดรนใน 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