באמצעות Observability API ב-Google Distributed Cloud (GDC) עם air gap, אתם יכולים לנהל את מחזור החיים של שירותי ניטור הביצועים, כולל התקנה, שדרוגים והסרה, בארגון או בפרויקט בהתאמה אישית. ה-API משתמש במשאבים בהתאמה אישית של Kubernetes ומסתמך על מודל המשאבים של Kubernetes (KRM) כדי להקצות ולנהל משאבי רישום ביומן וניטור.
שירותי תצפית רבים, כמו רישום ביומן, מעקב והתראות, זמינים באופן אוטומטי לפרויקט שהוקצה. כדי לנהל שירותים ספציפיים, צריך לפרוס משאב בהתאמה אישית בפרויקט בהתאם לשירות התצפיתיות שרוצים להגדיר.
נקודת קצה של שירות
כתובות ה-URL הבאות הן נקודות הקצה ל-API של Observability KRM API:
קבוצת רישום ביומן:
https://MANAGEMENT_API_SERVER_ENDPOINT/apis/logging.gdc.goog/v1קבוצת מעקב:
https://MANAGEMENT_API_SERVER_ENDPOINT/apis/monitoring.gdc.goog/v1קבוצת ניראות:
https://MANAGEMENT_API_SERVER_ENDPOINT/apis/observability.gdc.goog/v1
מחליפים את MANAGEMENT_API_SERVER_ENDPOINT בנקודת הקצה של שרת Management API.
מסמך Discovery
משתמשים בפקודה kubectl proxy --port=8001 כדי לפתוח שרת proxy לשרת ה-API במחשב המקומי. משם, אתם יכולים לגשת למסמך Discovery באחת מכתובות ה-URL הבאות:
http://127.0.0.1:8001/apis/logging.gdc.goog/v1http://127.0.0.1:8001/apis/monitoring.gdc.goog/v1http://127.0.0.1:8001/apis/observability.gdc.goog/v1
משאבים לדוגמה
בקטע הזה מופיעות דוגמאות למשאבים שמשתמשים ב-Observability KRM API.
קבוצת רישום ביומן
הדוגמה הבאה היא של משאב בהתאמה אישית של LoggingTarget לאיסוף יומנים משירותים ספציפיים בפרויקט project-1:
# 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-1
name: my-service-logging-target
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.
# For example, the value '["admin", "system"]' indicates to consider
# the admin cluster 'OR' the system cluster.
# Optional
matchClusters:
- cluster-1
- cluster-2
# The pod name prefixes to collect logs from.
# The Observability 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:
- pod-1
- pod-2
# The container name prefixes to collect logs from.
# The Observability 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:
- container-1
- container-2
# 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: 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
קבוצת מעקב
הדוגמה הבאה היא משאב מותאם אישית של MonitoringTarget לאיסוף מדדים מעומסי עבודה בפרויקט project-1:
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
metadata:
# Choose the same namespace as the workload pods
namespace: project-1
name: string
spec:
# Choose matching pattern that identifies pods for this job
# Optional
# Relationship between different selectors: AND
selector:
# Choose clusters to consider for this job
# Optional
# List
# Default: All clusters applicable to this project.
# Relationship between different list elements: OR
matchClusters:
- string
# Choose pod-labels to consider for this job
# Optional: Map of key-value pairs.
# Default: No filtering by label.
# Relationship between different pairs: AND
matchLabels:
key1: value1
# Choose annotations to consider for this job
# Optional: Map of key-value pairs
# Default: No filtering by annotation
# Relationship between different pairs: AND
matchAnnotations:
key1: value1
# Configure the endpoint exposed for this job
podMetricsEndpoints:
# Choose port either via static value or annotation
# Optional
# Annotation takes priority
# Default: static port 80
port:
value: integer
annotation: string
# Choose path either via static value or annotation
# Optional
# Annotation takes priority
# Default: static path /metrics
path:
value: string
annotation: string
# Choose scheme either via static value (http or https) or annotation
# Optional
# Annotation takes priority
# Default: static scheme http
scheme:
value: string
annotation: string
# Choose the frequency to scrape the metrics endpoint defined in podMetricsEndpoints
# Optional
# Default: 60s
scrapeInterval: string
# Dynamically rewrite the label set of a target before it gets scraped.
# https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
# Optional
# Default: No filtering by label
metricsRelabelings:
- sourceLabels:
- string
separator: string
regex: string
action: string
targetLabel: string
replacement: string
קבוצת ניראות (observability)
הדוגמה הבאה ממחישה את המשאב בהתאמה אישית ObservabilityPipeline לעדכון גודל האחסון של מרכזי הבקרה במרחב השמות של הפרויקט platform-obs:
# Configure observability pipeline
apiVersion: observability.gdc.goog/v1
kind: ObservabilityPipeline
metadata:
# Don't change the namespace or name.
namespace: platform-obs
name: observability-config
spec:
...
monitoring:
grafana:
storageSize: 1Gi # Configure the new storage size for dashboards in the project.
...