הגדרה ב-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, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק 'שימוש בשירות'' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    להפעלת ה-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

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