feature-image-docker-gatling-in-action
feature-image-docker-gatling-in-action

หลังจากเราเรียน ทฤษฎีเรื่องของ Docker 101 กับ Gatling Load And Performance Test 101 ไปแล้วน่ะ การที่จะนั่งเฉยๆๆรอให้มันลืมก็ใช่เรื่อง สิ่งที่ควรทําคือมาเขียนอธิบายการใช้งานจริงต่างหาก

ซึ่งในวันนี้ที่จะมาพูดถึงกันก็คือเรื่องของการใช้ Docker ในการสร้าง Env. จริงๆ และใช้เป็นตัวเก็บ data และ แสดงผลแบบ real time ด้วย Graphite โดยใช้ Gatling เป็นตัวยิงแสดงผล

ซึ่งหลักๆที่จะเรียนรู้กันก็ไม่ยากคือเรื่องของ

  1. การติดตั้ง Docker Graphite Grafana
  2. คําสั่งพื้นฐานของ Docker ที่น่าสนใจการใช้งานจริงๆ (มีไม่กี่อย่างเอง)
  3. การ config gatling ให้ point resources ไปหา  docker graphite
  4. ทดลองใช้งานจริง

การติดตั้ง Docker Graphite Grafana

ไม่มีไรยากเลย ถ้าเรารู้ตัวเองว่าเราทําอะไรอยู่ อย่างในเคสนี้คือ เรารู้แล้วว่า Docker มีความสามารถในการสร้าง env. ใน container เพราะฉะนั้นเราก็แค่ไปหา container ดีๆซักตัวที่มี Graphite ไว้ให้แล้ว เอามาทําเป็น db ให้กับผล performance test ของเราแค่นั้นเอง

หลังจาก search ไปมา ก็เลือกตัวนี้ m30m repository จริงๆจะเลือกตัวอื่นก็ได้ แต่บังเอิญเจอตัวนี้ก่อนพอดี 🙂

m30m-docker-graphite-grafana
m30m-docker-graphite-grafana

ที่เลือกตัวนี้เพราะเจอว่ามันมีเขียนระบุไว้ละ ว่าเค้า set port อะไรไว้ให้ เท่าที่ดูก็มี graphite web interface ที่ port 80, grafana dashboard ที่ Port 3000 แล้วก็เปิดช่องให้ใครส่งค่าไว้ที่ port 2003 เพราะฉะนั้นเราก็ไม่ต้องคิดมากอะไร ก็แค่ run เจ้า container นี้ด้วยคําสั่ง

docker run -v /var/lib/gmonitor/graphite/whisper:/var/lib/graphite/storage/whisper -v /var/lib/gmonitor/graphite/conf:/var/lib/graphite/conf -v /var/lib/gmonitor/grafana/data:/usr/share/grafana/data -p 80:80 -p 2003:2003 -p 3000:3000 -d alexmercer/graphite-grafana

เพียงแค่นี้เราก็จะได้ container ที่ running ในระบบเราและก็ binding port ไว้เรียบร้อยแล้วด้วย ดังรูป

 

docker-running-container
docker-running-container

 

ซึ่งเราควรที่จะยืนยันอีกทีว่า container ที่เรารันขึ้นมานั้นได้ผูก Port เอาไว้จริงๆ เพื่อที่เวลาเราใช้งานจะได้ไม่เกิดปัญหาว่าข้อมูลไม่มา ด้วยคําสั่ง

 

docker-view-port
docker-view-port

 

docker port <<containter id>>

แค่นี้แหละ เราสามารถใช้งาน graphite และ grafana ได้ละ 🙂 ง่ายมั้ยล่ะการใช้ docker เนี้ย เราอาจจะทดลองเปิดหน้าเว็ปที่

http://localhost เพื่อเข้า graphite หรือ http://localhost:3000 เพื่อเข้า grafana ก็ได้

แต่ถ้าเข้าไม่ได้ไม่ต้องเป็นกังวลไป 🙂 อาจจะเป็นด้วยหลายสาเหตุ แต่สาเหตุยอดฮิตเป็นเพราะเราใช้ docker toolbox รึเปล่าที่มันรวบรวม tools ให้ (สําหรับ Window 7) มันเลยต้องใช้ ip เข้า โดยการใช้คําสั่งตามรูปเลย

docker-machine-ip-default
docker-machine-ip-default

แล้วก็เอา ip ไปใช้ Acceess ในการเข้าน่ะ http://192.168.99.100:3000 เป็นต้น

คําสั่งพื้นฐานของ Docker ที่ได้ใช้งานจริงๆ

