Từ terabyte đến thông tin chi tiết- Kiến trúc quan sát AI thực tế

Bài viết này thảo luận về kiến trúc quan sát AI thực tế.

  • 11 min read
Từ terabyte đến thông tin chi tiết- Kiến trúc quan sát AI thực tế
Bài viết này thảo luận về kiến trúc quan sát AI thực tế.

Từ terabyte đến những hiểu biết sâu sắc: Kiến trúc quan sát AI trong thế giới thực

Bạn muốn có những hiểu biết sâu sắc hơn trong hộp thư đến của mình? Đăng ký nhận bản tin hàng tuần của chúng tôi để chỉ nhận những gì quan trọng đối với các nhà lãnh đạo về AI, dữ liệu và bảo mật của doanh nghiệp. Đăng ký ngay

Hãy xem xét việc duy trì và phát triển một nền tảng thương mại điện tử xử lý hàng triệu giao dịch mỗi phút, tạo ra lượng lớn dữ liệu đo từ xa, bao gồm các số liệu, nhật ký và dấu vết trên nhiều microservice. Khi các sự cố quan trọng xảy ra, các kỹ sư trực ca phải đối mặt với nhiệm vụ khó khăn là sàng lọc một biển dữ liệu để tìm ra các tín hiệu và thông tin chi tiết có liên quan. Điều này tương đương với việc tìm kim trong đáy bể.

Điều này làm cho khả năng quan sát trở thành một nguồn gây khó chịu hơn là thông tin chi tiết. Để giảm bớt điểm khó khăn lớn này, tôi bắt đầu khám phá một giải pháp để sử dụng Giao thức Ngữ cảnh Mô hình (MCP) để thêm ngữ cảnh và rút ra suy luận từ nhật ký và dấu vết phân tán. Trong bài viết này, tôi sẽ phác thảo kinh nghiệm của mình trong việc xây dựng một nền tảng quan sát được hỗ trợ bởi AI, giải thích kiến trúc hệ thống và chia sẻ những hiểu biết sâu sắc có thể hành động được rút ra trong quá trình này.

Tại sao khả năng quan sát lại đầy thách thức?

Trong các hệ thống phần mềm hiện đại, khả năng quan sát không phải là một thứ xa xỉ; đó là một nhu cầu cơ bản. Khả năng đo lường và hiểu hành vi của hệ thống là nền tảng cho độ tin cậy, hiệu suất và sự tin tưởng của người dùng. Như người ta thường nói, “Bạn không thể cải thiện những gì bạn không thể đo lường.”

Tuy nhiên, việc đạt được khả năng quan sát trong kiến trúc gốc đám mây, dựa trên microservice ngày nay khó khăn hơn bao giờ hết. Một yêu cầu duy nhất của người dùng có thể đi qua hàng tá microservice, mỗi microservice phát ra nhật ký, số liệu và dấu vết. Kết quả là có rất nhiều dữ liệu đo từ xa:

AI Scaling Hits Its Limits

Power caps, rising token costs, and inference delays are reshaping enterprise AI. Join our exclusive salon to discover how top teams are:

Turning energy into a strategic advantage
Architecting efficient inference for real throughput gains
Unlocking competitive ROI with sustainable AI systems

Secure your spot to stay ahead: https://bit.ly/4mwGngO
  • Hàng chục terabyte nhật ký mỗi ngày
  • Hàng chục triệu điểm dữ liệu số liệu và tổng hợp trước
  • Hàng triệu dấu vết phân tán
  • Hàng ngàn ID tương quan được tạo mỗi phút

Thách thức không chỉ là khối lượng dữ liệu mà còn là sự phân mảnh dữ liệu. Theo Báo cáo Dự báo Khả năng quan sát năm 2023 của New Relic, 50% tổ chức báo cáo dữ liệu đo từ xa bị cô lập, chỉ 33% đạt được chế độ xem thống nhất trên các số liệu, nhật ký và dấu vết.

Nhật ký kể một phần của câu chuyện, số liệu một phần khác, dấu vết một phần khác. Nếu không có một chuỗi ngữ cảnh nhất quán, các kỹ sư buộc phải tương quan thủ công, dựa vào trực giác, kiến thức bộ lạc và công việc trinh thám tẻ nhạt trong các sự cố.

Vì sự phức tạp này, tôi bắt đầu tự hỏi: Làm thế nào AI có thể giúp chúng ta vượt qua dữ liệu phân mảnh và đưa ra những hiểu biết toàn diện, hữu ích? Cụ thể, liệu chúng ta có thể làm cho dữ liệu đo từ xa có ý nghĩa và dễ tiếp cận hơn đối với cả con người và máy móc bằng cách sử dụng một giao thức có cấu trúc như MCP? Nền tảng của dự án này được định hình bởi câu hỏi trung tâm đó.

Tìm hiểu về MCP: Góc nhìn về đường dẫn dữ liệu

Anthropic định nghĩa MCP là một tiêu chuẩn mở cho phép các nhà phát triển tạo ra một kết nối hai chiều an toàn giữa các nguồn dữ liệu và các công cụ AI. Đường dẫn dữ liệu có cấu trúc này bao gồm:

  • ETL theo ngữ cảnh cho AI: Tiêu chuẩn hóa việc trích xuất ngữ cảnh từ nhiều nguồn dữ liệu.
  • Giao diện truy vấn có cấu trúc: Cho phép các truy vấn AI truy cập các lớp dữ liệu trong suốt và dễ hiểu.
  • Làm phong phú dữ liệu ngữ nghĩa: Nhúng ngữ cảnh có ý nghĩa trực tiếp vào các tín hiệu đo từ xa.

Điều này có khả năng chuyển khả năng quan sát nền tảng từ giải quyết vấn đề phản ứng sang thông tin chi tiết chủ động.

Kiến trúc hệ thống và luồng dữ liệu

Trước khi đi sâu vào chi tiết triển khai, chúng ta hãy xem qua kiến trúc hệ thống.

Kiến trúc hệ thống

Sơ đồ kiến trúc cho hệ thống quan sát AI dựa trên MCP

Ở lớp đầu tiên, chúng tôi phát triển dữ liệu đo từ xa theo ngữ cảnh bằng cách nhúng siêu dữ liệu tiêu chuẩn hóa vào các tín hiệu đo từ xa, chẳng hạn như dấu vết phân tán, nhật ký và số liệu. Sau đó, ở lớp thứ hai, dữ liệu được làm phong phú được đưa vào máy chủ MCP để lập chỉ mục, thêm cấu trúc và cung cấp quyền truy cập máy khách vào dữ liệu được làm phong phú ngữ cảnh bằng cách sử dụng API. Cuối cùng, công cụ phân tích dựa trên AI sử dụng dữ liệu đo từ xa có cấu trúc và được làm phong phú để phát hiện dị thường, tương quan và phân tích nguyên nhân gốc để khắc phục sự cố ứng dụng.

Thiết kế theo lớp này đảm bảo rằng các nhóm AI và kỹ thuật nhận được thông tin chi tiết theo hướng ngữ cảnh, có thể hành động từ dữ liệu đo từ xa.

Đi sâu vào triển khai: Hệ thống ba lớp

Hãy khám phá việc triển khai thực tế nền tảng quan sát được hỗ trợ bởi MCP của chúng tôi, tập trung vào luồng dữ liệu và các chuyển đổi ở mỗi bước.

Lớp 1: Tạo dữ liệu được làm phong phú ngữ cảnh

Đầu tiên, chúng ta cần đảm bảo dữ liệu đo từ xa của chúng ta chứa đủ ngữ cảnh để phân tích có ý nghĩa. Thông tin chi tiết cốt lõi là việc tương quan dữ liệu cần xảy ra vào thời điểm tạo, không phải thời điểm phân tích.

def process_checkout(user_id, cart_items, payment_method):
    """Simulate a checkout process with context-enriched telemetry."""
        
    # Generate correlation id
    order_id = f"order-{uuid.uuid4().hex[:8]}"
    request_id = f"req-{uuid.uuid4().hex[:8]}"
    
    # Initialize context dictionary that will be applied
    context = {
        "user_id": user_id,
        "order_id": order_id,
        "request_id": request_id,
        "cart_item_count": len(cart_items),
        "payment_method": payment_method,
        "service_name": "checkout",
        "service_version": "v1.0.0"
    }
    
    # Start OTel trace with the same context
    with tracer.start_as_current_span(
        "process_checkout",
        attributes={k: str(v) for k, v in context.items()}
    ) as checkout_span:
        
        # Logging using same context
        logger.info(f"Starting checkout process", extra={"context": json.dumps(context)})
        
        # Context Propagation
        with tracer.start_as_current_span("process_payment"):
            # Process payment logic…
            logger.info("Payment processed", extra={"context":json.dumps(context)})

Mã 1. Làm phong phú ngữ cảnh cho nhật ký và dấu vết

Cách tiếp cận này đảm bảo rằng mọi tín hiệu đo từ xa (nhật ký, số liệu, dấu vết) đều chứa cùng một dữ liệu ngữ cảnh cốt lõi, giải quyết vấn đề tương quan tại nguồn.

Lớp 2: Truy cập dữ liệu thông qua máy chủ MCP

Tiếp theo, tôi đã xây dựng một máy chủ MCP chuyển đổi dữ liệu đo từ xa thô thành một API có thể truy vấn. Các hoạt động dữ liệu cốt lõi ở đây bao gồm những điều sau:

  1. Lập chỉ mục: Tạo các tra cứu hiệu quả trên các trường ngữ cảnh
  2. Lọc: Chọn các tập hợp con dữ liệu đo từ xa có liên quan
  3. Tổng hợp: Tính toán các biện pháp thống kê trên các khoảng thời gian
@app.post("/mcp/logs", response_model=List[Log])
def query_logs(query: LogQuery):
    """Query logs with specific filters"""
    results = LOG_DB.copy()
    
    # Apply contextual filters
    if query.request_id:
        results = [log for log in results if log["context"].get("request_id") == query.request_id]
    
    if query.user_id:
        results = [log for log in results if log["context"].get("user_id") == query.user_id]
    
    # Apply time-based filters
    if query.time_range:
        start_time = datetime.fromisoformat(query.time_range["start"])
        end_time = datetime.fromisoformat(query.time_range["end"])
        results = [log for log in results
                     if start_time <= datetime.fromisoformat(log["timestamp"]) <= end_time]
    
    # Sort by timestamp
    results = sorted(results, key=lambda x: x["timestamp"], reverse=True)
    
    return results[:query.limit] if query.limit else results

Mã 2. Chuyển đổi dữ liệu bằng máy chủ MCP

Lớp này chuyển đổi dữ liệu đo từ xa của chúng ta từ một hồ dữ liệu không có cấu trúc thành một giao diện có cấu trúc, được tối ưu hóa truy vấn mà hệ thống AI có thể điều hướng hiệu quả.

Lớp 3: Công cụ phân tích dựa trên AI

Lớp cuối cùng là một thành phần AI sử dụng dữ liệu thông qua giao diện MCP, thực hiện:

  1. Phân tích đa chiều: Tương quan các tín hiệu trên nhật ký, số liệu và dấu vết.
  2. Phát hiện dị thường: Xác định các sai lệch thống kê so với các mẫu bình thường.
  3. Xác định nguyên nhân gốc: Sử dụng các manh mối ngữ cảnh để cô lập các nguồn gốc có khả năng gây ra sự cố.
def analyze_incident(self, request_id=None, user_id=None, timeframe_minutes=30):
    """Analyze telemetry data to determine root cause and recommendations."""
    
    # Define analysis time window
    end_time = datetime.now()
    start_time = end_time - timedelta(minutes=timeframe_minutes)
    time_range = {"start": start_time.isoformat(), "end": end_time.isoformat()}
    
    # Fetch relevant telemetry based on context
    logs = self.fetch_logs(request_id=request_id, user_id=user_id, time_range=time_range)
    
    # Extract services mentioned in logs for targeted metric analysis
    services = set(log.get("service", "unknown") for log in logs)
    
    # Get metrics for those services
    metrics_by_service = {}
    for service in services:
        for metric_name in ["latency", "error_rate", "throughput"]:
            metric_data = self.fetch_metrics(service, metric_name, time_range)
            
            # Calculate statistical properties
            values = [point["value"] for point in metric_data["data_points"]]
            metrics_by_service[f"{service}.{metric_name}"] = {
                "mean": statistics.mean(values) if values else 0,
                "median": statistics.median(values) if values else 0,
                "stdev": statistics.stdev(values) if len(values) > 1 else 0,
                "min": min(values) if values else 0,
                "max": max(values) if values else 0
            }
    
    # Identify anomalies using z-score
    anomalies = []
    for metric_name, stats in metrics_by_service.items():
        if stats["stdev"] > 0:  # Avoid division by zero
            z_score = (stats["max"] - stats["mean"]) / stats["stdev"]
            if z_score > 2:  # More than 2 standard deviations
                anomalies.append({
                    "metric": metric_name,
                    "z_score": z_score,
                    "severity": "high" if z_score > 3 else "medium"
                })
    
    return {
        "summary": ai_summary,
        "anomalies": anomalies,
        "impacted_services": list(services),
        "recommendation": ai_recommendation
    }

