ในบทความนี้ ฉันต้องการแบ่งปันประสบการณ์ของฉันในการใช้ระบบโอเพ่นซอร์ส Zabbix และ Grafana เพื่อให้เห็นภาพการทำงานของสายการผลิต ข้อมูลนี้อาจเป็นประโยชน์สำหรับผู้ที่มองหาวิธีที่รวดเร็วในการแสดงหรือวิเคราะห์ข้อมูลที่รวบรวมในระบบอัตโนมัติทางอุตสาหกรรมหรือโครงการ IoT อย่างรวดเร็ว บทความนี้ไม่ใช่บทช่วยสอนโดยละเอียด แต่เป็นแนวคิดสำหรับระบบตรวจสอบที่ใช้ซอฟต์แวร์โอเพ่นซอร์สสำหรับโรงงานผลิต
เครื่องมือ
Zabbix – เราใช้มันมาเป็นเวลานานในการตรวจสอบโครงสร้างพื้นฐานด้านไอทีของโรงงาน ระบบนี้สะดวกและเป็นสากลมากจนเราเริ่มป้อนข้อมูลจากสายการผลิต เซ็นเซอร์ และตัวควบคุมลงไป สิ่งนี้ทำให้เราสามารถรวบรวมข้อมูลตัววัดทั้งหมดไว้ในที่เดียว สร้างกราฟง่ายๆ ของการใช้ทรัพยากรและประสิทธิภาพของอุปกรณ์ แต่เราขาดการวิเคราะห์และกราฟที่สวยงามจริงๆ
กราฟาน่า เป็นเครื่องมืออันทรงพลังสำหรับการวิเคราะห์และการแสดงภาพข้อมูล ปลั๊กอินจำนวนมากช่วยให้คุณสามารถดึงข้อมูลจากแหล่งต่าง ๆ (zabbix, clickhouse, influxDB) ประมวลผลได้ทันที (คำนวณค่าเฉลี่ย ผลรวม ผลต่าง ฯลฯ ) และวาดกราฟทุกประเภท (จากเส้นธรรมดา มาตรวัดความเร็ว, ตารางไปจนถึงไดอะแกรมที่ซับซ้อน)
Draw.io – บริการที่ช่วยให้คุณสามารถวาดจากบล็อกไดอะแกรมธรรมดาไปจนถึงแผนผังชั้นในตัวแก้ไขออนไลน์ มีเทมเพลตสำเร็จรูปและวัตถุที่วาดไว้มากมาย ข้อมูลสามารถส่งออกไปยังรูปแบบกราฟิกหลักทั้งหมดหรือ xml
วางทั้งหมดเข้าด้วยกัน
มีบทความมากมายที่เขียนเกี่ยวกับวิธีติดตั้งและกำหนดค่า Grafana และ Zabbix ฉันจะบอกคุณเกี่ยวกับจุดกำหนดค่าหลัก
“โหนดเครือข่าย” (โฮสต์) ถูกสร้างขึ้นบนเซิร์ฟเวอร์ Zabbix ซึ่งจะเป็นเจ้าของ “องค์ประกอบข้อมูล” (รายการ) พร้อมตัวชี้วัดจากเซ็นเซอร์ของเรา ขอแนะนำให้คิดชื่อของโหนดและองค์ประกอบข้อมูลล่วงหน้า และทำให้พวกมันมีโครงสร้างมากที่สุดเท่าที่จะเป็นไปได้ เนื่องจากเราจะเข้าถึงพวกมันจากกราฟานาผ่านนิพจน์ทั่วไป วิธีการนี้สะดวกเนื่องจากคุณสามารถรับข้อมูลจากกลุ่มองค์ประกอบได้ด้วยการร้องขอเพียงครั้งเดียว
ในการกำหนดค่า Grafana คุณจะต้องติดตั้งปลั๊กอินเพิ่มเติม:
- Zabbix โดย Alexander Zobnin (alexanderzobnin-zabbix-app) - บูรณาการกับ zabbix
- natel-discrete-panel – ปลั๊กอินสำหรับการแสดงภาพแบบไม่ต่อเนื่องบนกราฟแนวนอน
- pierosavi-imageit-panel – ปลั๊กอินสำหรับแสดงข้อมูลที่ด้านบนของภาพ
- agenty-flowcharting-panel – ปลั๊กอินสำหรับการแสดงไดอะแกรมไดนามิกจาก Draw.io
การบูรณาการกับ Zabbix นั้นได้รับการกำหนดค่าใน grafana รายการเมนู ConfigurationData SourceZabbix ที่นั่นคุณต้องระบุที่อยู่ของเซิร์ฟเวอร์ api zabbix นี่คือสิ่งที่ฉันมี
การสร้างแดชบอร์ด
นี่คือจุดเริ่มต้นของความมหัศจรรย์ของ Grafana และปลั๊กอินของมัน
ปลั๊กอิน Natel-discrete-panel
เรามีข้อมูลเกี่ยวกับสถานะของมอเตอร์บนไลน์ (ทำงาน = 1, ไม่ทำงาน = 0) เมื่อใช้กราฟแยก เราสามารถวาดสเกลที่จะแสดง: สถานะของเครื่องยนต์ จำนวนนาที/ชั่วโมง หรือ % ที่เครื่องยนต์ทำงาน และความถี่ที่สตาร์ท
การแสดงสถานะเครื่องยนต์
ในความคิดของฉัน นี่เป็นหนึ่งในกราฟที่ดีที่สุดสำหรับการแสดงประสิทธิภาพของฮาร์ดแวร์ คุณสามารถดูได้ทันทีว่าไม่ได้ใช้งานมานานแค่ไหนและในโหมดใดที่ทำงานบ่อยขึ้น อาจมีข้อมูลจำนวนมาก สามารถรวมเป็นช่วง แปลงเป็นค่าได้ (หากค่าเป็น “1” ให้แสดงเป็น “เปิด”)
ปลั๊กอิน pierosavi-imageit-panel
รูปภาพสะดวกในการใช้งานเมื่อคุณมีไดอะแกรมที่วาดหรือแผนผังชั้นที่คุณต้องการใช้ข้อมูลจากเซ็นเซอร์อยู่แล้ว ในการตั้งค่าการแสดงภาพ คุณต้องระบุ URL ให้กับรูปภาพและเพิ่มองค์ประกอบเซ็นเซอร์ที่คุณต้องการ องค์ประกอบจะปรากฏในภาพและสามารถวางในตำแหน่งที่ต้องการได้ด้วยเมาส์
แผนภาพเตาเผาพร้อมหน่วยวัดอุณหภูมิและความดัน
ปลั๊กอินแผงควบคุมผังงานตัวแทน
ฉันอยากจะพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับการสร้างการแสดงภาพ FlowCharting เนื่องจากเป็นเครื่องมือที่ใช้งานได้อย่างเหลือเชื่อ ช่วยให้คุณสร้างไดอะแกรมช่วยจำแบบไดนามิกองค์ประกอบที่จะตอบสนองต่อค่าของเมตริก (เปลี่ยนสีตำแหน่งชื่อ ฯลฯ )
กำลังรับข้อมูล
การสร้างองค์ประกอบการแสดงภาพใดๆ ใน Grafana เริ่มต้นด้วยการร้องขอข้อมูลจากแหล่งที่มา ในกรณีของเราคือ zabbix เมื่อใช้แบบสอบถาม เราจำเป็นต้องได้รับหน่วยวัดทั้งหมดที่เราต้องการใช้ในไดอะแกรม รายละเอียดเมตริกคือชื่อขององค์ประกอบข้อมูลใน Zabbix คุณสามารถระบุเมตริกแต่ละรายการหรือชุดที่กรองผ่านนิพจน์ทั่วไปได้ ในตัวอย่างของฉัน ฟิลด์รายการมีนิพจน์: “/(^line 1)|(availability)|(zucchini)/” - หมายความว่า: เลือกเมตริกทั้งหมดที่มีชื่อขึ้นต้นด้วย "บรรทัด 1" อย่างเคร่งครัดหรือมีคำว่า "availability" ” หรือมีคำว่า “บวบ”
ตัวอย่างการตั้งค่าคำขอข้อมูลเกี่ยวกับเอ็นจิ้นบรรทัดแรกและความพร้อมใช้งานของวัตถุดิบ
การแปลงข้อมูล
ข้อมูลต้นฉบับอาจไม่อยู่ในรูปแบบที่เราต้องแสดงเสมอไป ตัวอย่างเช่น เรามีข้อมูลน้ำหนักของผลิตภัณฑ์ในคอนเทนเนอร์แบบนาทีต่อนาที (กก.) และเราจำเป็นต้องแสดงอัตราการบรรจุเป็นตัน/ชั่วโมง ฉันทำเช่นนี้ด้วยวิธีต่อไปนี้: ฉันนำข้อมูลน้ำหนักมาแปลงด้วยฟังก์ชันกราฟานาเดลต้า ซึ่งจะคำนวณความแตกต่างระหว่างค่าเมตริก ดังนั้นน้ำหนักปัจจุบันจึงเปลี่ยนเป็นกิโลกรัม/นาที จากนั้นผมคูณด้วย 0.06 เพื่อให้ได้ผลลัพธ์เป็นตัน/ชั่วโมง เนื่องจากมีการใช้เมตริกน้ำหนักในการสืบค้นหลายรายการ ฉันจึงระบุนามแฝงใหม่ (setAlias) และจะใช้ในกฎการแสดงภาพ
ตัวอย่างการใช้พารามิเตอร์เดลต้าและตัวคูณและการเปลี่ยนชื่อเมตริกในคิวรี
นี่เป็นอีกตัวอย่างหนึ่งของการแปลงข้อมูล: ฉันต้องนับจำนวนชุด (การเริ่มรอบ = การสตาร์ทเครื่องยนต์) ตัวชี้วัดคำนวณตามสถานะเครื่องยนต์ "บรรทัดที่ 1 - ปั๊มปั๊มจากถัง 1 (สถานะ)" การเปลี่ยนแปลง: เราเปลี่ยนข้อมูลของตัวชี้วัดดั้งเดิมด้วยฟังก์ชันเดลต้า (ความแตกต่างของค่า) ดังนั้นตัวชี้วัดจะมีค่า “+1” สำหรับการสตาร์ทเครื่องยนต์ “-1” สำหรับการหยุดและ “0” เมื่อเครื่องยนต์ทำ ไม่เปลี่ยนสถานะ จากนั้นฉันก็ลบค่าทั้งหมดที่น้อยกว่า 1 แล้วรวมเข้าด้วยกัน ผลลัพธ์คือจำนวนเครื่องยนต์ที่สตาร์ท
ตัวอย่างการแปลงข้อมูลจากสถานะปัจจุบันเป็นจำนวนการเริ่มต้น
ตอนนี้เกี่ยวกับการสร้างภาพข้อมูลเอง
ในการตั้งค่าการแสดงผลจะมีปุ่ม "แก้ไขการวาด" ซึ่งจะเปิดตัวแก้ไขซึ่งคุณสามารถวาดไดอะแกรมได้ แต่ละวัตถุบนไดอะแกรมมีพารามิเตอร์ของตัวเอง ตัวอย่างเช่น หากคุณระบุการตั้งค่าแบบอักษรในตัวแก้ไข การตั้งค่าเหล่านั้นจะถูกนำไปใช้กับการแสดงภาพข้อมูลใน Grafana
นี่คือลักษณะของตัวแก้ไขใน Draw.io
หลังจากบันทึกไดอะแกรมแล้ว ไดอะแกรมจะปรากฏในกราฟาน่า และคุณสามารถสร้างกฎสำหรับการเปลี่ยนองค์ประกอบได้
ในพารามิเตอร์ () เราระบุ:
- ตัวเลือก—ตั้งชื่อกฎ ชื่อหรือนามแฝงของเมตริกที่จะใช้ข้อมูล (ใช้กับเมตริก) ประเภทของการรวบรวมข้อมูล (การรวมกลุ่ม) ส่งผลต่อผลลัพธ์สุดท้ายของเมตริก ดังนั้น Last หมายความว่าค่าสุดท้ายจะถูกเลือก avg คือค่าเฉลี่ยสำหรับช่วงเวลาที่เลือกที่มุมขวาบน
- เกณฑ์ - พารามิเตอร์ค่าเกณฑ์อธิบายตรรกะของการใช้สีนั่นคือสีที่เลือกจะถูกนำไปใช้กับองค์ประกอบบนไดอะแกรมขึ้นอยู่กับข้อมูลเมตริก ในตัวอย่างของฉัน หากค่าหน่วยเมตริกเป็น "0" สถานะจะเป็น "ตกลง" สีจะเป็นสีเขียว หากค่าเป็น ">1" สถานะจะเป็นสำคัญ และสีจะเป็นสีแดง
- การแมปสี/คำแนะนำเครื่องมือ" และ "การแมปป้ายกำกับ/ข้อความ" - การเลือกองค์ประกอบสคีมาและสถานการณ์สำหรับลักษณะการทำงาน ในสถานการณ์แรก วัตถุจะถูกทาสีทับ ในสถานการณ์ที่สอง จะมีข้อความพร้อมข้อมูลจากหน่วยเมตริก ในการเลือกวัตถุบนแผนภาพ คุณต้องคลิกที่เครื่องหมายวงจรและคลิกที่แผนภาพ
ในตัวอย่างนี้ ฉันทาสีปั๊มและลูกศรเป็นสีแดงหากใช้งานได้ และทาสีเป็นสีเขียวหากไม่ได้ผล
ด้วยการใช้ปลั๊กอินผังงาน ฉันสามารถวาดไดอะแกรมของเส้นทั้งหมดได้ ซึ่ง:
- สีของหน่วยจะเปลี่ยนไปตามสถานะ
- มีสัญญาณเตือนการไม่มีสินค้าในภาชนะบรรจุ
- การตั้งค่าความถี่มอเตอร์จะปรากฏขึ้น
- ความเร็วในการเติม/เทถังแรก
- คำนวณจำนวนรอบของการทำงานของสายการผลิต (แบทช์)
การแสดงภาพการทำงานของสายการผลิต
ผล
สิ่งที่ยากที่สุดสำหรับฉันคือการได้รับข้อมูลจากคอนโทรลเลอร์ ด้วยความสามารถรอบด้านของ Zabbix ในแง่ของการรับข้อมูลและความยืดหยุ่นของ Grafana เนื่องจากปลั๊กอิน จึงใช้เวลาเพียงสองสามวันในการสร้างหน้าจอตรวจสอบสายการผลิตที่ครอบคลุม การแสดงภาพทำให้สามารถดูกราฟและสถิติของรัฐได้ อีกทั้งยังเข้าถึงได้ง่ายผ่านเว็บสำหรับทุกคนที่สนใจ ทั้งหมดนี้ทำให้สามารถระบุปัญหาคอขวดและการใช้หน่วยที่ไม่มีประสิทธิภาพได้อย่างรวดเร็ว
ข้อสรุป
ฉันชอบชุดค่าผสม Zabbix+Grafana มาก และฉันขอแนะนำให้ให้ความสนใจหากคุณต้องการประมวลผลข้อมูลจากตัวควบคุมหรือเซ็นเซอร์อย่างรวดเร็วโดยไม่ต้องเขียนโปรแกรมหรือใช้ผลิตภัณฑ์เชิงพาณิชย์ที่ซับซ้อน แน่นอนว่าสิ่งนี้จะไม่มาแทนที่ระบบ SCADA ระดับมืออาชีพ แต่จะเพียงพอในฐานะเครื่องมือสำหรับการตรวจสอบการผลิตทั้งหมดแบบรวมศูนย์
ที่มา: will.com