DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

27

Prometheus คืออะไร

ตอนนี้กำลังหัดใช้ Prometheus อยู่ ก็เดี๋ยวจะบันทึกสิ่งที่ได้เรียนรู้ไปด้วย ซึ่งตอนนี้ก็อ่านจากเว็บทางการของ Prometheus เองคือลิ้งนี้ https://prometheus.io/docs/introduction/overview/

สำหรับวันนี้อ่านตรง Overview ซึ่งเล่าให้เราฟังก่อนว่า Prometheus นั้นคืออะไร

Prometheus คือระบบ monitoring และ alerting tookit ที่เริ่มพัฒนาโดยบริษัท SoundCloud ก่อน ซึ่งเขาก็ได้ opensource ตัวโปรเจ็คนี้ทำให้บริษัทอื่นๆก็ได้เอาไปประยุกต์ใช้งานด้วย ปัจจุบันตัวโปรเจ็คเองก็เป็นโครงการที่แยกตัวจาก SoundCloud ไม่ได้ขึ้นกับบริษัทใดๆโดยตรง

Features

ความสามารถหลักของ Prometheus ที่ทำได้คือ

  • เก็บข้อมูลในลักษณะ multi-dimensional ได้โดยจัดเก็บเป็น time series คือเรียกตามลำดับเวลาซึ่งแต่ละค่าที่ไหลเข้ามาก็จะเป็นแบบ key/value โดยคีย์คือ metric name นั่นเอง
  • มีภาษาในการ query ข้อมูลของตัวเองชื่อ PromQL เพื่อ query ข้อมูล, aggregate ข้อมูลของ metric ที่เก็บไว้นั่นเอง
  • storage ไม่จำเป็นต้องเป็นแบบ distributed แต่ละ server nodes ทำงานและเก็บข้อมูลได้ในตัวเอง
  • การเก็บข้อมูลนั้นใช้ pull model over HTTP คือตัว Prometheus เองจะไปดึงข้อมูลจากเป้าหมายที่ต้องการรวบรวมเอง ไม่ต้องให้เป้าหมายส่งมาให้ Prometheus
  • Prometheus จะหาเครื่องเป้าหมายผ่านทางระบบ service discovery หรือใช้วิธี config เองก็ได้
  • รองรับระบบ graph และ dashboard หลายๆแบบ

Alt Text

Components

architecture ของ Prometheus นั้นประกอบไปด้วย

  • Prometheus server ซึ่งจะทำหน้าที่ไปดึงข้อมูลแล้วก็เก็บข้อมูล time series
  • client libraries เป็น library ที่ช่วยให้ฝั่ง client เตรียมข้อมูลให้อยู่ในรูปแบบที่ Prometheus จะดึงมาเก็บได้
  • push gateway ในบางงานที่ทำงานใช้งานสั้นๆแล้วปิดตัวเองลงไป คงไม่เหมาะที่จะให้ไป pull ดังนั้นจึงมี push gateway เพื่อให้งานสั้นๆพวกนี้ส่งข้อมูลมาเก็บไว้ที่ gateway ก่อนแล้วค่อยให้ Prometheus มา pull ไปอีกที
  • exporters เป็นโปรแกรมที่จะช่วยแปลงข้อมูลของระบบอื่นๆที่มีอยู่แล้วให้มาอยู่ในรูปแบบของ metrics ที่ Prometheus เข้าใจได้ เช่น exporters ที่จะแปลงข้อมูลจากโปรแกรมพวก web server หรือ database ต่างๆ
  • alertmanager เอาไว้ push alerts ไปหาระบบอื่นๆเช่น ส่ง email ส่ง messaging เป็นต้น
  • Data visualization and export คือโปแกรมส่วนที่เป็น UI ที่มาดึงข้อมูลจาก Prometheus ไปแสดงผล ไม่ว่าจะเป็น Prometheus web UI เองหรือ Grafana เป็นต้น

When does it fit?

  • Prometheus ทำงานได้ดีกับข้อมูลที่เป็นตัวเองตามลำดับเวลา (purely numeric time series)
  • ทำงานได้ดีกับทั้งการ monitor การทำงานของเครื่องเป็นหลัก หรือของ service เป็นหลัก
  • ออกแบบให้ reliability แต่ละ node ของ Prometheus เป็นแบบ standalone ไม่จำเป็นต้องพึ่งพา network storage หรือ remote service อื่นๆในการทำงาน

When does it not fit?

สิ่งที่ Prometheus ไม่เหมาะคือถ้าเราต้องการวัดข้อมูลทาง statistics แบบถูกต้อง 100% เช่นจะวัด per-request billing เพราะมันไม่ได้ถูกออกแบบมาให้เก็บข้อมูลรายละเอียดได้สมบูรณ์ 100% ขนาดนั้น แบบนั้นควรใช้เครื่องมือสำหรับรวบรวมและวิเคราะห์ข้อมูลโดยตรงดีกว่า ถ้าเป็นเรื่อง monitoring ค่อยยกให้เป็นหน้าที่ Prometheus

คร่าวๆประมาณนี้ครับสำหรับวันนี้ที่อ่านได้ อาจจะสรุปตกหล่นไปบ้างคงต้องไปอ่านเก็บรายละเอียดกันต่อเองที่เว็บของ Prometheus ครับ

Buy Me A Coffee

Reinvent your career. Join DEV.

It takes one minute and is worth it for your career.

Get started

Top comments (0)

Billboard image

Try REST API Generation for Snowflake

DevOps for Private APIs. Automate the building, securing, and documenting of internal/private REST APIs with built-in enterprise security on bare-metal, VMs, or containers.

  • Auto-generated live APIs mapped from Snowflake database schema
  • Interactive Swagger API documentation
  • Scripting engine to customize your API
  • Built-in role-based access control

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay