การวัดและส่งข้อมูลทางไกลใน Junos สำหรับปริมาณงาน AI/ML
ผู้เขียน : ชาลินี มุกเคอร์จี
การแนะนำ
เนื่องจากการรับส่งข้อมูลคลัสเตอร์ AI ต้องใช้เครือข่ายที่ไม่มีการสูญเสียข้อมูลพร้อมปริมาณงานสูงและเวลาแฝงต่ำ องค์ประกอบที่สำคัญของเครือข่าย AI จึงคือการรวบรวมข้อมูลการตรวจสอบ Junos Telemetry ช่วยให้สามารถตรวจสอบตัวชี้วัดประสิทธิภาพหลักได้อย่างละเอียด รวมถึงเกณฑ์และตัวนับสำหรับการจัดการความแออัดและการปรับสมดุลโหลดการรับส่งข้อมูล เซสชัน gRPC รองรับการสตรีมข้อมูลการวัดระยะไกล gRPC เป็นกรอบงานโอเพ่นซอร์สประสิทธิภาพสูงที่ทันสมัยซึ่งสร้างขึ้นบนการขนส่ง HTTP/2 กรอบงานดังกล่าวเพิ่มขีดความสามารถในการสตรีมแบบทวิภาคีดั้งเดิมและรวมข้อมูลเมตาแบบกำหนดเองที่ยืดหยุ่นในส่วนหัวคำขอ ขั้นตอนเริ่มต้นในการวัดระยะไกลคือการทราบว่าจะรวบรวมข้อมูลใด จากนั้นเราสามารถวิเคราะห์ข้อมูลนี้ในรูปแบบต่างๆ ได้ เมื่อเรารวบรวมข้อมูลแล้ว สิ่งสำคัญคือต้องนำเสนอข้อมูลในรูปแบบที่ตรวจสอบได้ง่าย ตัดสินใจได้ และปรับปรุงบริการที่นำเสนอ ในเอกสารนี้ เราใช้สแต็กการวัดระยะไกลซึ่งประกอบด้วย Telegraf, InfluxDB และ Grafana สแต็กการวัดระยะไกลนี้รวบรวมข้อมูลโดยใช้แบบจำลองพุช โมเดลการดึงแบบดั้งเดิมนั้นใช้ทรัพยากรจำนวนมาก ต้องมีการแทรกแซงด้วยตนเอง และอาจรวมถึงช่องว่างข้อมูลในข้อมูลที่รวบรวม โมเดลการผลักจะเอาชนะข้อจำกัดเหล่านี้ได้โดยส่งมอบข้อมูลแบบไม่พร้อมกัน โมเดลเหล่านี้ทำให้ข้อมูลสมบูรณ์ยิ่งขึ้นโดยใช้วิธีที่เป็นมิตรกับผู้ใช้ tags และชื่อ เมื่อข้อมูลอยู่ในรูปแบบที่อ่านง่ายขึ้น เราจะจัดเก็บไว้ในฐานข้อมูลและใช้ข้อมูลดังกล่าวในการสร้างภาพเชิงโต้ตอบ web แอปพลิเคชันสำหรับวิเคราะห์เครือข่าย รูปที่ 1 แสดงให้เราเห็นว่าสแต็กนี้ได้รับการออกแบบมาอย่างไรเพื่อการรวบรวม การจัดเก็บ และการแสดงข้อมูลอย่างมีประสิทธิภาพ ตั้งแต่อุปกรณ์เครือข่ายที่ส่งข้อมูลไปยังตัวรวบรวมข้อมูล ไปจนถึงข้อมูลที่แสดงบนแดชบอร์ดเพื่อการวิเคราะห์
สแต็ค TIG
เราใช้เซิร์ฟเวอร์ Ubuntu เพื่อติดตั้งซอฟต์แวร์ทั้งหมด รวมถึง TIG stack
โทรเลข
ในการรวบรวมข้อมูล เราใช้ Telegraf บนเซิร์ฟเวอร์ Ubuntu ที่ใช้เวอร์ชัน 22.04.2 เวอร์ชัน Telegraf ที่ใช้ในเดโมนี้คือ 1.28.5
Telegraf เป็นตัวแทนเซิร์ฟเวอร์ที่ขับเคลื่อนด้วยปลั๊กอินสำหรับการรวบรวมและรายงานเมตริก โดยใช้โปรเซสเซอร์ plugins เพื่อปรับปรุงและทำให้ข้อมูลเป็นมาตรฐาน เอาท์พุท plugins ใช้เพื่อส่งข้อมูลนี้ไปยังที่เก็บข้อมูลต่างๆ ในเอกสารนี้เราใช้สองอย่าง plugins: หนึ่งอันสำหรับเซ็นเซอร์ openconfig และอีกหนึ่งอันสำหรับเซ็นเซอร์ดั้งเดิมของ Juniper
อินฟลักซ์ดีบี
เราใช้ InfluxDB เพื่อจัดเก็บข้อมูลในฐานข้อมูลอนุกรมเวลา ปลั๊กอินเอาต์พุตใน Telegraf จะส่งข้อมูลไปยัง InfluxDB ซึ่งจะจัดเก็บข้อมูลในลักษณะที่มีประสิทธิภาพสูง เราใช้เวอร์ชัน V1.8 เนื่องจากไม่มี CLI สำหรับเวอร์ชัน V2 ขึ้นไป
กราฟาน่า
Grafana ใช้สำหรับแสดงข้อมูลนี้ Grafana ดึงข้อมูลจาก InfluxDB และอนุญาตให้ผู้ใช้สร้างแดชบอร์ดแบบโต้ตอบและสมบูรณ์ ที่นี่ เราใช้เวอร์ชัน 10.2.2
การกำหนดค่าบนสวิตช์
ในการใช้งานสแต็กนี้ ก่อนอื่นเราต้องกำหนดค่าสวิตช์ตามที่แสดงในรูปที่ 2 เราได้ใช้พอร์ต 50051 สามารถใช้พอร์ตใดก็ได้ที่นี่ ล็อกอินเข้าสู่สวิตช์ QFX และเพิ่มการกำหนดค่าต่อไปนี้
บันทึก: การกำหนดค่านี้มีไว้สำหรับห้องแล็บ/POC เนื่องจากรหัสผ่านจะถูกส่งเป็นข้อความธรรมดา ควรใช้ SSL เพื่อหลีกเลี่ยงปัญหานี้
สิ่งแวดล้อม
เอ็นจิ้นเอ็กซ์
ขั้นตอนนี้จำเป็นหากคุณไม่สามารถเปิดเผยพอร์ตที่โฮสต์ Grafana ได้ ขั้นตอนต่อไปคือการติดตั้ง nginx บนเซิร์ฟเวอร์ Ubuntu เพื่อทำหน้าที่เป็นตัวแทนพร็อกซีแบบย้อนกลับ เมื่อติดตั้ง nginx แล้ว ให้เพิ่มบรรทัดที่แสดงในรูปที่ 4 ลงในไฟล์ "เริ่มต้น" และย้ายไฟล์จาก /etc/nginx ไปที่ /etc/nginx/sites-enabled
ตรวจสอบให้แน่ใจว่าไฟร์วอลล์ได้รับการปรับเพื่อให้สามารถเข้าถึงบริการ nginx ได้อย่างสมบูรณ์ตามที่แสดงในรูปที่ 5
เมื่อติดตั้ง nginx และทำการเปลี่ยนแปลงที่จำเป็นแล้ว เราควรสามารถเข้าถึง Grafana จากไฟล์ web เบราว์เซอร์โดยใช้ที่อยู่ IP ของเซิร์ฟเวอร์ Ubuntu ที่ติดตั้งซอฟต์แวร์ทั้งหมด
มีข้อผิดพลาดเล็กน้อยใน Grafana ที่ไม่อนุญาตให้คุณรีเซ็ตรหัสผ่านเริ่มต้น ใช้ขั้นตอนเหล่านี้หากคุณพบปัญหานี้
ขั้นตอนที่ต้องดำเนินการบนเซิร์ฟเวอร์ Ubuntu เพื่อตั้งรหัสผ่านใน Grafana:
- ไปที่ /var/lib/grafana/grafana.db
- ติดตั้ง sqllite3
หรือ sudo apt ติดตั้ง sqlite3 - รันคำสั่งนี้บนเทอร์มินัลของคุณ
o sqlite3 grafana.db - เปิดพรอมต์คำสั่ง SQLite ขึ้นมา ให้รันแบบสอบถามต่อไปนี้:
>ลบออกจากผู้ใช้ที่ล็อกอิน='admin' - รีสตาร์ท grafana แล้วพิมพ์ admin เป็นชื่อผู้ใช้และรหัสผ่าน ระบบจะถามรหัสผ่านใหม่
เมื่อติดตั้งซอฟต์แวร์ทั้งหมดเสร็จแล้ว ให้สร้างไฟล์ config ใน Telegraf ซึ่งจะช่วยดึงข้อมูลการวัดระยะไกลจากสวิตช์ และส่งข้อมูลดังกล่าวไปยัง InfluxDB
ปลั๊กอินเซ็นเซอร์ Openconfig
บนเซิร์ฟเวอร์ Ubuntu แก้ไขไฟล์ /etc/telegraf/telegraf.conf เพื่อเพิ่มสิ่งที่จำเป็นทั้งหมด plugins และเซ็นเซอร์ สำหรับเซ็นเซอร์ openconfig เราใช้ปลั๊กอิน gNMI ตามที่แสดงในรูปที่ 6 สำหรับการสาธิต ให้เพิ่มชื่อโฮสต์เป็น “spine1” หมายเลขพอร์ต “50051” ที่ใช้สำหรับ gRPC ชื่อผู้ใช้และรหัสผ่านของสวิตช์ และจำนวนวินาทีสำหรับการโทรซ้ำในกรณีที่เกิดความล้มเหลว
ในบทสมัครสมาชิก ให้เพิ่มชื่อเฉพาะ "cpu" สำหรับเซ็นเซอร์ตัวนี้ เส้นทางของเซ็นเซอร์ และช่วงเวลาในการดึงข้อมูลนี้จากสวิตช์ เพิ่มปลั๊กอิน inputs.gnmi และ inputs.gnmi.subscription เดียวกันสำหรับเซ็นเซอร์ config ที่เปิดอยู่ทั้งหมด (รูปที่ 6)
ปลั๊กอินเซนเซอร์ดั้งเดิม
นี่คือปลั๊กอินอินเทอร์เฟซการวัดระยะไกลของ Juniper ที่ใช้สำหรับเซ็นเซอร์ดั้งเดิม ในไฟล์ telegraf.conf เดียวกัน ให้เพิ่มปลั๊กอินเซ็นเซอร์ดั้งเดิม inputs.jti_openconfig_telemetry โดยที่ฟิลด์เกือบจะเหมือนกับ openconfig ใช้ ID ไคลเอนต์ที่ไม่ซ้ำกันสำหรับเซ็นเซอร์แต่ละตัว ในที่นี้ เราใช้ "telegraf3" ชื่อที่ไม่ซ้ำกันที่ใช้สำหรับเซ็นเซอร์นี้คือ "mem" (รูปที่ 7)
สุดท้าย ให้เพิ่มปลั๊กอินเอาต์พุต outputs.influxdb เพื่อส่งข้อมูลเซนเซอร์นี้ไปยัง InfluxDB ที่นี่ ฐานข้อมูลจะมีชื่อว่า “telegraf” โดยมีชื่อผู้ใช้เป็น “influx” และรหัสผ่านเป็น “influxdb” (รูปที่ 8)
เมื่อคุณแก้ไขไฟล์ telegraf.conf แล้ว ให้รีสตาร์ทบริการ telegraf จากนั้น ตรวจสอบใน InfluxDB CLI เพื่อให้แน่ใจว่ามีการสร้างการวัดสำหรับเซ็นเซอร์ที่ไม่ซ้ำกันทั้งหมด พิมพ์ "influx" เพื่อเข้าสู่ InfluxDB CLI
ตามที่แสดงในรูปที่ 9 ให้ป้อนคำสั่ง influxDB และใช้ฐานข้อมูล “telegraf” ชื่อเฉพาะทั้งหมดที่กำหนดให้กับเซ็นเซอร์จะแสดงเป็นหน่วยวัด
หากต้องการดูผลลัพธ์ของการวัดใดๆ เพียงเพื่อให้แน่ใจว่าไฟล์ Telegraf ถูกต้องและเซ็นเซอร์ทำงาน ให้ใช้คำสั่ง “select * from cpu limit 1” ตามที่แสดงในรูปที่ 10
ทุกครั้งที่มีการเปลี่ยนแปลงไฟล์ telegraf.conf โปรดแน่ใจว่าได้หยุด InfluxDB แล้วรีสตาร์ท Telegraf แล้วจึงเริ่ม InfluxDB
เข้าสู่ระบบ Grafana จากเบราว์เซอร์และสร้างแดชบอร์ดหลังจากแน่ใจว่าข้อมูลถูกรวบรวมข้อมูลอย่างถูกต้อง
ไปที่การเชื่อมต่อ > InfuxDB > เพิ่มแหล่งข้อมูลใหม่
- ตั้งชื่อแหล่งข้อมูลนี้ ในตัวอย่างนี้คือ “test-1”
- ภายใต้บท HTTP ให้ใช้ IP เซิร์ฟเวอร์ Ubuntu และพอร์ต 8086
- ในรายละเอียด InfluxDB ให้ใช้ชื่อฐานข้อมูลเดียวกัน คือ “telegraf” และระบุชื่อผู้ใช้และรหัสผ่านของเซิร์ฟเวอร์ Ubuntu
- คลิกบันทึกและทดสอบ ตรวจสอบให้แน่ใจว่าคุณเห็นข้อความ “สำเร็จ”
- เมื่อเพิ่มแหล่งข้อมูลเรียบร้อยแล้ว ให้ไปที่แดชบอร์ดและคลิกใหม่ มาสร้างแดชบอร์ดสองสามอันที่จำเป็นสำหรับเวิร์กโหลด AI/ML ในโหมดแก้ไขกัน
Exampของกราฟเซ็นเซอร์
ต่อไปนี้คือตัวอย่างampตัวนับหลักบางตัวที่จำเป็นสำหรับการตรวจสอบเครือข่าย AI/ML
เปอร์เซ็นtagการใช้งานอินเทอร์เฟซทางเข้า et-0/0/0 บนสไปน์-1
- เลือกแหล่งข้อมูลเป็น test-1
- ในส่วน FROM ให้เลือกการวัดเป็น "อินเทอร์เฟซ" นี่คือชื่อเฉพาะที่ใช้สำหรับเส้นทางเซ็นเซอร์นี้
- ในส่วน WHERE เลือกอุปกรณ์::tagและใน tag ค่า เลือกชื่อโฮสต์ของสวิตช์ นั่นคือ spine1
- ในส่วน SELECT ให้เลือกสาขาเซ็นเซอร์ที่คุณต้องการตรวจสอบ ในกรณีนี้ ให้เลือก “field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)” ตอนนี้ในส่วนเดียวกัน ให้คลิกที่ “+” และเพิ่มการคำนวณทางคณิตศาสตร์นี้ (/50000000000 * 100) โดยพื้นฐานแล้ว เราจะคำนวณเปอร์เซ็นต์tagและการใช้อินเทอร์เฟซ 400G
- ตรวจสอบให้แน่ใจว่ารูปแบบคือ “ลำดับเวลา” และตั้งชื่อกราฟในส่วน ALIAS
อัตราการใช้บัฟเฟอร์สูงสุดสำหรับคิวใดๆ
- เลือกแหล่งข้อมูลเป็น test-1
- ในส่วน FROM ให้เลือกการวัดเป็น “บัฟเฟอร์”
- ในส่วน WHERE มี 3 ช่องที่ต้องกรอก เลือกอุปกรณ์::tagและใน tag เลือกค่าชื่อโฮสต์ของสวิตช์ (เช่น spine-1); และเลือก /cos/interfaces/interface/@name::tag และเลือกอินเทอร์เฟซ (เช่น et- 0/0/0) และเลือกคิวด้วยเช่นกัน /cos/interfaces/interface/queues/queue/@queue::tag และเลือกคิวหมายเลข4.
- ในส่วน SELECT ให้เลือกสาขาเซนเซอร์ที่คุณต้องการตรวจสอบ ในกรณีนี้ ให้เลือก “field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy)”
- ตรวจสอบให้แน่ใจว่ารูปแบบคือ “time-series” และตั้งชื่อกราฟในส่วน ALIAS
คุณสามารถเทียบเคียงข้อมูลสำหรับอินเทอร์เฟซหลายตัวบนกราฟเดียวกันได้อย่างที่เห็นในรูปที่ 17 สำหรับ et-0/0/0, et-0/0/1, et-0/0/2 เป็นต้น
PFC และ ECN หมายถึงอนุพันธ์
ในการหาค่าอนุพันธ์เฉลี่ย (ความแตกต่างของค่าภายในช่วงเวลา) ให้ใช้โหมดแบบสอบถามแบบดิบ
นี่คือแบบสอบถามอินฟลักซ์ที่เราใช้ค้นหาค่าอนุพันธ์เฉลี่ยระหว่างค่า PFC สองค่าบน et-0/0/0 ของ Spine-1 ในเวลาหนึ่งวินาที
เลือกอนุพันธ์ (mean(“/interfaces/interface[if_name='et-0/0/0′]/state/pfc-counter/tx_pkts”), 1วินาที) จาก “interface” ที่ (“device”::tag = 'Spine-1') และ $timeFilter จัดกลุ่มตามเวลา($interval)
เลือกอนุพันธ์ (mean(“/interfaces/interface[if_name='et-0/0/8′]/state/error-counters/ecn_ce_marked_pkts”), 1วินาที) จาก “interface” ที่ (“device”::tag = 'Spine-1') และ $timeFilter จัดกลุ่มตามเวลา($interval)
ข้อผิดพลาดของทรัพยากรอินพุตหมายถึงอนุพันธ์
แบบสอบถามดิบสำหรับข้อผิดพลาดของทรัพยากรหมายถึงผลลัพธ์:
เลือกอนุพันธ์ (mean(“/interfaces/interface[if_name='et-0/0/0′]/state/error-counters/if_in_resource_errors”), 1s) จาก “interface” ที่ (“device”::tag = 'Spine-1') และ $timeFilter จัดกลุ่มตามเวลา($interval)
หยอดหางหมายถึงอนุพันธ์
แบบสอบถามดิบสำหรับหางหยดหมายถึงอนุพันธ์คือ:
เลือกอนุพันธ์ (mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s) จาก “buffer” โดยที่ (“อุปกรณ์”::tag = 'Leaf-1' และ “/cos/interfaces/interface/@name”::tag = 'et-0/0/0' และ “/cos/interfaces/interface/queues/queue/@queue”::tag = '4') และ $timeFilter GROUP BY time($__interval) fill(null)
การใช้งานซีพียู
- เลือกแหล่งข้อมูลเป็น test-1
- ในส่วน FROM ให้เลือกการวัดเป็น “newcpu”
- ใน WHERE มี 3 ช่องที่ต้องกรอก เลือกอุปกรณ์::tag และใน tag เลือกค่าชื่อโฮสต์ของสวิตช์ (เช่น spine-1) และใน /components/component/properties/property/name:tagและเลือก cpuutilization-total AND ในชื่อ::tag เลือก RE0
- ในส่วน SELECT ให้เลือกสาขาเซ็นเซอร์ที่คุณต้องการตรวจสอบ ในกรณีนี้ ให้เลือก “field(state/value)”
แบบสอบถามแบบดิบเพื่อค้นหาอนุพันธ์ที่ไม่เป็นลบของค่า tail drop สำหรับสวิตช์หลายตัวบนอินเทอร์เฟซหลายตัวในหน่วยบิตต่อวินาที
เลือก non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 จาก “buffer” ที่ (device::tag =~ /^กระดูกสันหลัง-[1-2]$/) และ (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ หรือ “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) และ $timeFilter GROUP BY time($__interval),device::tag เติม(null)
เหล่านี้คือบางส่วนของอดีตampกราฟที่สามารถสร้างเพื่อตรวจสอบเครือข่าย AI/ML ได้
สรุป
เอกสารนี้อธิบายวิธีการดึงข้อมูลระยะไกลและแสดงภาพข้อมูลดังกล่าวโดยการสร้างกราฟ เอกสารนี้กล่าวถึงเซ็นเซอร์ AI/ML โดยเฉพาะ ทั้งแบบเนทีฟและโอเพ่นคอนฟิก แต่การตั้งค่านี้ใช้ได้กับเซ็นเซอร์ทุกประเภท นอกจากนี้ เรายังได้รวมโซลูชันสำหรับปัญหาต่างๆ มากมายที่คุณอาจเผชิญขณะสร้างการตั้งค่า ขั้นตอนและผลลัพธ์ที่แสดงในเอกสารนี้ใช้กับรุ่นของ TIG stack ที่กล่าวถึงก่อนหน้านี้โดยเฉพาะ ซึ่งอาจมีการเปลี่ยนแปลงได้ขึ้นอยู่กับรุ่นของซอฟต์แวร์ เซ็นเซอร์ และรุ่นของ Junos
อ้างอิง
Juniper Yang Data Model Explorer สำหรับตัวเลือกเซนเซอร์ทั้งหมด
https://apps.juniper.net/ydm-explorer/
ฟอรั่ม Openconfig สำหรับเซ็นเซอร์ Openconfig
https://www.openconfig.net/projects/models/
สำนักงานใหญ่องค์กรและการขาย
จูนิเปอร์ เน็ตเวิร์คส์ อิงค์
1133 วิถีแห่งนวัตกรรม
ซันนี่เวล แคลิฟอร์เนีย 94089 สหรัฐอเมริกา
โทรศัพท์: 888. จูนิเปอร์ (888.586.4737)
หรือ +1.408.745.2000
แฟกซ์: +1.408.745.2100
www.juniper.net
สำนักงานใหญ่ APAC และ EMEA
Juniper Networks International BV
โบอิ้ง อเวนิว 240
1119 พีแซด สคิปโพล-ไรจ์ค
อัมสเตอร์ดัม ประเทศเนเธอร์แลนด์
โทรศัพท์: +31.207.125.700
แฟกซ์: +31.207.125.701
ลิขสิทธิ์ 2023 Juniper Networks. Inc. สงวนลิขสิทธิ์ Juniper Networks, โลโก้ Juniper Networks, Juniper, Junos และเครื่องหมายการค้าอื่นๆ เป็นเครื่องหมายการค้าจดทะเบียนของ Juniper Networks. inc. และ/หรือบริษัทในเครือในสหรัฐอเมริกาและประเทศอื่นๆ ชื่ออื่นๆ อาจเป็นเครื่องหมายการค้าของเจ้าของที่เกี่ยวข้อง Juniper Networks จะไม่รับผิดชอบต่อความไม่ถูกต้องใดๆ ในเอกสารนี้ Juniper Networks ขอสงวนสิทธิ์ในการเปลี่ยนแปลง แก้ไข โอน หรือแก้ไขสิ่งพิมพ์นี้โดยไม่ต้องแจ้งให้ทราบล่วงหน้า
ส่งคำติชมไปที่: การออกแบบศูนย์ความคิดเห็น@juniper.net V1.0/240807/ejm5-เทเลเมทรี-จูโนส-เอไอ-มล
เอกสาร / แหล่งข้อมูล
![]() |
Juniper NETWORKS Telemetry ใน Junos สำหรับซอฟต์แวร์ปริมาณงาน AI ML [พีดีเอฟ] คู่มือการใช้งาน การตรวจวัดทางไกลใน Junos สำหรับซอฟต์แวร์ปริมาณงาน AI ML, Junos สำหรับซอฟต์แวร์ปริมาณงาน AI ML, ซอฟต์แวร์ปริมาณงาน AI ML, ซอฟต์แวร์ปริมาณงาน, ซอฟต์แวร์ |