تله متری در Junos برای بارهای کاری AI/ML
نویسنده: شالینی موکرجی
مقدمه
از آنجایی که ترافیک خوشه ای هوش مصنوعی به شبکه های بدون تلفات با توان عملیاتی بالا و تأخیر کم نیاز دارد، یک عنصر حیاتی شبکه هوش مصنوعی مجموعه داده های نظارتی است. Junos Telemetry نظارت دقیق بر شاخصهای عملکرد کلیدی، از جمله آستانهها و شمارندهها برای مدیریت ازدحام و متعادلسازی بار ترافیک را امکانپذیر میسازد. جلسات gRPC از جریان داده های تله متری پشتیبانی می کند. gRPC یک چارچوب مدرن، منبع باز و با کارایی بالا است که بر اساس حمل و نقل HTTP/2 ساخته شده است. قابلیتهای جریان دو جهته بومی را تقویت میکند و شامل فراداده سفارشی انعطافپذیر در سرصفحههای درخواست میشود. گام اولیه در تله متری این است که بدانیم چه داده هایی باید جمع آوری شود. سپس می توانیم این داده ها را در قالب های مختلف تجزیه و تحلیل کنیم. هنگامی که داده ها را جمع آوری می کنیم، مهم است که آنها را در قالبی ارائه کنیم که نظارت، تصمیم گیری و بهبود خدمات ارائه شده آسان باشد. در این مقاله، ما از یک پشته تله متری متشکل از Telegraf، InfluxDB و Grafana استفاده می کنیم. این پشته تله متری داده ها را با استفاده از یک مدل فشار جمع آوری می کند. مدلهای کششی سنتی منابع فشرده هستند، نیاز به مداخله دستی دارند و میتوانند شکافهای اطلاعاتی را در دادههایی که جمعآوری میکنند شامل شود. مدل های Push با ارائه داده ها به صورت ناهمزمان بر این محدودیت ها غلبه می کنند. آنها داده ها را با استفاده از کاربر پسند غنی می کنند tags و اسامی هنگامی که داده ها در قالب قابل خواندن تری قرار می گیرند، آن را در یک پایگاه داده ذخیره می کنیم و از آن در یک تصویرسازی تعاملی استفاده می کنیم web اپلیکیشنی برای آنالیز شبکه شکل 1 به ما نشان میدهد که چگونه این پشته برای جمعآوری، ذخیرهسازی و تجسم کارآمد دادهها، از دستگاههای شبکه که دادهها را به جمعآورنده فشار میدهند تا دادههایی که برای تجزیه و تحلیل روی داشبورد نمایش داده میشوند، طراحی شده است.
پشته TIG
ما از یک سرور اوبونتو برای نصب تمام نرم افزارها از جمله پشته TIG استفاده کردیم.
تلگراف
برای جمعآوری دادهها، ما از Telegraf در سرور اوبونتو با نسخه 22.04.2 استفاده میکنیم. نسخه Telegraf که در این دمو اجرا می شود 1.28.5 است.
Telegraf یک عامل سرور مبتنی بر پلاگین برای جمع آوری و گزارش معیارها است. از پردازنده استفاده می کند plugins برای غنی سازی و عادی سازی داده ها. خروجی plugins برای ارسال این داده ها به فروشگاه های مختلف داده استفاده می شود. در این سند ما از دو استفاده می کنیم plugins: یکی برای سنسورهای openconfig و دیگری برای سنسورهای بومی Juniper.
InfluxDB
برای ذخیره داده ها در پایگاه داده سری زمانی، از InfluxDB استفاده می کنیم. پلاگین خروجی در Telegraf داده ها را به InfluxDB می فرستد، که آن را به شیوه ای بسیار کارآمد ذخیره می کند. ما از V1.8 استفاده می کنیم زیرا هیچ CLI برای V2 و بالاتر وجود ندارد.
گرافانا
Grafana برای تجسم این داده ها استفاده می شود. Grafana داده ها را از InfluxDB می کشد و به کاربران اجازه می دهد داشبوردهای غنی و تعاملی ایجاد کنند. در اینجا، ما نسخه 10.2.2 را اجرا می کنیم.
پیکربندی روی سوئیچ
برای پیاده سازی این پشته، ابتدا باید سوئیچ را همانطور که در شکل 2 نشان داده شده است پیکربندی کنیم. ما از پورت 50051 استفاده کرده ایم. هر پورتی را می توان در اینجا استفاده کرد. وارد سوئیچ QFX شوید و پیکربندی زیر را اضافه کنید.
توجه: این پیکربندی برای آزمایشگاهها/POCها است زیرا رمز عبور به صورت متن واضح منتقل میشود. برای جلوگیری از این امر از SSL استفاده کنید.
محیط زیست
Nginx
اگر نتوانید پورتی را که Grafana بر روی آن میزبانی شده است را در معرض دید قرار دهید، لازم است. مرحله بعدی نصب nginx بر روی سرور اوبونتو است تا به عنوان یک عامل پروکسی معکوس عمل کند. پس از نصب nginx، خطوط نشان داده شده در شکل 4 را به فایل "پیش فرض" اضافه کنید و فایل را از /etc/nginx به /etc/nginx/sites-enabled منتقل کنید.
اطمینان حاصل کنید که فایروال برای دسترسی کامل به سرویس nginx مطابق شکل 5 تنظیم شده است.
هنگامی که nginx نصب شد و تغییرات مورد نیاز انجام شد، باید بتوانیم از a دسترسی به Grafana داشته باشیم web مرورگر با استفاده از آدرس IP سرور اوبونتو که تمام نرم افزار در آن نصب شده است.
یک مشکل کوچک در Grafana وجود دارد که به شما اجازه نمی دهد رمز عبور پیش فرض را بازنشانی کنید. اگر با این مشکل مواجه شدید از این مراحل استفاده کنید.
مراحلی که باید در سرور اوبونتو برای تنظیم رمز عبور در Grafana انجام شود:
- به /var/lib/grafana/grafana.db بروید
- sqllite3 را نصب کنید
o sudo apt sqlite3 را نصب کنید - این دستور را در ترمینال خود اجرا کنید
o sqlite3 grafana.db - خط فرمان Sqlite باز می شود. کوئری زیر را اجرا کنید:
>حذف از کاربر جایی که login='admin' - grafana را مجددا راه اندازی کنید و admin را به عنوان نام کاربری و رمز عبور تایپ کنید. یک رمز عبور جدید را درخواست می کند.
پس از نصب تمام نرم افزار، فایل کانفیگ را در Telegraf ایجاد کنید که به بیرون کشیدن داده های تله متری از سوییچ و فشار دادن آن به InfluxDB کمک می کند.
پلاگین سنسور Openconfig
در سرور اوبونتو، فایل /etc/telegraf/telegraf.conf را ویرایش کنید تا همه موارد مورد نیاز اضافه شود. plugins و سنسورها برای سنسورهای openconfig، از پلاگین gNMI نشان داده شده در شکل 6 استفاده می کنیم. برای اهداف نمایشی، نام میزبان را به عنوان "spine1"، شماره پورت "50051" را که برای gRPC استفاده می شود، نام کاربری و رمز عبور سوئیچ، و شماره را اضافه کنید. ثانیه برای شماره گیری مجدد در صورت خرابی.
در مصراع اشتراک، یک نام منحصر به فرد، "cpu" برای این سنسور خاص، مسیر سنسور و فاصله زمانی برای گرفتن این داده ها از سوییچ اضافه کنید. افزونه inputs.gnmi و inputs.gnmi.subscription را برای همه سنسورهای پیکربندی باز اضافه کنید. (شکل 6)
پلاگین حسگر بومی
این یک پلاگین رابط تله متری Juniper است که برای حسگرهای بومی استفاده می شود. در همان فایل telegraf.conf، افزونه حسگر بومی inputs.jti_openconfig_telemetry را اضافه کنید که در آن فیلدها تقریباً مشابه openconfig است. از یک شناسه مشتری منحصر به فرد برای هر سنسور استفاده کنید. در اینجا، ما از "telegraf3" استفاده می کنیم. نام منحصر به فرد استفاده شده در اینجا برای این سنسور "mem" است (شکل 7).
در نهایت، یک افزونه خروجی outputs.influxdb اضافه کنید تا این داده های حسگر را به InfluxDB ارسال کنید. در اینجا، پایگاه داده "telegraf" با نام کاربری "inux" و رمز عبور "inuxdb" نامگذاری شده است (شکل 8).
هنگامی که فایل telegraf.conf را ویرایش کردید، سرویس telegraf را مجددا راه اندازی کنید. اکنون، InfluxDB CLI را بررسی کنید تا مطمئن شوید که آیا اندازهگیریها برای همه حسگرهای منحصربهفرد ایجاد شده است یا خیر. برای ورود به InfluxDB CLI، "inux" را تایپ کنید.
همانطور که در شکل مشاهده می شود. 9، اعلان influxDB را وارد کرده و از پایگاه داده "telegraf" استفاده کنید. تمام نام های منحصر به فرد داده شده به سنسورها به عنوان اندازه گیری فهرست شده است.
برای مشاهده خروجی هر یک از اندازه گیری ها، فقط برای اینکه مطمئن شوید فایل تلگراف درست است و سنسور کار می کند، از دستور "انتخاب * از محدودیت cpu 1" همانطور که در شکل 10 نشان داده شده است استفاده کنید.
هر بار که تغییراتی در فایل telegraf.conf ایجاد میشود، مطمئن شوید که InfluxDB را متوقف کرده، Telegraf را مجددا راهاندازی کنید و سپس InfluxDB را راهاندازی کنید.
از مرورگر وارد Grafana شوید و پس از اطمینان از اینکه داده ها به درستی جمع آوری شده اند، داشبورد ایجاد کنید.
به Connections > InfuxDB > Add new data source بروید.
- نامی برای این منبع داده بگذارید. در این نسخه ی نمایشی "test-1" است.
- در بند HTTP، از IP سرور اوبونتو و پورت 8086 استفاده کنید.
- در جزئیات InfluxDB، از همان نام پایگاه داده، "telegraf" استفاده کنید و نام کاربری و رمز عبور سرور اوبونتو را ارائه دهید.
- روی ذخیره و تست کلیک کنید. مطمئن شوید که پیام "موفقیت" را می بینید.
- هنگامی که منبع داده با موفقیت اضافه شد، به داشبوردها بروید و روی New کلیک کنید. اجازه دهید چند داشبورد ایجاد کنیم که برای بارهای کاری AI/ML در حالت ویرایشگر ضروری هستند.
Examples Of Graphs Sensor
موارد زیر سابق هستندampتعدادی از شمارنده های اصلی که برای نظارت بر شبکه AI/ML ضروری هستند.
پرسنtagاستفاده از رابط ورودی et-0/0/0 در spine-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.
- مطمئن شوید که FORMAT "سری زمانی" است و نمودار را در بخش ALIAS نامگذاری کنید.
اوج اشغال بافر برای هر صف
- منبع داده را به عنوان test-1 انتخاب کنید.
- در بخش FROM، اندازه گیری را به عنوان "بافر" انتخاب کنید.
- در بخش WHERE، سه فیلد برای پر کردن وجود دارد. انتخاب دستگاه::tag، و در tag مقدار نام میزبان سوئیچ را انتخاب کنید (یعنی spine-1). و /cos/interfaces/interface/@name::tag و رابط را انتخاب کنید (یعنی et- 0/0/0). و صف را نیز انتخاب کنید، /cos/interfaces/interface/queues/queue/@queue::tag و صف شماره 4 را انتخاب کنید.
- در بخش SELECT شاخه سنسوری را که می خواهید نظارت کنید انتخاب کنید. در این حالت "فیلد(/cos/interfaces/interface/queues/queue/PeakBuerOccupancy) را انتخاب کنید."
- مطمئن شوید که FORMAT "سری زمانی" است و نمودار را در بخش ALIAS نامگذاری کنید.
میتوانید دادهها را برای چندین رابط در همان نموداری که در شکل 17 برای et-0/0/0، et-0/0/1، et-0/0/2 و غیره مشاهده میشود، جمعبندی کنید.
PFC و ECN میانگین مشتق
برای یافتن مشتق میانگین (تفاوت در مقدار در محدوده زمانی)، از حالت پرس و جو خام استفاده کنید.
این پرس و جوی هجومی است که برای یافتن مشتق میانگین بین دو مقدار PFC در et-0/0/0 از Spine-1 در یک ثانیه استفاده کرده ایم.
SELECT مشتق(mean("/interfaces/interface[if_name='et-0/0/0']/state/pfc-counter/tx_pkts"), 1s) FROM "interface" WHERE ("دستگاه"::tag = 'Spine-1') و $timeFilter گروه بر حسب زمان ($interval)
SELECT مشتق(mean("/interfaces/interface[if_name='et-0/0/8']/state/error-counters/ecn_ce_marked_pkts)، 1s) FROM "interface" WHERE ("دستگاه"::tag = 'Spine-1') و $timeFilter گروه بر حسب زمان ($interval)
خطاهای منبع ورودی به معنای مشتق است
پرس و جو خام برای خطاهای منبع مشتق میانگین است:
SELECT مشتق(mean("/interfaces/interface[if_name='et-0/0/0']/state/error-counters/if_in_resource_errors)، 1s) FROM "interface" WHERE ("دستگاه"::tag = 'Spine-1') و $timeFilter گروه بر حسب زمان ($interval)
قطره دم به معنای مشتق است
پرس و جوی خام برای مشتق میانگین قطره های دم عبارت است از:
SELECT مشتق(mean("/cos/interfaces/interface/queues/queue/tailDropBytes")، 1s) FROM "buer" WHERE ("دستگاه"::tag = 'Leaf-1' و "/cos/interfaces/interface/@name"::tag = 'et-0/0/0' و "/cos/interfaces/interface/queues/queue/@queue"::tag = '4') و $timeFilter GROUP BY زمان ($__interval) fill(null)
استفاده از CPU
- منبع داده را به عنوان test-1 انتخاب کنید.
- در بخش FROM، اندازه گیری را به عنوان "newcpu" انتخاب کنید.
- در WHERE، سه فیلد برای پر کردن وجود دارد. انتخاب دستگاه::tag و در tag مقدار نام میزبان سوئیچ را انتخاب کنید (یعنی spine-1). و در /components/component/properties/property/name:tagو cputilization-total AND را در نام::tag RE0 را انتخاب کنید.
- در بخش SELECT شاخه سنسوری را که می خواهید نظارت کنید انتخاب کنید. در این مورد، "فیلد (وضعیت/مقدار)" را انتخاب کنید.
پرس و جوی خام برای یافتن مشتق غیرمنفی دم دراپ برای سوئیچ های متعدد در چندین رابط در بیت/ثانیه است.
SELECT non_negative_derivative(mean("/cos/interfaces/interface/queues/queue/tailDropBytes"), 1s)*8 FROM "buer" WHERE (دستگاه::tag =~ /^Spine-[1-2]$/) و ("/cos/interfaces/interface/@name"::tag =~ /et-0\/0\/[0-9]/ یا "/cos/interfaces/interface/@name"::tag=~/et-0\/0\/1[0-5]/) و $timeFilter گروه بندی بر اساس زمان ($__interval)، دستگاه::tag پر کردن (تهی)
اینها برخی از افراد سابق بودندampتعداد نمودارهایی که می توان برای نظارت بر شبکه AI/ML ایجاد کرد.
خلاصه
این مقاله روش کشیدن داده های تله متری و تجسم آن را با ایجاد نمودارها نشان می دهد. این مقاله به طور خاص در مورد سنسورهای AI/ML صحبت میکند، چه بومی و چه با پیکربندی باز، اما این تنظیمات را میتوان برای انواع سنسورها استفاده کرد. ما همچنین راهحلهایی را برای مشکلات متعددی که ممکن است هنگام ایجاد راهاندازی با آنها مواجه شوید، اضافه کردهایم. مراحل و خروجیهایی که در این مقاله نشان داده شدهاند، مختص نسخههای پشته TIG هستند که قبلاً ذکر شد. بسته به نسخه نرم افزار، سنسورها و نسخه Junos ممکن است تغییر کند.
مراجع
Juniper Yang Data Model Explorer برای همه گزینه های حسگر
https://apps.juniper.net/ydm-explorer/
انجمن Openconfig برای سنسورهای openconfig
https://www.openconfig.net/projects/models/
دفتر مرکزی شرکت و فروش
Juniper Networks, Inc.
1133 راه نوآوری
Sunnyvale ، CA 94089 ایالات متحده
تلفن: 888. JUNIPER (888.586.4737)
یا +1.408.745.2000
فکس: +1.408.745.2100
www.juniper.net
دفتر مرکزی APAC و EMEA
Juniper Networks International BV
خیابان بوئینگ 240
1119 PZ Schiphol-Rijk
آمستردام، هلند
تلفن: +31.207.125.700
فکس: +31.207.125.701
حق چاپ 2023 Juniper Networks. حقوق شرکت محفوظ است. Juniper Networks، نشانواره Juniper Networks، Juniper، Junos و سایر علائم تجاری، علائم تجاری ثبت شده Juniper Networks هستند. شرکت و/یا شعبه های آن در ایالات متحده و سایر کشورها. نامهای دیگر ممکن است علائم تجاری صاحبان مربوطه باشند. Juniper Networks هیچ مسئولیتی در قبال هرگونه نادرستی در این سند ندارد. Juniper Networks حق تغییر را برای خود محفوظ می دارد. اصلاح کنید. این نشریه را بدون اطلاع قبلی منتقل کنید یا در غیر این صورت اصلاح کنید.
ارسال بازخورد به: design-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
اسناد / منابع
![]() |
Juniper NETWORKS Telemetry In Junos for AI ML Workloads Software [pdfراهنمای کاربر تله متری در Junos برای نرم افزار بارهای کاری AI ML، نرم افزار Junos برای AI ML Workloads، نرم افزار AI ML Workloads، نرم افزار Workloads، نرم افزار |