0
0
Lập trình
TT

Giám sát Ứng dụng .NET của bạn với Azure Application Insights

Đăng vào 7 giờ trước

• 5 phút đọc

Giám sát Ứng dụng .NET của bạn với Azure Application Insights

Khi bạn triển khai một ứng dụng .NET, câu chuyện không chỉ dừng lại ở việc nó "chạy tốt". Bạn cần biết những gì đang diễn ra bên trong ứng dụng của bạn trong môi trường sản xuất:

  • Các endpoint nào đang chậm?
  • Lỗi xảy ra ở đâu?
  • Người dùng có đang gặp phải độ trễ không?
  • Liệu chúng ta có thể phát hiện vấn đề trước khi khách hàng phàn nàn không?

Đó chính là lúc Azure Application Insights phát huy tác dụng.

1. Application Insights là gì?

Application Insights là một phần của Azure Monitor và hoạt động như một dịch vụ Giám sát Hiệu suất Ứng dụng (APM). Nó giúp bạn theo dõi, phân tích và trực quan hóa mọi thứ đang diễn ra trong ứng dụng của bạn.

1.1 Điểm nổi bật:

  • Giám sát các yêu cầu, phụ thuộc và ngoại lệ
  • Xem thời gian phản hồi và tắc nghẽn
  • Theo dõi hành vi người dùng (lượt xem trang, phiên làm việc)
  • Thiết lập cảnh báo và bảng điều khiển
  • Xem dữ liệu theo thời gian thực với Live Metrics Stream

2. Tại sao bạn nên quan tâm?

Hãy tưởng tượng bạn đã xây dựng một API .NET Core bóng bẩy. Người dùng nói: “Nó cảm thấy chậm!”

Nếu không có telemetry, bạn sẽ không biết được: cơ sở dữ liệu? Cuộc gọi API? Mạng?
Với Application Insights → bạn sẽ có câu trả lời trong vài phút.

3. Thêm vào ứng dụng ASP.NET Core

3.1 Cài đặt gói

Chạy lệnh sau để cài đặt gói:

Copy
dotnet add package Microsoft.ApplicationInsights.AspNetCore

3.2 Cập nhật Program.cs

Cập nhật file Program.cs như sau:

csharp Copy
using Microsoft.ApplicationInsights;

var builder = WebApplication.CreateBuilder(args);

// Kích hoạt Application Insights
builder.Services.AddApplicationInsightsTelemetry(
    builder.Configuration["ApplicationInsights:ConnectionString"]);

builder.Services.AddSingleton<WeatherService>();

var app = builder.Build();

app.MapGet("/", () => "Chào từ App Insights!");

app.MapGet("/weather", (WeatherService service) =>
{
    service.GetWeather();
    return Results.Ok("Telemetry đã được gửi!");
});

app.Run();

public class WeatherService
{
    private readonly TelemetryClient _telemetry;

    public WeatherService(TelemetryClient telemetry)
    {
        _telemetry = telemetry;
    }

    public void GetWeather()
    {
        _telemetry.TrackEvent("GetWeatherCalled");
        _telemetry.GetMetric("WeatherRequests").TrackValue(1);

        try
        {
            throw new Exception("Test Exception!");
        }
        catch (Exception ex)
        {
            _telemetry.TrackException(ex);
        }
    }
}

3.3 Thêm chuỗi kết nối

Trong file appsettings.json, thêm chuỗi kết nối sau:

json Copy
{
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;IngestionEndpoint=https://<region>.in.applicationinsights.azure.com/"
  }
}

3.4 Chạy và theo dõi telemetry

Chạy lệnh sau:

Copy
dotnet run
  • Truy cập endpoint /weather → các sự kiện, chỉ số và ngoại lệ sẽ được ghi lại.
  • Vào Azure Portal → Application Insights → Live Metrics → xem dữ liệu chảy vào.

4. Ví dụ về truy vấn KQL

Application Insights sử dụng Kusto Query Language (KQL) để khám phá telemetry.

Yêu cầu thất bại:

kql Copy
requests
| where success == false
| order by timestamp desc

5 endpoint chậm nhất:

kql Copy
requests
| summarize avg(duration) by name
| top 5 by avg_duration desc

5. Thực hành tốt nhất khi sử dụng Application Insights

5.1 Thiết lập cảnh báo

  • Thiết lập cảnh báo cho các lỗi hoặc thời gian phản hồi chậm để có thể phản ứng nhanh chóng.

5.2 Theo dõi hiệu suất thường xuyên

  • Kiểm tra hiệu suất ứng dụng định kỳ để đảm bảo mọi thứ hoạt động trơn tru.

6. Những cạm bẫy thường gặp

  • Không cấu hình đúng chuỗi kết nối có thể dẫn đến việc không thu thập được dữ liệu.
  • Bỏ qua việc thiết lập các chỉ số theo dõi quan trọng có thể làm mất thông tin giá trị.

7. Mẹo hiệu suất

  • Tối ưu hóa truy vấn KQL để giảm thời gian truy xuất dữ liệu.
  • Sử dụng Live Metrics để theo dõi hiệu suất thời gian thực mà không làm chậm ứng dụng.

8. Khắc phục sự cố

  • Nếu không thấy dữ liệu trong Application Insights, hãy kiểm tra cấu hình chuỗi kết nối và đảm bảo rằng ứng dụng có quyền truy cập internet.

9. Kết luận

Application Insights giúp bạn dễ dàng:

  • Giám sát hiệu suất
  • Chẩn đoán lỗi nhanh chóng
  • Hiểu cách người dùng tương tác với ứng dụng của bạn
  • Thiết lập cảnh báo chủ động

Nếu bạn đang chạy bất kỳ ứng dụng .NET nào trong môi trường sản xuất, Application Insights nên là một trong những công cụ bạn không thể bỏ qua.

10. Hướng dẫn tạo tài nguyên trong Azure

Để ứng dụng .NET của bạn có thể gửi telemetry đến Application Insights, bạn cần tạo một tài nguyên trong Azure Portal:

  1. Đăng nhập → Truy cập portal.azure.com.
  2. Tạo Tài nguyên → Tìm kiếm “Application Insights” và nhấp Tạo.
  3. Điền thông tin:
    • Subscription → chọn subscription của bạn
    • Resource Group → tạo một nếu bạn chưa có (ví dụ: AppInsightsDemoRG)
    • Name → chọn tên duy nhất
    • Region → chọn khu vực Azure gần nhất với người dùng của bạn (ví dụ: Tây Âu, Trung Thụy Điển)
    • Resource Mode → chọn Workspace-based
  4. Xem lại và Tạo → nhấp Tạo để hoàn tất.
  5. Sao chép Chuỗi kết nối → Sau khi triển khai, vào tài nguyên mới của bạn → Properties / Overview → sao chép Connection String.

Dán chuỗi kết nối đó vào file appsettings.json của bạn:

json Copy
{
  "ApplicationInsights": {
    "ConnectionString": "InstrumentationKey=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx;IngestionEndpoint=https://<region>.in.applicationinsights.azure.com/"
  }
}

Giờ đây, ứng dụng của bạn đã được kết nối hoàn toàn với Azure Application Insights.

💬 Bạn nghĩ sao?
Bạn đã thử nghiệm Application Insights trong các dự án của mình chưa?
Hay bạn thích một thứ khác như Serilog + Seq / ELK stack?

Xem mã mẫu từ GitHub 👈

Tôi là Morteza Jangjoo và “Giải thích những điều mà tôi ước ai đó đã giải thích cho tôi.”

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào