พื้นที่เก็บข้อมูลนี้ได้รับการเก็บถาวรเพื่อรองรับปลั๊กอินในตัวที่มีอยู่ใน Grafana เวอร์ชัน 9+: สถานะ-ประวัติ และสถานะ-ไทม์ไลน์ ชุมชนใช้ปลั๊กอินเหล่านี้เพื่อทดแทนแผนผังสถานะแบบเรียบ ดูข้อมูลเพิ่มเติมที่ปัญหา #302 หากคุณคิดว่าปลั๊กอินนี้ตรงกับความต้องการของคุณและต้องการพัฒนาต่อไป อย่าลังเลที่จะสร้างทางแยก เราอยากเห็นคุณก้าวไปอีกขั้น!
แผงสำหรับแสดงสถานะแยกของเป้าหมายหลายรายการในช่วงเวลาหนึ่ง
เรียกใช้
docker compose up
และเปิด http://localhost:3000 ในเบราว์เซอร์เพื่อดูการสาธิตง่ายๆ
เรามีความจำเป็นอย่างยิ่งที่จะต้องเห็นภาพชุดสถานะอนุกรมเวลาในช่วงเวลาหนึ่ง ดังนั้นเราจึงสามารถดูประวัติการเปลี่ยนแปลงสถานะของออบเจ็กต์ได้ เนื่องจากเราดูแลรักษาคลัสเตอร์ Kubernetes จำนวนมาก (และโครงสร้างพื้นฐานที่เกี่ยวข้อง) กรณีหลักของเราคือการแสดงภาพสถานะความสมบูรณ์ของเซิร์ฟเวอร์และพ็อด Kubernetes รวมถึงการตรวจสอบความสมบูรณ์ของบริการ HTTP เราได้ลองใช้ปลั๊กอิน Grafana ที่มีอยู่มากมาย (แสดงอยู่ใน การรับทราบ ด้านล่าง) แต่ไม่มีปลั๊กอินใดที่สามารถให้คุณสมบัติและการแสดงภาพได้ใกล้เคียงกับสิ่งที่เรากำลังมองหา
หมายเหตุ: คุณสามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับการเดินทางของเราในการสร้างปลั๊กอินได้ในโพสต์นี้
ออบเจ็กต์ ที่มองเห็นด้วยปลั๊กอินนี้อาจแตกต่างกัน: ไม่เพียงแต่ส่วนประกอบด้านไอที (เช่น โฮสต์เซิร์ฟเวอร์และพ็อด Kubernetes) แต่ยังรวมถึงทุกสิ่งที่คุณสามารถจินตนาการได้ เช่น เครื่องชงกาแฟในภาพด้านบน ออบเจ็กต์เหล่านี้ควรมี สถานะแยกกัน ซึ่งเป็นชุดของค่าที่กำหนดไว้ล่วงหน้า เช่น ok
= 0, off
= 1, fail
= 2 เป็นต้น
หากต้องการสร้างกราฟที่เรียบร้อยแหล่งข้อมูลของคุณควรส่งคืนข้อมูลที่ดี ปลั๊กอินปรับตัวแปร $__interval
ขึ้นอยู่กับความกว้างของบัคเก็ตในตัวเลือกพาเนล ข้อความค้นหาของคุณควรรวมสถานะไว้ในช่วง $__interval
หากต้องการให้โหมดหลายค่าทำงานตามที่คาดไว้ คุณควรกำหนดการสืบค้นหลายรายการ: แบบสอบถามเดียวสำหรับแต่ละสถานะที่เป็นไปได้
ปลั๊กอินไม่ได้รวบรวมข้อมูลทันเวลาในขณะนี้ แต่จะแสดงผลข้อมูลอินพุตเป็นบัคเก็ตเท่านั้น เนื่องจากข้อมูลนี้ควรมีจุดสำหรับการประทับเวลาแต่ละรายการในช่วงเวลาและการประทับเวลาเท่ากันสำหรับทุกเป้าหมายที่เป็นไปได้ (ป้ายกำกับแกน y) ข้อจำกัดนี้แก้ไขได้โดยฉบับที่ #53
หากต้องการทำงานกับข้อมูลจาก Prometheus คุณจะต้องตั้งค่าสถานะแยกสำหรับออบเจ็กต์ของคุณ ข้อกำหนดในการจัดเก็บสถานะเหล่านี้ในหน่วยวัดมีดังนี้:
0
และ 1
;เมื่อเสร็จแล้ว คุณสามารถรวบรวมข้อมูลทั้งหมดผ่านการสืบค้น เช่น:
(max_over_time(coffee_maker_status{status=""}[$__interval]) == 1) *
หากไม่มีสถานะดังกล่าว (
) ในระหว่างช่วงเวลาของการสืบค้น Prometheus จะไม่ส่งคืนสิ่งใดเลย มิฉะนั้น ค่าสถานะจะถูกส่งกลับ
ตัวอย่างเช่น หากคุณมีสถานะ 5 ประเภทและเมตริก ( coffee_maker_status
) ที่มีค่าที่อนุญาต 5 ค่า ( 0
, 1
, 2
, 3
, 4
) คุณควรแปลงเมตริกนี้โดยใช้กฎต่อไปนี้:
- record: coffee_maker_status:discrete
expr: |
count_values("status", coffee_maker_status)
นั่นคือวิธีที่หน่วยวัด coffee_maker_status
ที่มีค่า 3
จะถูกแปลงเป็นหน่วยวัดใหม่:
coffee_maker_status:discrete{status="3"} 1
ตอนนี้ เมื่อ Prometheus มีค่า 0
และ 1
สำหรับแต่ละสถานะ คุณสามารถรวมตัววัดเหล่านี้ทั้งหมดได้ ดังนั้นคุณจะได้รับสถานะที่พร้อมใช้งานทั้งหมดของออบเจ็กต์ของคุณเมื่อเวลาผ่านไป
เลือก 'อนุกรมเวลา' สำหรับ 'จัดรูปแบบเป็น' และใช้ GROUP BY ($__interval)
ในการค้นหา $tag_
สามารถใช้ใน 'Alias by' เพื่อกำหนดป้ายกำกับแกน y
ตัวอย่างแบบสอบถามที่มีการรวมมากกว่า $__interval
เป็นเช่นนี้ (คุณต้องมีหนึ่งแบบสอบถามสำหรับแต่ละค่าสถานะที่เป็นไปได้):
SELECT
$__timeGroupAlias(date_insert,$__interval),
name AS metric,
min(statusi) AS "statusi"
FROM coffee_makers
WHERE
$__timeFilter(date_insert) AND statusi=1
GROUP BY 1,2
ORDER BY $__timeGroup(date_insert,$__interval)
คอลัมน์ metric
ใช้เป็นป้ายกำกับแกน y
ประการแรก ควรสร้างแบบสอบถามแต่ละรายการสำหรับค่าสถานะที่เป็นไปได้แต่ละรายการ แต่ละแบบสอบถามควรมีคำอธิบายที่คล้ายกันสำหรับการจัดกลุ่ม:
จากนั้น ควรกำหนดการจับคู่สีสำหรับค่าสถานะในโหมดสี แยก :
ใช้สามารถใช้การตั้งค่าล่วงหน้าเพื่อกำหนดสีไฟจราจรหรือ 8 สีจากจานสีโซลาร์ไลซ์:
หมายเหตุ: โหมดสี สเปกตรัม และ ความทึบ ทำงานในลักษณะเดียวกับที่ทำในปลั๊กอิน Heatmap
ช่องทำ เครื่องหมายหลายค่า ระบุว่าควรแสดงอย่างไร:
ค่าว่างในการแสดงผล สามารถถือเป็นที่เก็บข้อมูลว่างหรือแสดงด้วยค่าสี 0
ความกว้าง และ ระยะห่าง ขั้นต่ำใช้เพื่อระบุความกว้างและระยะห่างขั้นต่ำของบัคเก็ตและระยะห่างระหว่างบัคเก็ต การปัดเศษ อาจใช้เพื่อทำให้ขอบมน
ดัชนีค่า ที่กำหนดเป็นจำนวนบวกเพื่อแสดงเฉพาะค่าจากอนุกรมเวลาที่ระบุ
ช่องทำ เครื่องหมายแสดง คำอธิบายสลับคำอธิบายที่ด้านล่างของแผง
การเรียงลำดับแถว สามารถใช้เพื่อเรียงลำดับป้ายกำกับบนแกน Y เมตริก — จัดเรียงป้ายกำกับตามที่กำหนดไว้ในแท็บเมตริก a → z และ z → ป้ายกำกับการเรียงลำดับจากมากไปหาน้อยหรือจากน้อยไปมากตามลำดับธรรมชาติ
เปิดใช้งานการแบ่งหน้า สลับการควบคุมการแบ่งหน้าบนกราฟ
แถวต่อหน้า จำนวนแถวที่จะแสดงบนกราฟ
แสดงคำแนะนำเครื่องมือ สลับการแสดงคำแนะนำเครื่องมือบนที่เก็บข้อมูล
ตรึงเมื่อคลิก สลับคำแนะนำเครื่องมือ "แช่แข็ง" เมื่อคลิก คำแนะนำเครื่องมือ Frozen สามารถใช้เพื่อเปรียบเทียบข้อมูลกับคำแนะนำเครื่องมือแบบลอยหรือติดตาม URL
แสดงรายการ สลับแสดงรายการเพิ่มเติมในคำแนะนำเครื่องมือ
รายการ คือรายการคำจำกัดความที่จะแสดง URL ในคำแนะนำเครื่องมือ
แต่ละ URL มีเทมเพลต ไอคอน ป้ายกำกับ และตัวเลือกการจัดรูปแบบ ได้แก่ รูปแบบตัวพิมพ์เล็กและวันที่สำหรับตัวแปร
ในบางกรณี สถานการณ์ แผงสถานะจะใช้เพื่อเปลี่ยนจากแดชบอร์ดหนึ่งไปยังแดชบอร์ดที่เฉพาะเจาะจงมากขึ้น เช่น เมื่อดำเนินการวิเคราะห์ต้นตอ/สาเหตุ ในกรณีเช่นนี้ ผู้ใช้อาจต้องการลดขอบเขตของช่วงเวลาโดยให้เหตุการณ์ที่ต้องการอยู่ตรงกลาง (เพื่อให้สามารถวิเคราะห์ช่วงเวลาก่อนหน้า/หลังได้) ค่าเหล่านั้นถูกนำมาใช้ผ่าน __bucket_from
และ __bucket_to
__bucket_from
: คือค่าของ bucket.from
ลบด้วยเปอร์เซ็นต์ที่เก็บข้อมูล __bucket_to
: คือค่าของ bucket.to
บวกกับที่เก็บข้อมูลเปอร์เซ็นต์
ปลั๊กอินนี้เผยแพร่สู่สาธารณะครั้งแรกโดยวิศวกรของ Flant แนวคิดทั้งหมดมาจาก Dmitry Stolyarov (@distol) เวอร์ชันเริ่มต้นเขียนโดย Sergey Gnuskov (@gsmetal) และการเปลี่ยนแปลงขั้นสุดท้ายจัดทำโดย Ivan Mikheykin (@diafour)
ปลั๊กอินนี้อิงตามแผง "Heatmap" โดย Grafana และได้รับแรงบันดาลใจบางส่วนจากแนวคิดจาก Carpet plot, Discrete panel, Status Panel, Status Dot, Status By Group