เมื่อขั้นตอนเมื่อกี้เราจะเห็นว่าเราพิมย์คําสั่ง docker อะไรมากมายไปหมดเลยใช่มั้ย แต่ถ้าสังเกตุดีๆ มันจะเป็น Option ของ docker run ทั้งนั้น ซึ่งแบ่งได้ตามนี้ แปลแบบง่ายๆ

  • -v
    • การ map ให้ data ไว้ข้างนอกโดยจะเป็นรูปแบบ host path:container path ทีนี้เวลา container เขียนอะไรลง container path มันก็จะไปขึ้นที่ host path
  • -d
    • การสั่งให้ container ทํางานเป็น Background process ถึงแม้เราจะปิด console ลงไปมันก็ยังทํางาน
  • -p
    • เป็นการเชื่อม port กันระหว่าง host port กับ container port โดยมีรูปแบบดังนั้ host port:container port

แค่นี้เองอะ ที่เหลือมันแค่ arguments ที่ส่งไปแค่นั้นเอง เพราะฉะนั้นรู้ 3 อย่างนี้ก็สามารถใช้งานได้แล้วแหละ

แต่หลักๆที่ชอบใช้อีกสองอย่างคือ

  1. docker ps
  2. docker port <<container id>>

เจ้า docker ps จะช่วยให้เรา Docker container ที่รันอยู่ หลังจากเราสั่ง run ไปแล้ว ส่วน docker port จะช่วยให้เราเห็น container id นั้นมันเปิด Port อะไรอยู่บ้าง เพื่อเอาไว้เช็คการทํางานของมันนั้นเอง

การ config gatling ให้ point ไปหา  docker graphite

หลังจากที่่เราสนุกสนานกันสมใจล่ะ กับเรื่องของ docker ทีนี้มาดู gatling กันเถอะว่าจะ config ไปใช้ docker graphite ที่เราสร้างขึ้นมายังไง (ใครไม่รู้จัก graphite อ่านนี้เลย Gatling Load And Performance Test 101)

ทีนี้เจ้าตัว gatling มันได้เตรียมพร้อมในการใช้งานกับ graphite อยู่แล้วเพียงแค่มันจะไม่ config ให้เราเพราะมันอยากให้เราไปใช่ frontline ซึ่งเป็น commercial tool ของเค้า ก็เข้าใจน่ะ แต่เราทําเองก็ได้ ไม่ง้อ 🙂

ก่อนอื่นเลยก็ไปเปิด %GATLING_HOME%/conf/gatling.conf ก่อนเลย มันจะเป็น file config ทุกอย่างของ gatling เวลาโหลด เราแค่มาตั้งค่าตรงนี้แหละ

gatling-config-graphite
gatling-config-graphite

สิ่งที่เราต้องแก้ก็คือ host ของ graphite กับ ไปบอกมันว่าให้ writers data ให้ด้วยน่ะ รูปบนเป็นภาพจากหน้าเว็ปของ frontline แต่ของจริงมันจะออกมาหน้าตางี้

 

gatling-config-graphite
gatling-config-graphite

แค่นี้แหละ เสร็จละ แค่ไป Uncomment code ออกก็ใช้งานได้เลย

 

ทดลองใช้งานจริง

จะเขียน perf. test เองก็ขี้เกรี้ยจ %GATLING_HOME%/bin/gatling.bat แนะนําให้ไปที่นี้เลย รันมันขึ้นมา มันจะมีตัวอย่างให้ลองใช่อยู่แล้ว จะได้ไม่ต้องเขียนเองเสียเวลาชีวิต

gatling-example-cases
gatling-example-cases

แล้วก็เลือก choice ในการใช้งานไป perf. test แบบ Basic ก็จะทํางานได้ละ

หลังจากนั้นเราก็ไป http://192.168.99.100:80/ docker ของเราไปดูผลได้เลย มันจะได้รูปออกมาตามหน้าตางี้

graphite-docker
graphite-docker

แค่นี้แหละเสร็จละ จริงๆุถ้าเวลาใช้งานจริงๆ ชั่วโมงเดียวก็ทําเสร็จแล้วเนี้ย docker ช่วยชีวิตจริงๆ

สรุปละ

การใช้งาน docker ฬนยุคนี้จําเป็นมากจริงๆเพราะเวลาเป็นเงินเป็นทองมาก แถมเรายังเอาไปประยุกต์ได้หลายอย่างมากๆ อย่างตัวอย่างนี้ช่วยให้เกิดความกระจ่ายกับ docker และ gatling เลย เอาไปต่อยอดสบายๆมากๆละ 🙂

 

Leave a Reply

avatar

This site uses Akismet to reduce spam. Learn how your comment data is processed.