Đo từ xa trong Junos cho khối lượng công việc AI/ML
Tác giả: Shalini Mukherjee
Giới thiệu
Vì lưu lượng cụm AI yêu cầu mạng không mất dữ liệu với thông lượng cao và độ trễ thấp, nên một yếu tố quan trọng của mạng AI là thu thập dữ liệu giám sát. Junos Telemetry cho phép giám sát chi tiết các chỉ số hiệu suất chính, bao gồm ngưỡng và bộ đếm để quản lý tắc nghẽn và cân bằng tải lưu lượng. Các phiên gRPC hỗ trợ truyền phát dữ liệu đo từ xa. gRPC là một khuôn khổ hiện đại, mã nguồn mở, hiệu suất cao được xây dựng trên giao thức HTTP/2. Nó trao quyền cho các khả năng truyền phát song hướng gốc và bao gồm siêu dữ liệu tùy chỉnh linh hoạt trong các tiêu đề yêu cầu. Bước đầu tiên trong đo từ xa là biết dữ liệu nào sẽ được thu thập. Sau đó, chúng tôi có thể phân tích dữ liệu này ở nhiều định dạng khác nhau. Sau khi thu thập dữ liệu, điều quan trọng là phải trình bày dữ liệu ở định dạng dễ giám sát, đưa ra quyết định và cải thiện dịch vụ được cung cấp. Trong bài báo này, chúng tôi sử dụng một ngăn xếp đo từ xa bao gồm Telegraf, InfluxDB và Grafana. Ngăn xếp đo từ xa này thu thập dữ liệu bằng mô hình đẩy. Các mô hình kéo truyền thống tốn nhiều tài nguyên, đòi hỏi sự can thiệp thủ công và có thể bao gồm các khoảng trống thông tin trong dữ liệu mà chúng thu thập. Các mô hình đẩy khắc phục những hạn chế này bằng cách cung cấp dữ liệu không đồng bộ. Chúng làm giàu dữ liệu bằng cách sử dụng các phương pháp thân thiện với người dùng tags và những cái tên. Khi dữ liệu ở định dạng dễ đọc hơn, chúng tôi lưu trữ dữ liệu đó trong cơ sở dữ liệu và sử dụng nó trong hình ảnh trực quan tương tác web ứng dụng để phân tích mạng. Hình 1 cho chúng ta thấy cách ngăn xếp này được thiết kế để thu thập, lưu trữ và trực quan hóa dữ liệu hiệu quả, từ các thiết bị mạng đẩy dữ liệu đến bộ thu thập đến dữ liệu được hiển thị trên bảng điều khiển để phân tích.
Ngăn xếp TIG
Chúng tôi đã sử dụng máy chủ Ubuntu để cài đặt tất cả phần mềm bao gồm cả ngăn xếp TIG.
Telegraph
Để thu thập dữ liệu, chúng tôi sử dụng Telegraf trên máy chủ Ubuntu chạy 22.04.2. Phiên bản Telegraf chạy trong bản demo này là 1.28.5.
Telegraf là một tác nhân máy chủ được điều khiển bằng plugin để thu thập và báo cáo số liệu. Nó sử dụng bộ xử lý plugins để làm phong phú và chuẩn hóa dữ liệu. Đầu ra plugins được sử dụng để gửi dữ liệu này đến các kho dữ liệu khác nhau. Trong tài liệu này chúng tôi sử dụng hai plugins: một cho cảm biến openconfig và một cho cảm biến gốc Juniper.
InfluxDB
Để lưu trữ dữ liệu trong cơ sở dữ liệu chuỗi thời gian, chúng tôi sử dụng InfluxDB. Plugin đầu ra trong Telegraf gửi dữ liệu đến InfluxDB, nơi lưu trữ dữ liệu theo cách cực kỳ hiệu quả. Chúng tôi đang sử dụng V1.8 vì không có CLI nào dành cho V2 trở lên.
Đồ họa
Grafana được sử dụng để trực quan hóa dữ liệu này. Grafana lấy dữ liệu từ InfluxDB và cho phép người dùng tạo bảng thông tin phong phú và tương tác. Ở đây, chúng tôi đang chạy phiên bản 10.2.2.
Cấu hình trên Switch
Để triển khai ngăn xếp này, trước tiên chúng ta cần cấu hình switch như trong Hình 2. Chúng ta đã sử dụng cổng 50051. Có thể sử dụng bất kỳ cổng nào ở đây. Đăng nhập vào switch QFX và thêm cấu hình sau.
Ghi chú: Cấu hình này dành cho phòng thí nghiệm/POC vì mật khẩu được truyền dưới dạng văn bản rõ. Sử dụng SSL để tránh điều này.
Môi trường
Nginx
Điều này là cần thiết nếu bạn không thể hiển thị cổng mà Grafana được lưu trữ. Bước tiếp theo là cài đặt nginx trên máy chủ Ubuntu để hoạt động như một tác nhân proxy ngược. Sau khi nginx được cài đặt, hãy thêm các dòng được hiển thị trong Hình 4 vào tệp "mặc định" và di chuyển tệp từ /etc/nginx đến /etc/nginx/sites-enabled.
Đảm bảo rằng tường lửa được điều chỉnh để cung cấp quyền truy cập đầy đủ vào dịch vụ nginx như thể hiện trong Hình 5.
Sau khi nginx được cài đặt và các thay đổi bắt buộc được thực hiện, chúng ta sẽ có thể truy cập Grafana từ một web trình duyệt bằng cách sử dụng địa chỉ IP của máy chủ Ubuntu nơi tất cả phần mềm được cài đặt.
Có một trục trặc nhỏ ở Grafana khiến bạn không thể đặt lại mật khẩu mặc định. Hãy sử dụng các bước sau nếu bạn gặp phải vấn đề này.
Các bước cần thực hiện trên máy chủ Ubuntu để đặt mật khẩu trong Grafana:
- Đi tới /var/lib/grafana/grafana.db
- Cài đặt sqllite3
hoặc sudo apt cài đặt sqlite3 - Chạy lệnh này trên thiết bị đầu cuối của bạn
hoặc sqlite3 grafana.db - Dấu nhắc lệnh Sqlite mở ra; chạy truy vấn sau:
>xóa khỏi người dùng nơi đăng nhập='admin' - Khởi động lại grafana và nhập admin làm tên người dùng và mật khẩu. Nó sẽ nhắc nhập mật khẩu mới.
Sau khi cài đặt toàn bộ phần mềm, hãy tạo tệp cấu hình trong Telegraf để giúp lấy dữ liệu đo từ xa từ thiết bị chuyển mạch và đẩy lên InfluxDB.
Plugin cảm biến Openconfig
Trên máy chủ Ubuntu, hãy chỉnh sửa tệp /etc/telegraf/telegraf.conf để thêm tất cả các mục cần thiết plugins và cảm biến. Đối với các cảm biến openconfig, chúng tôi sử dụng plugin gNMI được hiển thị trong Hình 6. Đối với mục đích demo, hãy thêm tên máy chủ là “spine1”, số cổng “50051” được sử dụng cho gRPC, tên người dùng và mật khẩu của công tắc và số giây để quay số lại trong trường hợp lỗi.
Trong khổ đăng ký, thêm một tên duy nhất, “cpu” cho cảm biến cụ thể này, đường dẫn cảm biến và khoảng thời gian để lấy dữ liệu này từ công tắc. Thêm cùng một plugin inputs.gnmi và inputs.gnmi.subscription cho tất cả các cảm biến cấu hình mở. (Hình 6)
Plugin cảm biến gốc
Đây là một plugin giao diện đo từ xa của Juniper được sử dụng cho các cảm biến gốc. Trong cùng một tệp telegraf.conf, hãy thêm plugin cảm biến gốc inputs.jti_openconfig_telemetry trong đó các trường gần giống với openconfig. Sử dụng một ID máy khách duy nhất cho mọi cảm biến; ở đây, chúng tôi sử dụng “telegraf3”. Tên duy nhất được sử dụng ở đây cho cảm biến này là “mem” (Hình 7).
Cuối cùng, thêm một plugin đầu ra outputs.influxdb để gửi dữ liệu cảm biến này đến InfluxDB. Ở đây, cơ sở dữ liệu được đặt tên là “telegraf” với tên người dùng là “influx” và mật khẩu “influxdb” (Hình 8).
Sau khi bạn đã chỉnh sửa tệp telegraf.conf, hãy khởi động lại dịch vụ telegraf. Bây giờ, hãy kiểm tra trong CLI InfluxDB để đảm bảo rằng các phép đo được tạo cho tất cả các cảm biến duy nhất. Nhập “influx” để vào CLI InfluxDB.
Như được thấy trong Hình 9, hãy nhập dấu nhắc influxDB và sử dụng cơ sở dữ liệu “telegraf”. Tất cả các tên duy nhất được đặt cho các cảm biến đều được liệt kê dưới dạng phép đo.
Để xem kết quả của bất kỳ phép đo nào, chỉ để đảm bảo tệp telegraf là chính xác và cảm biến đang hoạt động, hãy sử dụng lệnh “select * from cpu limit 1” như minh họa trong Hình 10.
Mỗi khi có thay đổi trong tệp telegraf.conf, hãy đảm bảo dừng InfluxDB, khởi động lại Telegraf, sau đó khởi động InfluxDB.
Đăng nhập vào Grafana từ trình duyệt và tạo bảng thông tin sau khi đảm bảo dữ liệu được thu thập chính xác.
Vào Connections > InfuxDB > Thêm nguồn dữ liệu mới.
- Đặt tên cho nguồn dữ liệu này. Trong bản demo này, tên là “test-1”.
- Trong đoạn HTTP, hãy sử dụng IP máy chủ Ubuntu và cổng 8086.
- Trong phần chi tiết InfluxDB, hãy sử dụng cùng tên cơ sở dữ liệu, “telegraf” và cung cấp tên người dùng và mật khẩu của máy chủ Ubuntu.
- Nhấp vào Lưu & kiểm tra. Đảm bảo rằng bạn thấy thông báo "thành công".
- Sau khi nguồn dữ liệu được thêm thành công, hãy vào Dashboards và nhấp vào New. Chúng ta hãy tạo một vài dashboard cần thiết cho khối lượng công việc AI/ML ở chế độ biên tập.
Examptập tin đồ thị cảm biến
Sau đây là những ví dụamptập tin của một số bộ đếm chính cần thiết để giám sát mạng AI/ML.
phần trămtage sử dụng giao diện xâm nhập et-0/0/0 trên Spin-1
- Chọn nguồn dữ liệu là bài kiểm tra-1.
- Trong phần FROM, hãy chọn phép đo là “giao diện”. Đây là tên duy nhất được sử dụng cho đường dẫn cảm biến này.
- Trong phần WHERE, chọn device::tagvà trong tag giá trị, chọn tên máy chủ của công tắc, tức là spine1.
- Trong phần SELECT, hãy chọn nhánh cảm biến mà bạn muốn theo dõi; trong trường hợp này, hãy chọn “field(/interfaces/interface[if_name='et-0/0/0']/state/counters/if_in_1s_octets)”. Bây giờ trong cùng phần đó, hãy nhấp vào “+” và thêm phép tính toán này (/50000000000 * 100). Về cơ bản, chúng ta đang tính phần trămtage sử dụng giao diện 400G.
- Đảm bảo FORMAT là “time-series” và đặt tên cho biểu đồ trong phần ALIAS.
Tỷ lệ sử dụng bộ đệm cao nhất cho bất kỳ hàng đợi nào
- Chọn nguồn dữ liệu là bài kiểm tra-1.
- Trong phần TỪ, chọn phép đo là “đệm”.
- Trong phần WHERE, có ba trường cần điền. Chọn thiết bị::tagvà trong tag giá trị chọn tên máy chủ của công tắc (ví dụ spine-1); VÀ chọn /cos/interfaces/interface/@name::tag và chọn giao diện (tức là et- 0/0/0); VÀ chọn cả hàng đợi, /cos/interfaces/interface/queues/queue/@queue::tag và chọn hàng đợi số 4.
- Trong phần SELECT, hãy chọn nhánh cảm biến mà bạn muốn theo dõi; trong trường hợp này, hãy chọn “field(/cos/interfaces/interface/queues/queue/PeakBufferOccupancy).”
- Đảm bảo FORMAT là “time-series” và đặt tên cho biểu đồ trong phần ALIAS.
Bạn có thể đối chiếu dữ liệu cho nhiều giao diện trên cùng một biểu đồ như trong Hình 17 cho et-0/0/0, et-0/0/1, et-0/0/2, v.v.
PFC và ECN có nghĩa là phái sinh
Để tìm đạo hàm trung bình (sự khác biệt về giá trị trong một khoảng thời gian), hãy sử dụng chế độ truy vấn thô.
Đây là truy vấn influx mà chúng tôi đã sử dụng để tìm đạo hàm trung bình giữa hai giá trị PFC trên et-0/0/0 của Spine-1 trong một giây.
CHỌN đạo hàm (trung bình (“/giao diện/giao diện [nếu_tên = 'et-0/0/0'] / trạng thái / bộ đếm pfc / tx_pkts”), 1 giây) TỪ “giao diện” Ở ĐÂU (“thiết bị”::tag = 'Spine-1') VÀ $timeFilter NHÓM THEO thời gian($interval)
CHỌN đạo hàm (trung bình (“/giao diện/giao diện [nếu_tên='et-0/0/8′]/trạng thái/bộ đếm lỗi/ecn_ce_marked_pkts”), 1 giây) TỪ “giao diện” NƠI (“thiết bị”::tag = 'Spine-1') VÀ $timeFilter NHÓM THEO thời gian($interval)
Lỗi tài nguyên đầu vào có nghĩa là đạo hàm
Truy vấn thô cho lỗi tài nguyên có nghĩa là đạo hàm là:
CHỌN đạo hàm (trung bình (“/giao diện/giao diện [nếu_tên='et-0/0/0′]/trạng thái/bộ đếm lỗi/nếu_trong_lỗi_nguồn”), 1 giây) TỪ “giao diện” ĐÂU (“thiết bị”::tag = 'Spine-1') VÀ $timeFilter NHÓM THEO thời gian($interval)
Giọt đuôi có nghĩa là phái sinh
Truy vấn thô cho đạo hàm trung bình giảm đuôi là:
CHỌN đạo hàm (trung bình (“/cos/giao diện/giao diện/hàng đợi/hàng đợi/tailDropBytes”), 1 giây) TỪ “bộ đệm” Ở ĐÂU (“thiết bị”::tag = 'Lá-1' VÀ “/cos/interfaces/interface/@name”::tag = 'et-0/0/0' VÀ “/cos/interfaces/interface/queues/queue/@queue”::tag = '4') VÀ $timeFilter NHÓM THEO time($__interval) fill(null)
Sử dụng CPU
- Chọn nguồn dữ liệu là bài kiểm tra-1.
- Trong phần FROM, chọn phép đo là “newcpu”
- Trong WHERE, có ba trường cần điền. Chọn thiết bị::tag và trong tag giá trị chọn tên máy chủ của công tắc (tức là spine-1). VÀ trong /components/component/properties/property/name:tagvà chọn cpuutilization-total AND trong tên::tag chọn RE0.
- Trong phần SELECT, hãy chọn nhánh cảm biến mà bạn muốn giám sát. Trong trường hợp này, hãy chọn “field(state/value)”.
Truy vấn thô để tìm đạo hàm không âm của số lần thả đuôi cho nhiều công tắc trên nhiều giao diện theo bit/giây.
CHỌN non_negative_derivative(mean(“/cos/interfaces/interface/queues/queue/tailDropBytes”), 1s)*8 TỪ “buffer” NƠI (device::tag =~ /^Spine-[1-2]$/) và (“/cos/interfaces/interface/@name”::tag =~ /et-0\/0\/[0-9]/ hoặc “/cos/interfaces/interface/@name”::tag=~/et-0\/0\/1[0-5]/) VÀ $timeFilter NHÓM THEO time($__interval),device::tag điền(null)
Đây là một số trong những exampcác tập tin biểu đồ có thể được tạo để giám sát mạng AI/ML.
Bản tóm tắt
Bài báo này minh họa phương pháp lấy dữ liệu đo từ xa và trực quan hóa dữ liệu bằng cách tạo biểu đồ. Bài báo này nói cụ thể về cảm biến AI/ML, cả cảm biến gốc và cảm biến mở nhưng thiết lập có thể được sử dụng cho mọi loại cảm biến. Chúng tôi cũng đã đưa vào các giải pháp cho nhiều vấn đề mà bạn có thể gặp phải khi tạo thiết lập. Các bước và đầu ra được mô tả trong bài báo này dành riêng cho các phiên bản của ngăn xếp TIG đã đề cập trước đó. Nó có thể thay đổi tùy thuộc vào phiên bản phần mềm, cảm biến và phiên bản Junos.
Tài liệu tham khảo
Juniper Yang Data Model Explorer cho tất cả các tùy chọn cảm biến
https://apps.juniper.net/ydm-explorer/
Diễn đàn Openfig cho các cảm biến openfig
https://www.openconfig.net/projects/models/
Trụ sở chính của công ty và bán hàng
Công ty Juniper Networks
1133 cách đổi mới
Sunnyvale, CA 94089 Hoa Kỳ
Điện thoại: 888. JUNIPER (888.586.4737)
hoặc +1.408.745.2000
Số Fax: +1.408.745.2100
www.juniper.net
Trụ sở chính của APAC và EMEA
Juniper Networks International BV
Đại lộ Boeing 240
1119 PZ Schiphol-Rijk
Amsterdam, Hà Lan
Điện thoại: +31.207.125.700
Số Fax: +31.207.125.701
Bản quyền 2023 Juniper Networks. Inc. Mọi quyền được bảo lưu. Juniper Networks, logo Juniper Networks, Juniper, Junos và các nhãn hiệu khác là các nhãn hiệu đã đăng ký của Juniper Networks. inc. và/hoặc các chi nhánh của Juniper Networks tại Hoa Kỳ và các quốc gia khác. Các tên khác có thể là nhãn hiệu của chủ sở hữu tương ứng. Juniper Networks không chịu trách nhiệm về bất kỳ thông tin không chính xác nào trong tài liệu này. Juniper Networks có quyền thay đổi, sửa đổi, chuyển nhượng hoặc sửa đổi ấn phẩm này mà không cần thông báo.
Gửi phản hồi tới: thiết kế-center-comments@juniper.net V1.0/240807/ejm5-telemetry-junos-ai-ml
Tài liệu / Tài nguyên
![]() |
Juniper NETWORKS Đo từ xa trong Junos dành cho Phần mềm khối lượng công việc AI ML [tập tin pdf] Hướng dẫn sử dụng Đo từ xa In Junos cho Phần mềm khối lượng công việc AI ML, Junos cho Phần mềm khối lượng công việc AI ML, Phần mềm khối lượng công việc AI ML, Phần mềm khối lượng công việc, Phần mềm |