איסוף יומנים מתהליכי העבודה

איסוף יומנים במכשיר Google Distributed Cloud (GDC)‎ עם air gap מאפשר לכם לצבור אירועים תפעוליים מתהליכי העבודה שלכם לצורך מעקב ופתרון בעיות. פורסים LoggingTarget משאב בהתאמה אישית במרחב השמות של הפרויקט ב-Management API server כדי לשלוף, להוסיף לאינדקס ולתייג יומנים מרכיבי השירות.

אחרי שמגדירים את איסוף היומנים, אפשר לשלוח שאילתות ליומנים ולצפות בהם בממשק המשתמש של Grafana. המלצות למכשור מפורטות בהנחיות לרישום ביומן של Kubernetes.

לפני שמתחילים

כדי לקבל את ההרשאות שדרושות לניהול משאבים בהתאמה אישית של LoggingTarget, צריך לבקש מהאדמין של הארגון או של הפרויקט ב-IAM להקצות לכם את אחד מהתפקידים שמשויכים ל-LoggingTarget.

בהתאם לרמת הגישה וההרשאות שאתם צריכים, אתם יכולים לקבל תפקידי יוצר, עריכה או צפייה במשאב הזה בארגון או בפרויקט. מידע נוסף זמין במאמר הכנת הרשאות IAM.

  • מפעילי אפליקציות: כדי לקבל את ההרשאות שנדרשות לניהול משאבים מותאמים אישית של LoggingTarget בפרויקט בשרת ה-API לניהול, צריך לבקש מהאדמין של Project IAM להקצות לכם את אחד מהתפקידים הבאים במרחב השמות של הפרויקט:

    • ‫LoggingTarget Creator: יוצר משאבים בהתאמה אישית של LoggingTarget. מבקשים את התפקיד "יצירת LoggingTarget"‏ (loggingtarget-creator).
    • עורך LoggingTarget: עורך או משנה משאבים בהתאמה אישית של LoggingTarget. מבקשים את התפקיד "עריכת יעדי רישום ביומן" (loggingtarget-editor).
    • צפייה ב-LoggingTarget: צפייה במשאבים בהתאמה אישית של LoggingTarget. מבקשים את התפקיד "צפייה ביעדי רישום ביומן" (loggingtarget-viewer).
  • מנהלי פלטפורמה: כדי לקבל את ההרשאות שנדרשות לניהול משאבים בהתאמה אישית של LoggingTarget במרחב השמות platform-obs בשרת ה-API לניהול, צריך לבקש מהאדמין של הארגון ב-IAM להקצות לכם את אחד מהתפקידים הבאים באשכול במרחב השמות platform-obs:

    • ‫LoggingTarget PA Creator: יוצר משאבים בהתאמה אישית של LoggingTarget. מבקשים את תפקיד האשכול LoggingTarget PA Creator (loggingtarget-pa-creator).
    • עורך LoggingTarget PA: עורך או משנה משאבים מותאמים אישית של LoggingTarget. מבקשים את התפקיד LoggingTarget PA Editor (loggingtarget-pa-editor)‎ באשכול.
    • LoggingTarget PA Viewer: צפייה במשאבים בהתאמה אישית של LoggingTarget. מבקשים את התפקיד LoggingTarget PA Viewer (loggingtarget-pa-viewer)‎ באשכול.

איסוף יומני פעילות

ביומנים תפעוליים מתועדים תנאים, שינויים ופעולות שמתרחשים בזמן שאתם מנהלים פעולות שוטפות באפליקציות ובשירותים ב-GDC. פורסים את המשאב המותאם אישית LoggingTarget בשרת Management API כדי להגדיר את צינור עיבוד הנתונים של רישום ביומן המערכת לאיסוף יומני תפעול משירותים ספציפיים ברמת הפרויקט.

כדי לאסוף יומני פעילות תפעולית משירות מסוים:

  1. מגדירים את המשאב המותאם אישית LoggingTarget בשרת Management API, ומציינים את ה-Pods שנבחרו לאיסוף יומני הפעילות, את מרחב השמות של הפרויקט והגדרות נוספות. כדי ללמוד איך LoggingTarget צריך להיראות, קראו את המאמר הגדרת המשאב המותאם אישית של LoggingTarget.
  2. פורסים את המשאב המותאם אישית LoggingTarget במרחב השמות של הפרויקט בשרת Management API:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f LOGGING_TARGET_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫MANAGEMENT_API_SERVER: הנתיב של kubeconfig לשרת Management API באזור.
    • ‫LOGGING_TARGET_NAME: השם של המשאב בהתאמה אישית של LoggingTarget, למשל my-service-logging-target.yaml.

    הצינור מתחיל לאסוף יומנים מהרכיבים הנוספים של הפרויקט.

  3. שליחת שאילתות ליומנים ממכונה של Grafana בפרויקט. מידע נוסף זמין במאמר שליחת שאילתות והצגת יומנים.

להשתמש בתכונה המובנית של Grafana לקידוד צבעים, כדי להבדיל בין רמות שונות של יומני השירות. מידע נוסף על הגדרת ערכים של רמות יומנים זמין בכתובת https://grafana.com/docs/grafana/latest/explore/logs-integration/.

הגדרת המשאב בהתאמה אישית LoggingTarget

המשאב המותאם אישית LoggingTarget מורה לצינור עיבוד הנתונים של הרישום ביומן לאסוף יומנים משירותים ספציפיים בפרויקט GDC. אתם יכולים לציין את היעדים שאתם אוספים בשבילם יומנים, מנתח יומנים, רמות גישה והגדרות נוספות.

