L'appliance Google Distributed Cloud (GDC) con air gap consente di eseguire lo scraping e raccogliere le metriche dai tuoi workload nel tempo per monitorare le prestazioni delle applicazioni e mantenere l'osservabilità dei dati. Per avviare la raccolta delle metriche, esegui il deployment di una risorsa personalizzata MonitoringTarget nello spazio dei nomi del progetto sul server API di gestione.
La risorsa personalizzata MonitoringTarget indica alla pipeline di monitoraggio di eseguire lo scraping dei pod designati che espongono un endpoint HTTP in un formato di esposizione Prometheus, come OpenMetrics. Puoi personalizzare la frequenza di scraping, le impostazioni degli endpoint, le etichette e le annotazioni per i pod di destinazione. L'istanza Grafana del tuo progetto visualizza le metriche raccolte in modo da poter analizzare lo stato operativo della tua applicazione.
Prima di iniziare
Per gestire le risorse personalizzate MonitoringTarget, richiedi le autorizzazioni necessarie all'amministratore.
Ruoli IAM richiesti
Contatta l'amministratore IAM del progetto per richiedere i seguenti ruoli:
- MonitoringTarget Creator (
monitoringtarget-creator): crea risorse personalizzateMonitoringTargetnello spazio dei nomi del progetto. - MonitoringTarget Editor (
monitoringtarget-editor): modifica o elimina le risorse personalizzateMonitoringTargetnello spazio dei nomi del progetto. - MonitoringTarget Viewer (
monitoringtarget-viewer): visualizza le risorse personalizzateMonitoringTargetnello spazio dei nomi del progetto.
Configura la risorsa personalizzata MonitoringTarget
La risorsa personalizzata MonitoringTarget indica alla piattaforma di monitoraggio da dove raccogliere le metriche. Puoi specificare i pod per i quali raccogli le metriche, l'endpoint delle metriche di questi pod, la frequenza di scraping e qualsiasi altra impostazione aggiuntiva.
Questa risorsa definisce le seguenti configurazioni:
- Target: i pod e i relativi endpoint all'interno del progetto che espongono le metriche.
- Intervallo di scraping: la frequenza con cui vuoi estrarre le metriche dagli endpoint selezionati.
- Personalizzazioni delle etichette: regole facoltative con eventuali modifiche alle etichette per le metriche.
Scegli uno dei seguenti metodi per specificare gli endpoint delle metriche nella risorsa personalizzata MonitoringTarget:
- Endpoint statici: dichiari esplicitamente l'endpoint (porta, percorso, schema) nella configurazione di
MonitoringTarget. Annotazioni: le informazioni sull'endpoint delle metriche del pod vengono recuperate dalle annotazioni all'interno del file
Deploymentdel container. Questo metodo offre una maggiore flessibilità se ogni pod ha endpoint diversi.
Endpoint statici
Segui questi passaggi per esporre le metriche dei pod selezionati su un endpoint definito staticamente:
Determina il progetto dell'appliance GDC con air gap da cui vuoi raccogliere le metriche per il monitoraggio.
Nella specifica del pod, dichiara la porta che fornisce le metriche nel campo
containerPort. L'esempio seguente mostra come dichiarare la porta2112nella specifica del pod:# ... spec: template: spec: containers: - name: your-container-name ports: - containerPort: 2112 # ...Nella configurazione di
MonitoringTarget, specifica i dettagli dell'endpoint (porta, percorso, schema) nella sezionepodMetricsEndpointsin modo che corrispondano alla porta esposta nella specifica del pod.Il seguente file YAML mostra un esempio di configurazione
MonitoringTargetin cui ogni pod selezionato deve esporre le metriche sullo stesso endpoint,http://your-container-name:2112/metrics:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: # Choose pod labels to consider for this job. # Optional: Map of key-value pairs. # Default: No filtering by label. # To consider every pod in the project namespace, remove selector fields. matchLabels: app: your-app-label podMetricsEndpoints: port: value: 2112 path: # Choose any value for your endpoint. # The /metrics value is an example. value: /metrics scheme: value: httpApplica la configurazione
MonitoringTargetal server dell'API di gestione all'interno dello stesso spazio dei nomi dei pod di destinazione:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yamlSostituisci quanto segue:
KUBECONFIG_PATH: il percorso del file kubeconfig per il server API di gestione.MONITORING_TARGET_NAME: il nome del file di definizioneMonitoringTarget.
La piattaforma di monitoraggio inizia a raccogliere le metriche.
Annotazioni
Segui questi passaggi per esporre le metriche utilizzando le annotazioni se ogni pod ha endpoint diversi:
Determina il progetto dell'appliance GDC con air gap da cui vuoi raccogliere le metriche per il monitoraggio.
Aggiungi le seguenti annotazioni alla sezione
annotationsdel fileDeploymentdel container:prometheus.io/pathprometheus.io/portprometheus.io/scheme
L'esempio seguente mostra le annotazioni per le metriche sulla porta
2112:apiVersion: apps/v1 kind: Deployment metadata: name: your-container-name namespace: your-project-namespace labels: app: your-app-label annotations: # These annotations are not required. They demonstrate selecting # pod metric endpoints through annotations. prometheus.io/path: /metrics prometheus.io/port: \"2112\" prometheus.io/scheme: httpNella configurazione di
MonitoringTarget, specifica le annotazioni che hai aggiunto al fileDeploymentdel container nella sezionepodMetricsEndpoints. Questa specifica indica alla risorsa personalizzata di raccogliere le informazioni sull'endpoint delle metriche dalle annotazioni sui pod selezionati.Il seguente file YAML mostra un esempio di configurazione di
MonitoringTargetche utilizza le annotazioni:apiVersion: monitoring.gdc.goog/v1 kind: MonitoringTarget metadata: metadata: # Choose the same namespace as the workload pods. namespace: your-project-namespace name: your-container-name spec: selector: matchLabels: app: your-app-label podMetricsEndpoints: port: annotation: prometheus.io/port path: annotation: prometheus.io/path scheme: annotation: prometheus.io/schemeApplica la configurazione
MonitoringTargetal server dell'API di gestione all'interno dello stesso spazio dei nomi dei pod di destinazione:kubectl --kubeconfig KUBECONFIG_PATH apply -f MONITORING_TARGET_NAME.yamlSostituisci quanto segue:
KUBECONFIG_PATH: il percorso del file kubeconfig per il server API di gestione.MONITORING_TARGET_NAME: il nome del file di definizioneMonitoringTarget.
La piattaforma di monitoraggio inizia a raccogliere le metriche.
Consulta la specifica MonitoringTarget completa
e la documentazione di riferimento dell'API
per ulteriori campi e opzioni.
Specifica MonitoringTarget completa
Il seguente file YAML mostra un esempio della specifica completa della risorsa personalizzata MonitoringTarget. Per ulteriori informazioni e una descrizione completa dei campi, consulta la documentazione di riferimento dell'API.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
metadata:
# Choose the same namespace as the workload pods.
namespace: PROJECT_NAMESPACE
name: MONITORING_TARGET_NAME
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 a port either through static value or annotation.
# Optional
# Annotation takes priority.
# Default: static port 80
port:
value: integer
annotation: string
# Choose a path either through static value or annotation.
# Optional
# Annotation takes priority
# Default: static path /metrics
path:
value: string
annotation: string
# Choose a scheme either through a 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
Sostituisci quanto segue:
PROJECT_NAMESPACE: lo spazio dei nomi del progetto.MONITORING_TARGET_NAME: il nome del file di definizioneMonitoringTarget.