הגדרה ב-Google Kubernetes Engine

יש שתי דרכים לשלוח שגיאות מהאפליקציות שלכם ב-Google Kubernetes Engine אל Error Reporting:

שימוש ברישום ביומן כדי לדווח על שגיאות

סוכן הרישום ביומן ברירת המחדל של GKE מספק פתרון מנוהל לפריסה ולניהול של הסוכנים ששולחים את היומנים של האשכולות ל-Cloud Logging. המבנה של הסוכן תלוי בגרסה של האשכול. מידע על הסוכן הזה זמין במאמר בנושא ניהול יומנים ב-GKE.

Error Reporting דורש שחריגים או עקבות מחסנית ייכללו ברשומת יומן אחת. רוב סוכני הרישום יכולים לזהות שכמה שורות ביומן – מסגרות סטאק שמודפסות כל אחת בשורה חדשה – מייצגות דוח קריסות, ולשלוח אותן ל-Cloud Logging כרשומה אחת ביומן. אם הסוכן לא יכול לשחזר כמה שורות כשגיאה אחת, צריך להשתמש בנקודת קצה ל-API‏ projects.events.report, שמאפשרת לשלוט בתוכן של שגיאה.

שימוש ב-Error Reporting API כדי לכתוב שגיאות

‫Error Reporting API מספק נקודת קצה report לכתיבת מידע על שגיאות לשירות.

  1. מפעילים את Error Reporting API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    להפעלת ה-API

  2. אפשר לדווח על שגיאות ל-API באמצעות API בארכיטקטורת REST או ספריית לקוח.

    • ‫API בארכיטקטורת REST

      מידע על ה-API מופיע במאמרי העזרה.

    • שימוש בספריות לקוח

      קיימות ספריות במספר מוגבל של שפות שיעזרו לכם לקרוא ל-Error Reporting API מהאפליקציה:

דוגמאות

ASP.NET

חבילת ה-NuGet של ASP.NET מדווחת על חריגים שלא זוהו מאפליקציות אינטרנט של ASP.NET אל Error Reporting.

התקנת חבילת NuGet

כדי להתקין את חבילת Stackdriver ASP.NET NuGet ב-Visual Studio:

  1. לוחצים לחיצה ימנית על הפתרון ובוחרים באפשרות Manage NuGet packages for solution (ניהול חבילות NuGet לפתרון).
  2. מסמנים את תיבת הסימון Include prerelease (הכללת גרסת טרום-הפצה).
  3. מחפשים את החבילה בשם Google.Cloud.Diagnostics.AspNet ומתקינים אותה.

Usage

אחרי שמתקינים את חבילת Stackdriver ASP.NET NuGet, מוסיפים את ההצהרה הבאה לקוד האפליקציה כדי להתחיל לשלוח שגיאות ל-Stackdriver:

using Google.Cloud.Diagnostics.AspNet;

כדי להפעיל את הדיווח על חריגים, מוסיפים את הקוד HttpConfiguration הבא לשיטה Register של אפליקציית האינטרנט שלכם ב-‎.NET אחרי שמחליפים את your-project-id במזהה הפרויקט בפועל:

public static void Register(HttpConfiguration config)
{
    string projectId = "YOUR-PROJECT-ID";
    string serviceName = "NAME-OF-YOUR-SERVICE";
    string version = "VERSION-OF-YOUR-SERVCICE";
    // ...
    // Add a catch all for the uncaught exceptions.
    config.Services.Add(typeof(IExceptionLogger),
        ErrorReportingExceptionLogger.Create(projectId, serviceName, version));
    // ...
}

אחרי שמוסיפים את השיטה הזו לאפליקציית ASP.NET, אפשר לראות את כל החריגים שלא נתפסו שמתרחשים בזמן שהם מדווחים ל- Google Cloudבקטע Error Reporting במסוף Google Cloud .

C#‎

הדוגמה הבאה מופיעה במאגר GoogleCloudPlatform/dotnet-docs-samples. כדי להשתמש בו, אחרי שיוצרים את הפרויקט, מציינים את מזהה הפרויקט:

C:\...\bin\Debug> set GOOGLE_PROJECT_ID=[YOUR_PROJECT_ID]

חשוב להקפיד להחליף את [YOUR_PROJECT_ID] בערך הנכון מהמסוףGoogle Cloud .

לאחר מכן, שולחים נתוני חריגים באמצעות קוד שדומה לקוד הבא:

public class ErrorReportingSample
{
    public static void Main(string[] args)
    {
        try
        {
            throw new Exception("Generic exception for testing Stackdriver Error Reporting");
        }
        catch (Exception e)
        {
            report(e);
            Console.WriteLine("Stackdriver Error Report Sent");
        }
    }

    /// <summary>
    /// Create the Error Reporting service (<seealso cref="ClouderrorreportingService"/>)
    /// with the Application Default Credentials and the proper scopes.
    /// See: https://developers.google.com/identity/protocols/application-default-credentials.
    /// </summary>
    private static ClouderrorreportingService CreateErrorReportingClient()
    {
        // Get the Application Default Credentials.
        GoogleCredential credential = GoogleCredential.GetApplicationDefaultAsync().Result;

        // Add the needed scope to the credentials.
        credential.CreateScoped(ClouderrorreportingService.Scope.CloudPlatform);

        // Create the Error Reporting Service.
        ClouderrorreportingService service = new ClouderrorreportingService(new BaseClientService.Initializer
        {
            HttpClientInitializer = credential,
        });
        return service;
    }

    /// <summary>
    /// Creates a <seealso cref="ReportRequest"/> from a given exception.
    /// </summary>
    private static ReportRequest CreateReportRequest(Exception e)
    {
        // Create the service.
        ClouderrorreportingService service = CreateErrorReportingClient();

        // Get the project ID from the environement variables.
        string projectId = Environment.GetEnvironmentVariable("GOOGLE_PROJECT_ID");

        // Format the project id to the format Error Reporting expects. See:
        // https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events/report
        string formattedProjectId = string.Format("projects/{0}", projectId);

        // Add a service context to the report.  For more details see:
        // https://cloud.google.com/error-reporting/reference/rest/v1beta1/projects.events#ServiceContext
        ServiceContext serviceContext = new ServiceContext()
        {
            Service = "myapp",
            Version = "8c1917a9eca3475b5a3686d1d44b52908463b989",
        };
        ReportedErrorEvent errorEvent = new ReportedErrorEvent()
        {
            Message = e.ToString(),
            ServiceContext = serviceContext,
        };
        return new ReportRequest(service, errorEvent, formattedProjectId);
    }

    /// <summary>
    /// Report an exception to the Error Reporting service.
    /// </summary>
    private static void report(Exception e)
    {
        // Create the report and execute the request.
        ReportRequest request = CreateReportRequest(e);
        request.Execute();
    }
}

המשך

הגדרת Error Reporting ל-Go

Java

הוראות להגדרת Error Reporting ב-Java

Node.js

הגדרת Error Reporting ל-Node.js

Ruby

אפשר לקרוא על הגדרת Error Reporting עבור Ruby.

Python

הוראות להגדרת Error Reporting ב-Python

PHP

הגדרת Error Reporting ל-PHP

הצגת קבוצות של שגיאות

נכנסים לדף Error Reporting במסוף Google Cloud :

עבור אל Error Reporting

אפשר גם להשתמש בסרגל החיפוש כדי למצוא את הדף הזה.