ในการจัดการ container ด้วย Docker นั้น
เรื่องหนึ่งที่สำคัญมาก ๆ คือ การ monitoring นั่นเอง
เราจะรู้ได้อย่างไรว่า Docker ทำงานอะไรบ้าง ?
เราจะรู้ได้อย่างไรว่า แต่ละ container ใช้งาน CPU, Memory และ I/O เท่าไร ?
สิ่งต่าง ๆ เหล่านี้เป็นคำถามที่ผู้ใช้งานใหม่ ๆ ต้องตอบให้ได้
ดังนั้นมาดูกันหน่อย ว่าทำอย่างไรได้บ้าง ?
เริ่มต้นด้วยวิธีการง่าย ๆ คือ Command line นี่เอง
โดย Docker ได้เตรียมชุดคำสั่งมาให้แล้ว
คำสั่งแรกคือ
// ดูการทำงานทั้งหมด ประกอบไปด้วย CPU/Memory และ I/O แบบ realtime $docker container stats // หรือสามารถดูรายละเอียดของแต่ละ container ก็ได้ $docker container stats <id/name> // หรือสามารถเรียกใช้งานผ่าน Docker Remote API ได้เลย $curl --unix-socket /var/run/docker.sock http://localhost/containers/<id/name>/stats // หรือถ้าต้องการดู event หรือการทำงานภายในของ Docker ก็ใช้ $docker system events
วิธีการที่สอง ทำการ monitor ผ่าน Metric ด้วย Premetheus
โดยค่า default นั้นปิดไว้
ดังนั้นเราจำเป็นต้องเปิดใช้งานก่อน
ในแต่ละ OS นั้นก็มีการ configuration ที่ต่างกันดังนี้
- Linux แก้ไขที่ไฟล์ /etc/docker/daemon.json
- Windows Server แก้ไขที่ไฟล์ C:\ProgramData\docker\config\daemon.json
- Docker for Mac / Docker for Windows ไปที่ Docker icon เลือก Preferences => Daemon และกด Advanced
จากนั้นทำการแก้ไขและ restart Docker ดังนี้
{ "metrics-addr" : "0.0.0.0:1337", "experimental" : true }
จากนั้นสามารถเข้าใช้งานผ่าน url = http://localhost:1337/metrics
เมื่อทุกอย่างเรียบร้อยก็ติดตั้งและ configuration ค่าของ Premetheus ซะ
ส่วน graph สวย ๆ ก็ไปใช้งาน Grafana ก็พอไปวัดไปวาได้
วิธีการที่สาม ใช้งานผ่าน cAdvisor
ไม่ต้องทำอะไรมาก เพียงสร้าง container มาเลย ดังนี้
$docker run \ -d \ --name=cadvisor \ -p 8080:8080 \ --volume=/var/run:/var/run:rw \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ google/cadvisor:latest
จากนั้นก็เข้าไปใช้งานผ่าน url = http://localhost:8080
เพียงเท่านี้เราก็สามารถ monitor การทำงานของ Docker แบบง่าย ๆ ได้แล้วครับ