Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Theo dõi phân tán là một phương pháp được sử dụng để lập hồ sơ và giám sát các ứng dụng, đặc biệt là các ứng dụng được xây dựng bằng kiến trúc vi dịch vụ. Nó cho phép bạn theo dõi một sự kiện trong hệ thống từ dịch vụ này sang dịch vụ khác và thu thập thông tin chẩn đoán toàn diện về hiệu suất và độ trễ. Khuyến nghị W3C Trace Context xác định cách thông tin ngữ cảnh được gửi và sửa đổi giữa các dịch vụ trong các tình huống theo dõi phân tán. Bài viết này cung cấp các ứng dụng thực tế và trường hợp sử dụng cho việc theo dõi phân tán và giải thích cách triển khai nó trên nhiều dịch vụ trong Power Platform.
Nhận dạng dấu vết
Trong tiêu chuẩn W3C Trace Context, mỗi dấu vết được gán một mã 16 byte duy nhất trên toàn cầu trace-id
. Mỗi hoạt động trong dấu vết được gán một 8 byte duy nhất span-id
.
trace-id
đại diện cho toàn bộ giao dịch và span-id
đại diện cho các hoạt động riêng lẻ trong giao dịch đó. Mỗi hoạt động ghi lại trace-id
, span-id
của chính hoạt động đó và span-id
của hoạt động cha, thiết lập mối quan hệ cha-con giữa các hoạt động.
Trong tiêu chuẩn W3C, traceparent
là một tiêu đề được sử dụng để theo dõi các yêu cầu khi chúng di chuyển qua các dịch vụ hoặc hệ thống khác nhau. Nó chứa một trace-id
duy nhất, một parent-id
đại diện cho người gọi trực tiếp và trace-flags
cho các quyết định lấy mẫu.
Ví dụ tình huống
Hãy xem xét một ví dụ trong đó trình duyệt bắt đầu giao dịch, nhiều dịch vụ vi mô tương tác và thực hiện lệnh gọi đến Dataverse Web API:
Nguồn |
trace-id Và span-id |
---|---|
Trình duyệt |
trace-parent : 00-11111111111111111111111111111111-2222222222222222-01 |
Kubernetes |
trace-parent : 00-11111111111111111111111111111111-3333333333333333-01 |
Dataverse |
trace-parent : 00-11111111111111111111111111111111-4444444444444444-01 |
Trình duyệt khởi tạo giao dịch: Trình duyệt gửi yêu cầu đến máy chủ web. Yêu cầu được gán a
trace-id
và aspan-id
, span-id-1.Tương tác giữa các dịch vụ vi mô: Máy chủ web xử lý yêu cầu và thực hiện cuộc gọi đến một dịch vụ vi mô. Cuộc gọi được gán một
span-id
(span-id-2) mới và giữ nguyêntrace-id
. Dịch vụ vi mô gọi một dịch vụ vi mô khác, tạo ra mộtspan-id
(span-id-3) khác, v.v. Trong mỗi trường hợp,trace-id
vẫn giữ nguyên, nhưng mộtspan-id
mới được tạo ra cho mỗi thao tác.Gọi đến Dataverse Web API: Một trong các dịch vụ vi mô thực hiện lệnh gọi đến Dataverse Web API. Một lần nữa, lệnh gọi được gán một
span-id
(span-id-4) mới và giữ nguyêntrace-id
.
trace-id và mối quan hệ cha-con
trace-id
kết nối tất cả các giao dịch có mối quan hệ cha-con. Mỗi span-id
đại diện cho một hoạt động duy nhất trong dấu vết và span-id
cha liên kết nó với hoạt động cha của nó. Cấu trúc phân cấp này cho phép bạn theo dõi toàn bộ giao dịch từ yêu cầu ban đầu đến phản hồi cuối cùng, ngay cả khi giao dịch đi qua nhiều dịch vụ và hệ thống.
trace-id và ánh xạ Operation Id
Application Insights ánh xạ trường W3C trace-id
thành Operation Id
, cho phép bạn dễ dàng truy vấn một tập hợp các hành động liên quan diễn ra như một phần của quá trình theo dõi đầu cuối.
Ứng dụng thực tế và lợi ích
Tiêu chuẩn W3C Trace Context cho việc theo dõi phân tán cung cấp một số ứng dụng và lợi ích thiết thực:
Khả năng hiển thị toàn diện: Ngữ cảnh theo dõi cung cấp khả năng hiển thị toàn diện vào một giao dịch, giúp bạn hiểu cách các yêu cầu lan truyền qua hệ thống của bạn.
Giám sát hiệu suất: Cho phép bạn giám sát hiệu suất của từng dịch vụ và xác định các điểm nghẽn.
Chẩn đoán lỗi: Giúp bạn chẩn đoán lỗi bằng cách theo dõi đường dẫn của yêu cầu và xác định nơi xảy ra lỗi.
Theo dõi sự phụ thuộc: Cho phép bạn theo dõi sự phụ thuộc giữa các dịch vụ và hiểu cách chúng tương tác.
Bằng cách triển khai theo dõi phân tán với tiêu chuẩn W3C Trace Context, bạn có thể có được những hiểu biết có giá trị về hành vi của ứng dụng, cải thiện hiệu suất và nâng cao trải nghiệm tổng thể của người dùng.
Các trường hợp sử dụng tiềm năng
Bảng sau đây mô tả các trường hợp sử dụng tiềm năng cho việc theo dõi phân tán Power Platform. Mỗi trường hợp sử dụng minh họa cách áp dụng theo dõi phân tán vào các tình huống khác nhau, cho phép bạn theo dõi và chẩn đoán các sự cố về hiệu suất trên nhiều dịch vụ.
Ví dụ: | Description | Ghi chú |
---|---|---|
Đại lý tự chủ | Một sự kiện dữ liệu sẽ kích hoạt một tác nhân tự động. Giao dịch có thể tồn tại lâu dài sẽ được duy trì theo dõi bởi cha mẹ. Giao dịch có thể trải qua nhiều quy trình và dịch vụ, bao gồm cả việc chuyển giao cho nhân viên dịch vụ khách hàng. | Power Automate có thể yêu cầu theo dõi phân tán từ Dataverse plug-in. Mỗi bước của quy trình đều bổ sung thêm dữ liệu đo từ xa. Application Insights Bạn có thể truy vấn giao dịch đầu cuối trong Application Insights hoặc bằng cách sử dụng truy vấn KQL. |
Giao dịch trên web, thiết bị di động hoặc đại lý của người dùng cuối | Người dùng bắt đầu giao dịch để cập nhật dữ liệu khách hàng. Các mục theo dõi được thêm vào Application Insights từ yêu cầu và theo dõi các tin nhắn từ Dataverse. | Dịch vụ Kubernetes bắt đầu một giao dịch phân tán. Nó gọi Dataverse Web API để cập nhật thông tin chi tiết về khách hàng. |
Nhân viên hỗ trợ khách hàng | Một khách hàng liên hệ với tổng đài. Người điều hành tổng đài sử dụng Copilot trong Dynamics 365 Customer Service và ứng dụng dựa trên mô hình để cập nhật thông tin chi tiết của khách hàng. Mỗi thành phần trong bản cập nhật sẽ ghi vào Application Insights. | Giao dịch bắt đầu với nhân viên tổng đài. Ứng dụng dựa trên mô hình yêu cầu giao dịch phân tán từ Dataverse. |
Dataverse Tích hợp API Web
Hãy cùng khám phá cách Dataverse Web API có thể được tích hợp với W3C Trace Context để theo dõi phân tán.
Dịch vụ gọi sẽ khởi tạo một dấu vết với trace-id
và span-id
duy nhất. Giá trị có thể được truyền tới Web API trong nội dung của yêu cầu HTTP POST hoặc như một phần của chuỗi truy vấn HTTP; ví dụ: trace-parent
-
Tùy chọn 1: Nội dung bài viết POST:
postData(environmentUrl + "api/data/v9.0/" + customApiName, token, ...)
-
Tùy chọn 2: Chuỗi truy vấn thẻ:
postData(environmentUrl + "api/data/v9.0/" + customApiName + "?tag=01-0af...")
Sử dụng bất kỳ phương pháp nào, bạn có thể cấu hình Dataverse trình cắm thêm để kết hợp theo dõi, tạo Application Insights tin nhắn mới và theo dõi tin nhắn. span-id
Dataverse tích hợp
Bây giờ chúng ta hãy khám phá cách triển khai mẫu này bằng cách sử dụng các tính năng có sẵn chung của Dataverse.
Để áp dụng theo dõi phân tán cho các cuộc gọi đến Dataverse Web API:
- Sử dụng Dataverse messages để mở rộng đường truyền tin nhắn.
- Tạo API tùy chỉnh với các plug-in sử dụng SDK để thêm các mối quan hệ cha-con cần thiết. Dataverse Application Insights
Gọi từ các dịch vụ khác Power Platform
Giả sử bạn muốn cho phép các dịch vụ khác, như Power Platform , Copilot Studio hoặc Power Appsluồng đám mây, được đưa vào giải pháp theo dõi phân tán tổng thể. Power Automate Hãy cân nhắc việc gọi một hàm từ ứng dụng, luồng, mã hoặc hàm khác để gọi Dataverse các API tùy chỉnh như đã thảo luận trong phần này.
Dataverse tin nhắn cho các thực thể hoặc API tùy chỉnh
Bạn có thể xác định các thông báo tùy chỉnh cho phép bạn tương tác với các thực thể hoặc API tùy chỉnh trong môi trường. Dataverse Dataverse Dataverse tin nhắn cho phép bạn hợp lý hóa quy trình quản lý dữ liệu và đảm bảo tích hợp liền mạch với nhu cầu quan sát của bạn. Tìm hiểu thêm trong Tạo tin nhắn của riêng bạn.
Thêm các bước vào plug-in
Sau khi bạn tạo một loại tin nhắn Dataverse hoặc sử dụng một loại thực thể được xác định trước trong môi trường, hãy sử dụng trình cắm thêm để cấu hình thực thi ở các giai đoạn khác nhau của đường ống xử lý dữ liệu và cho phép theo dõi phân tán. Tìm hiểu thêm trong Sử dụng plug-in để mở rộng quy trình kinh doanh.
Các giai đoạn của quy trình có thể bao gồm các bước tiền xác nhận, tiền phẫu thuật và hậu phẫu thuật. Bằng cách thêm các bước vào plug-in, bạn có thể kiểm soát luồng dữ liệu và đảm bảo các hành động được thực hiện đúng thời điểm.
Xác thực trước: Xảy ra trước khi thao tác chính được thực hiện. Nó xác thực dữ liệu và đảm bảo dữ liệu đáp ứng các tiêu chí yêu cầu.
Tiền hoạt động: Xảy ra sau bước xác thực trước nhưng trước khi hoạt động chính được thực hiện. Nó thực hiện mọi chuẩn bị hoặc sửa đổi cần thiết cho dữ liệu.
Sau thao tác: Xảy ra sau khi thao tác chính được thực hiện. Nó thực hiện bất kỳ hoạt động dọn dẹp hoặc hành động cần thiết nào khác dựa trên kết quả của hoạt động chính.
Bạn có thể cấu hình plug-in để thực hiện các bước này đồng bộ hoặc không đồng bộ, tùy thuộc vào yêu cầu của ứng dụng.
Giá trị cấu hình không an toàn và an toàn
Bạn có thể sử dụng các trường Cấu hình không an toàn và Cấu hình an toàn trong công cụ Đăng ký Plug-in để kiểm soát các khía cạnh về hành vi của plug-in.
Cấu hình không an toàn: Cài đặt không an toàn có thể được tất cả người dùng nhìn thấy và có thể bao gồm các cài đặt như mức nhật ký, bật/tắt theo dõi và các thông tin không nhạy cảm khác.
Cấu hình bảo mật: Cài đặt bảo mật chỉ hiển thị với người dùng có quyền phù hợp và có thể bao gồm thông tin nhạy cảm như chuỗi kết nối, khóa API và dữ liệu bí mật khác.
Đối với các tình huống theo dõi phân tán, hãy sử dụng trường Cấu hình không an toàn để quản lý xem theo dõi có được bật hay không và để đặt mức ghi nhật ký. Sử dụng trường Cấu hình bảo mật để lưu trữ thông tin chuỗi kết nối mà plug-in yêu cầu.
Tìm hiểu thêm trong Đăng ký plug-in.
API tùy chỉnh với các tham số yêu cầu và phản hồi
Dataverse cho phép bạn tạo và sử dụng API tùy chỉnh với các tham số yêu cầu và phản hồi cụ thể để đáp ứng nhu cầu của ứng dụng.
InputParameters
: Xác định dữ liệu đầu vào theo yêu cầu của API tùy chỉnh. Chúng có thể bao gồm nhiều kiểu dữ liệu khác nhau như chuỗi, số nguyên và các đối tượng phức tạp.OutputParameters
: Xác định dữ liệu đầu ra được trả về bởi API tùy chỉnh. Chúng có thể bao gồm nhiều kiểu dữ liệu và cấu trúc khác nhau, cho phép bạn cung cấp phản hồi chi tiết và có ý nghĩa cho người dùng API.
Tiền bo
Đối với việc theo dõi phân tán, bạn có thể gắn thẻ giá trị chuỗi truy vấn để truyền Biến được chia sẻ từ API.
Các bước xử lý tùy chỉnh (đồng bộ và không đồng bộ)
Khi sử dụng các bước xử lý tùy chỉnh, bạn có thể xác định xem các bước này sẽ được thực hiện đồng bộ hay không đồng bộ. Tính linh hoạt này cho phép bạn tối ưu hóa hiệu suất và khả năng phản hồi của ứng dụng.
- Xử lý đồng bộ: Các bước được thực hiện tuần tự. Bước tiếp theo sẽ không bắt đầu cho đến khi bước hiện tại hoàn tất. Cách tiếp cận này đảm bảo rằng mỗi bước được hoàn tất trước khi chuyển sang bước tiếp theo.
- Xử lý không đồng bộ: Các bước được thực hiện độc lập. Bước tiếp theo có thể bắt đầu trước khi bước hiện tại hoàn tất. Phương pháp này cho phép xử lý song song và có thể cải thiện hiệu suất tổng thể của ứng dụng.
Bằng cách xác định các bước xử lý tùy chỉnh, bạn có thể thêm chức năng giám sát và các chức năng khác vào các thực thể hiện có hoặc thông báo API tùy chỉnh, đảm bảo ứng dụng của bạn hoạt động hiệu quả.
Dataverse Các plug-in C#
Xây dựng và triển khai các plug-in C# sử dụng SDK để tạo mối quan hệ cha-con chính xác giữa các dịch vụ. Dataverse Application Insights Tìm hiểu thêm trong Viết plug-in.
So sánh plug-in tùy chỉnh và ILogger có sẵn
Dataverse cung cấp một ILogger có thể được cấu hình ở cấp độ môi trường. ILogger tích hợp được thiết kế để cung cấp cơ chế ghi nhật ký chuẩn hóa trên nhiều môi trường khác nhau, đảm bảo tính nhất quán và dễ sử dụng. Tuy nhiên, nó có thể không cung cấp cùng mức độ chi tiết và tùy chỉnh như plug-in tùy chỉnh ILogger.
Tiện ích bổ sung tùy chỉnh ILogger trong Dataverse cung cấp các cấp thông tin chi tiết hơn, chẳng hạn như Theo dõi, Gỡ lỗi và Thông tin. Nó cho phép các nhà phát triển nắm bắt dữ liệu cụ thể và có liên quan hơn trong quá trình thực hiện các plug-in. ILogger sử dụng các giá trị từ yêu cầu tin nhắn hoặc tham số thẻ Chia sẻ Biến để chỉ định cha mẹ theo dõi cuộc gọi để theo dõi và tương quan nhật ký tốt hơn.
Tìm hiểu thêm trong Ghi dữ liệu từ xa vào tài nguyên của bạn Application Insights bằng ILogger.
Các khái niệm chính của C# để phân tích hoạt động và chỉ định ID cha
Khi bạn sử dụng plug-in tùy chỉnh ILogger, điều cần thiết là phải hiểu các khái niệm chính của C# để phân tích hoạt động và chỉ định ID cha. Sau đây là ví dụ về cách tạo hoạt động mới cho tin nhắn theo dõi:
// Create a new activity for the trace message
var activity = new Activity("CustomActivity");
activity.SetParentId(traceParent);
activity.Start();
// Create a trace telemetry record
var traceTelemetry = new TraceTelemetry(message, ConvertLogLevel(level))
{
Message = message,
Context = { Operation = { ParentId = dependencyTelemetry.Id, Id = activity.Id } }
};
// Track the trace telemetry
telemetryClient.TrackTrace(traceTelemetry);
Tiền bo
Dự án mẫu Dataverse OpenTelemetry chứa một ví dụ về tích hợp Dataverse trình cắm thêm với OpenTelemetry. OpenTelemetry là tập hợp các tiêu chuẩn W3C, API, SDK và công cụ mà bạn có thể sử dụng để đo lường, tạo, thu thập và xuất dữ liệu đo từ xa.
Người đóng góp
Microsoft duy trì bài viết này. Những người đóng góp sau đây đã viết bài viết này.
Tác giả chính:
- Grant Archibald, Trưởng phòng quản lý chương trình