Observability API は Kubernetes カスタム リソースを使用し、ロギングとモニタリングのリソースのプロビジョニングと管理に Kubernetes Resource Model(KRM)を使用します。
Observability API を使用して、特定の組織またはカスタム プロジェクトのオブザーバビリティ サービスのライフサイクルを管理します。オブザーバビリティ サービスのライフサイクルには、インストール、アップグレード、アンインストールなどのオペレーションが含まれます。管理するオブザーバビリティ サービスに応じて、カスタム リソースをプロジェクトにデプロイする必要があります。
プロビジョニングされたプロジェクトでは、ロギング、モニタリング、アラートなど、多くのオブザーバビリティ サービスが自動的に利用可能になります。
サービス エンドポイント
次の URL は、オブザーバビリティ KRM API の 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 サーバーのエンドポイントに置き換えます。
ディスカバリ ドキュメント
kubectl proxy --port=8001 コマンドを使用して、ローカルマシンの API サーバーへのプロキシを開きます。ディスカバリ ドキュメントには、次のいずれかの 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
サンプル リソース
このセクションでは、オブザーバビリティ KRM API を使用するリソースの例を示します。
ロギング グループ
次の例は、project-1 プロジェクトの特定のサービスからログを収集する LoggingTarget カスタム リソースの例です。
# 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
モニタリング グループ
次の例は、project-1 プロジェクトのワークロードから指標を収集する MonitoringTarget カスタム リソースです。
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
オブザーバビリティ グループ
次に、platform-obs プロジェクト Namespace のダッシュボードのストレージ サイズを更新する ObservabilityPipeline カスタム リソースの例を示します。
# 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.
...