[บันทึก]xk6: Graph Report from result
วันนี้ผมจะมาพูดถึงเรื่องการนำ ผลลัพธ์ของ k6 ที่เราทำ loadtest มาแสดงผลเป็น Graph และ download ออกมาเป็น report file หากใครอยากรู้ว่าเจ้า k6 ใช้งานเพื่อทำ loadtest ยังไงแนะนำให้เริ่มจากบทความนี้เลยครับ
https://medium.com/@tiktoc.ks/ลองทำ-load-test-ด้วย-k6-674205597cc6
จริงๆแล้วเจ้า k6 ก็มี command ที่สามารถ export ออกมาในรูปแบบที่อ่านง่ายและสะดวกสบายกับผู้ใช้ด้วยนะครับ เช่น CSV หรือ JSON เป็นต้น ลองดูเพิ่มเติมที่ docs ของ k6 กันได้เลยว่า support รูปแบบไหนบ้าง
แต่วันนี้เราจะมา visualize result data ให้ออกมาอยู่ในรูปแบบกราฟอย่างง่ายกันครับ
เริ่มต้นเรามาทำความรู้จักกับ tools ที่จะมาเป็นพระเอกของวันนี้กัน นั่นก็คือ “xk6-dashboard”
xk6-dashboard คือ k6 extension ที่แสดงผลผ่านเว็ปเป็น metrics dashboard สำหรับ k6 ครับ xk6-dashboard มีประโยชน์มากเมื่อเราต้องการ monitor, visualize และ แสดง performance test result ในรูปแบบที่เป็น dashboard เพื่อช่วยให้เราได้บริโภคข้อมูลกันง่ายขึ้น
มาเริ่มใช้งานพระเอก (xk6-dashboard) ของเรากันครับ
อย่างแรกเลยเราจะมี folder ที่เก็บ file script ที่เอาไว้ทำ loadtest นะครับ ตามรูปเลย
ทีนี้ step ตอนที่เรา run command ตัว xk6-dashboard จะมีให้เราเลือกรันนะครับ ว่าจะรันผ่านอะไร ไม่ว่าจะ install ตัว xk6 ด้วย go ก่อนแล้วค่อยรันด้วย k6 เอง อ่านเพิ่มเติม
แต่จากบทความนี้ผมขอเลือกไปใช้ image ของ docker ครับ
// Linux
docker run -v $(pwd):/scripts -p 5665:5665 -it --rm ghcr.io/grafana/xk6-dashboard:latest run --out=dashboard /scripts/script.js
// Window
docker run -v %cd%:/scripts -p 5665:5665 -it --rm ghcr.io/grafana/xk6-dashboard:latest run --out=dashboard /scripts/script.js
จากนั้นเข้าไปที่ url “http://localhost:5665” จะเห็นกราฟตามรูปด้านล่างเลยครับ
และหากเราอยากดูเป็น report ก็กดเข้าไปที่เมนู report ที่มุมขวาบนได้เลยครับ
หรือจะทำเป็น report file ออกมาเก็บไว้เราจะ save ผ่าน browser เลยก็ได้หรือตอน run command เราจะให้ mount volumes ออกมาเก็บเป็น report file ไว้ก็ทำได้เช่นกันครับ ตาม command ด้านล่างเลย
docker run -v ./scripts:/scripts -v ./report:/report -p 5665:5665 -it --rm ghcr.io/grafana/xk6-dashboard:latest run --out=dashboard=report=/report/test-report.html /scripts/scripts.js
เพียงเท่านี้เราก็จะเห็น report result ออกมาเป็น กราฟแล้วครับ
Trick: จากที่ได้เรียนเรื่องนี้มีตอนหนึ่ง ผู้สอนบอกว่า เราควรเริ่ม VUs ที่ 1 ก่อน เพื่อดูว่า TPS(Transaction per second) และ RPS(Request Per second) เป็นเท่าไหร่เพื่อนำค่ามาใช้ต่อว่า VUs ในลำดับถัดไปที่เครื่องของเราจะรับไหวเป็นเท่าไหร่ครับ