Mã 3. Phân tích sự cố, phát hiện dị thường và phương pháp suy luận

Tác động của khả năng quan sát được tăng cường MCP

Việc tích hợp MCP với các nền tảng quan sát có thể cải thiện việc quản lý và hiểu dữ liệu đo từ xa phức tạp. Các lợi ích tiềm năng bao gồm:

  • Phát hiện dị thường nhanh hơn, dẫn đến giảm thời gian tối thiểu để phát hiện (MTTD) và thời gian tối thiểu để giải quyết (MTTR).
  • Dễ dàng xác định nguyên nhân gốc của các vấn đề.
  • Ít nhiễu hơn và ít cảnh báo không thể hành động hơn, do đó giảm mệt mỏi do cảnh báo và cải thiện năng suất của nhà phát triển.
  • Ít gián đoạn và chuyển đổi ngữ cảnh hơn trong quá trình giải quyết sự cố, dẫn đến cải thiện hiệu quả hoạt động cho nhóm kỹ thuật.

Những hiểu biết sâu sắc có thể hành động

Dưới đây là một số hiểu biết sâu sắc chính từ dự án này sẽ giúp các nhóm xây dựng chiến lược quan sát của họ.

  • Siêu dữ liệu theo ngữ cảnh nên được nhúng sớm trong quá trình tạo dữ liệu đo từ xa để tạo điều kiện tương quan xuôi dòng.
  • Giao diện dữ liệu có cấu trúc **tạo ra các lớp truy vấn có cấu trúc, dựa trên API để làm cho dữ liệu đo từ xa dễ truy cập hơn.
  • AI nhận biết ngữ cảnh **tập trung phân tích vào dữ liệu giàu ngữ cảnh để cải thiện độ chính xác và mức độ liên quan.
  • Các phương pháp làm phong phú ngữ cảnh và AI nên được tinh chỉnh thường xuyên bằng cách sử dụng phản hồi hoạt động thực tế.

Kết luận

Sự kết hợp của các đường dẫn dữ liệu có cấu trúc và AI hứa hẹn rất nhiều cho khả năng quan sát. Chúng ta có thể chuyển đổi dữ liệu đo từ xa rộng lớn thành thông tin chi tiết có thể hành động bằng cách tận dụng các giao thức có cấu trúc như MCP và phân tích dựa trên AI, dẫn đến các hệ thống chủ động hơn là phản ứng. Lumigo xác định ba trụ cột của khả năng quan sát — nhật ký, số liệudấu vết — rất cần thiết. Nếu không tích hợp, các kỹ sư buộc phải tương quan thủ công các nguồn dữ liệu khác nhau, làm chậm phản hồi sự cố.

Cách chúng ta tạo ra dữ liệu đo từ xa đòi hỏi những thay đổi cấu trúc cũng như các kỹ thuật phân tích để trích xuất ý nghĩa.

Pronnoy Goswami là một chuyên gia về đám mây, cơ sở hạ tầng AI và các hệ thống phân tán.

Recommended for You

Lời hứa về cơ hội của AI che giấu một thực tế về sự dịch chuyển có quản lý

Lời hứa về cơ hội của AI che giấu một thực tế về sự dịch chuyển có quản lý

Bài viết này thảo luận về cách lời hứa về cơ hội của AI che giấu một thực tế về sự dịch chuyển có quản lý.

Các 'vector nhân vật' mới từ Anthropic cho phép bạn giải mã và điều khiển tính cách của một LLM

Các 'vector nhân vật' mới từ Anthropic cho phép bạn giải mã và điều khiển tính cách của một LLM

Anthropic giới thiệu 'persona vectors' để giải mã và điều khiển tính cách của LLM, mở ra những khả năng mới trong việc định hình hành vi của AI.