המשאב הזה מגדיר את ההגדרות הבאות:

  • ‫Targets: הקריטריונים לבחירת ה-pods והקונטיינרים שמהם רוצים לאסוף את היומנים. אפשר לציין שמות של אשכולות, קידומות של שמות Pods וקידומות של שמות קונטיינרים.
  • מנתח יומנים: מנתח מוגדר מראש שמפרש רשומות ביומן, ממפה פלטים של יומנים לתוויות ומחלץ שדות רלוונטיים.
  • זיהוי השירות: שם השירות שמופיע כתווית ברשומות ביומן, כדי שיהיה קל יותר לזהות ולסנן אותן.
  • הרשאה: רמת הגישה לרשומות ביומן, שקובעת מי יכול לראות את היומנים שנאספו.

הגדרת הפרמטרים האלה במשאב המותאם אישית LoggingTarget מאפשרת לכם לשלוט באופן מדויק באיסוף ובארגון של היומנים מהשירותים שלכם.

כדי לאסוף יומני פעילות תפעולית משירות מסוים:

  1. בוחרים את הפרויקט ב-GDC שממנו רוצים לאסוף את היומנים.
  2. בהגדרות של LoggingTarget, מציינים את ה-pods לאיסוף יומני הפעילות, את מרחב השמות של הפרויקט והגדרות נוספות.

    קובץ ה-YAML הבא מציג דוגמה להגדרה של LoggingTarget ב-my-project-namespace, שבה התחילית של שם ה-Pod לאיסוף היומנים היא my-pod-prefix, רמת הגישה לרשומות ביומן ניתנת למפעילי אפליקציות (ao), שם השירות הוא my-service-name והפורמט של היומן הוא JSON:

    # Configures a log scraping job
    apiVersion: logging.gdc.goog/v1
    kind: LoggingTarget
    metadata:
      # Choose a namespace that matches the namespace of the workload pods.
      namespace: my-project-namespace
      name: my-service-logging-target
    spec:
      selector:
        matchPodNames:
          - my-pod-prefix
      parser: json
      logAccessLevel: ao
      serviceName: my-service-name
    

    כדי לראות שדות ואפשרויות נוספים, עיינו במפרט המלא של LoggingTarget ובמאמרי העזרה של ה-API.

  3. מחילים את ההגדרה LoggingTarget על שרת Management API באותו מרחב שמות כמו של פודי היעד:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_TARGET_NAME.yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API.
    • ‫LOGGING_TARGET_NAME: השם של קובץ ההגדרה של LoggingTarget, למשל my-service-logging-target.

    צינור עיבוד הנתונים של הרישום ביומן מתחיל לאסוף יומנים מהרכיבים הנוספים של הפרויקט.

אתם יכולים לשלוח שאילתות על היומנים שנאספו באמצעות ממשק המשתמש של Grafana או באמצעות Log Query API. איך שולחים שאילתות וצופים ביומנים?

אם אתם משתמשים ב-Grafana כדי לשלוח שאילתות ליומנים, אתם יכולים להשתמש בתכונה המובנית של קידוד צבעים לרמות שונות של יומני השירות. מידע נוסף על הגדרת ערכים של רמות יומנים זמין בכתובת https://grafana.com/docs/grafana/latest/explore/logs-integration/.

המפרט המלא של LoggingTarget

קובץ ה-YAML הבא מציג דוגמה למפרט המלא של המשאב המותאם אישית LoggingTarget. למידע נוסף ולתיאור מלא של השדות, קראו את מאמרי העזרה של ה-API.

# Configures a log scraping job
apiVersion: logging.gdc.goog/v1
kind: LoggingTarget
metadata:
  # Choose a namespace that matches the namespace of the workload pods.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_TARGET_NAME
spec:
  # Choose a matching pattern that identifies the pods for this job.
  # Optional.
  # Relationship between different selectors: 'AND'
  selector:
    # The clusters to collect logs from.
    # The default configuration is to collect logs from all clusters.
    # The relationship between different clusters is an 'OR' relationship.
    # Optional
    matchClusters:
    - my-cluster
    - another-cluster

    # The pod name prefixes to collect logs from.
    # The logging platform scrapes all pods with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchPodNames:
      - my-pod-prefix
      - another-pod-prefix

    # The container name prefixes to collect logs from.
    # The logging platform scrapes all containers with names
    # that start with the specified prefixes.
    # The values must contain '[a-z0-9-]' characters only.
    # The relationship between different list elements is an 'OR' relationship.
    # Optional.
    matchContainerNames:
      - my-container-prefix
      - another-container-prefix

  # Choose the predefined parser for log entries.
  # Use parsers to map the log output to labels and extract fields.
  # Specify the log format.
  # Optional.
  # Options: klog_text, klog_json, klogr, gdch_json, json
  parser: klog_text

  # Specify an access level for log entries.
  # The default value is 'ao'.
  # Optional.
  # Options: ao, pa, io
  logAccessLevel: ao

  # Specify a service name to be applied as a label.
  # For user workloads consider this field as a workload name.
  # Required.
  serviceName: my-service-name

  # The additional static fields to apply to log entries.
  # The field is a key-value pair, where the field name is the key and
  # the field value is the value.
  # Optional.
  additionalFields:
    app: workload2
    key: value

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_NAMESPACE: מרחב השמות של הפרויקט.
  • ‫LOGGING_TARGET_NAME: השם של קובץ ההגדרה של LoggingTarget.