Cette page explique comment Google Distributed Cloud connecté enregistre différents types d'informations sur son fonctionnement et comment les afficher. La collecte de certains types de journaux et de métriques entraîne des frais supplémentaires. Pour en savoir plus, consultez la section Facturation des journaux et des métriques.
Configurer la journalisation et la surveillance
Avant de pouvoir commencer à collecter des journaux et des métriques, vous devez procéder comme suit :
Activez les API de journalisation à l'aide des commandes suivantes :
gcloud services enable opsconfigmonitoring.googleapis.com --project PROJECT_ID gcloud services enable logging.googleapis.com --project PROJECT_ID gcloud services enable monitoring.googleapis.com --project PROJECT_ID
Remplacez
PROJECT_IDpar l'ID du projet cible. Google CloudAttribuez les rôles requis pour écrire des journaux et des métriques :
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/opsconfigmonitoring.resourceMetadata.writer \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/metadata-agent]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/logging.logWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver-log-forwarder]" gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/monitoring.metricWriter \ --member "serviceAccount:PROJECT_ID.svc.id.goog[kube-system/gke-metrics-agent]"Remplacez
PROJECT_IDpar l'ID du projet cible. Google Cloud
Journaux
Cette section répertorie les types de ressources Cloud Logging compatibles avec Distributed Cloud. Pour afficher les journaux Distributed Cloud, utilisez l'explorateur de journaux dans la Google Cloud console. La journalisation Distributed Cloud est toujours activée.
Les types de ressources enregistrés Distributed Cloud connecté sont les ressources Kubernetes standards suivantes :
k8s_containerk8s_node
Vous pouvez également capturer et récupérer les journaux Distributed Cloud connecté à l'aide de l'API Cloud Logging. Pour savoir comment configurer ce mécanisme de journalisation, consultez la documentation des bibliothèques clientes Cloud Logging.
Métriques
Cette section répertorie les métriques Cloud Monitoring compatibles avec Distributed Cloud. Pour afficher les métriques Distributed Cloud, utilisez l' explorateur de métriques dans la Google Cloud console.
Métriques de cluster Distributed Cloud connecté
Pour les clusters Distributed Cloud connecté, Distributed Cloud connecté fournit les types de métriques suivants générés par les nœuds Distributed Cloud connecté :
- Les métriques sur les ressources fournissent des informations sur les performances des nœuds et des pods Distributed Cloud connecté, telles que la charge du processeur et l'utilisation de la mémoire.
- Les métriques d'application système fournissent des informations sur les charges de travail du système Distributed Cloud connecté, telles que
coredns.
Pour obtenir la liste de ces métriques, consultez la page Métriques Google Distributed Cloud et Google Distributed Cloud.
Distributed Cloud connecté ne fournit pas de métriques générées par les plans de contrôle Kubernetes associés aux clusters Distributed Cloud connecté.
Métriques matérielles Distributed Cloud connecté
Distributed Cloud connecté fournit des métriques pour le matériel Distributed Cloud connecté à l'aide des types de ressources suivants :
edgecontainer.googleapis.com/Machineedgecontainer.googleapis.com/Rack
Métriques de ressource Machine
Distributed Cloud connecté écrit les métriques d'API Cloud Monitoring suivantes pour la ressource edgecontainer.googleapis.com/Machine :
| Métrique | Description |
|---|---|
/machine/cpu/total_cores
|
Nombre total de cœurs de processeur physiques présents sur la machine. |
/machine/cpu/usage_time
|
Temps d'utilisation cumulé du processeur pour tous les cœurs de la machine. Le type peut être
workload (charges de travail client)
ou system (tout le reste). |
/machine/cpu/utilization
|
Pourcentage d'utilisation du processeur sur la machine. La plage de valeurs s'étend de 0 à 1. Le type peut être
workload (charges de travail client)
ou system (tout le reste). |
/machine/memory/total_bytes
|
Nombre d'octets de mémoire totale sur la machine. |
/machine/memory/used_bytes
|
Nombre d'octets de mémoire utilisée sur la machine. memory_type est
soit evictable (récupérable par le noyau) soit
non-evictable (non récupérable). |
/machine/memory/utilization
|
Pourcentage d'utilisation de la mémoire sur la machine. La plage de valeurs s'étend de 0 à 1.
memory_type est evictable (récupérable
par le noyau) ou non-evictable (non récupérable). |
/machine/network/up
|
Indique si l'interface réseau est opérationnelle. Inclut les cartes primaires, les cartes secondaires et les ports. |
/machine/network/link_speed
|
Vitesse de liaison de la carte d'interface réseau principale. |
/machine/network/received_bytes_count
|
Nombre d'octets reçus pour la carte d'interface réseau principale. |
/machine/network/sent_bytes_count
|
Nombre d'octets envoyés pour la carte d'interface réseau principale. |
/machine/network/connectivity
|
Indique si la carte d'interface réseau principale dispose d'une connectivité Internet. |
/machine/disk/total_bytes
|
Nombre d'octets d'espace disque total sur la machine. |
/machine/disk/used_bytes
|
Nombre d'octets d'espace disque utilisé sur la machine. |
/machine/disk/utilization
|
Pourcentage d'utilisation de l'espace disque sur la machine. La plage de valeurs s'étend de 0 à 1. |
/machine/restart_count
|
Nombre de redémarrages effectués par la machine. |
/machine/uptime
|
Temps de disponibilité de la machine depuis le dernier redémarrage. |
/machine/connected
|
Indique si la machine est connectée à Google Cloud. |
Métriques de ressource Rack
Distributed Cloud connecté écrit les métriques d'API Cloud Monitoring suivantes pour la ressource edgecontainer.googleapis.com/Rack :
| Métrique | Description |
|---|---|
/router/bgp_up
|
Indique si la session d'appairage BGP sur le routeur est active et
saine.
router_id identifie le routeur spécifique (jusqu'à deux par rack). |
/router/connected
|
Indique si le routeur BGP est connecté à Google Cloud.
router_id identifie le routeur spécifique (jusqu'à deux par rack). |
Exporter des journaux et des métriques d'application personnalisés
Distributed Cloud connecté exporte automatiquement les journaux des applications exécutées sur les charges de travail Distributed Cloud connecté. Pour exporter les métriques d'une application exécutée sur des charges de travail Distributed Cloud connecté, vous devez l'annoter comme décrit dans la section suivante.
Annoter la charge de travail pour activer l'exportation des métriques
Pour activer la collecte de métriques personnalisées à partir d'une application, ajoutez les annotations suivantes au fichier manifeste de service ou de déploiement de l'application :
prometheus.io/scrape: "true"prometheus.io/path: "ENDPOINT_PATH". RemplacezENDPOINT_PATHpar le chemin complet du point de terminaison de métrique de l'application cible.prometheus.io/port: "PORT_NUMBER": port sur lequel le point de terminaison de métrique de l'application écoute les connexions.
Exécuter un exemple d'application
Dans cette section, vous allez créer une application qui écrit des journaux personnalisés et expose un point de terminaison de métrique personnalisé.
Enregistrez les fichiers manifeste de service et de déploiement suivants dans un fichier nommé
my-app.yaml. Notez que le service possède l'annotationprometheus.io/scrape: "true":kind: Service apiVersion: v1 metadata: name: "monitoring-example" namespace: "default" annotations: prometheus.io/scrape: "true" spec: selector: app: "monitoring-example" ports: - name: http port: 9090 --- apiVersion: apps/v1 kind: Deployment metadata: name: "monitoring-example" namespace: "default" labels: app: "monitoring-example" spec: replicas: 1 selector: matchLabels: app: "monitoring-example" template: metadata: labels: app: "monitoring-example" spec: containers: - image: gcr.io/google-samples/prometheus-dummy-exporter:latest name: prometheus-example-exporter imagePullPolicy: Always command: - /bin/sh - -c - ./prometheus-dummy-exporter --metric-name=example_monitoring_up --metric-value=1 --port=9090 resources: requests: cpu: 100mCréez le déploiement et le service :
kubectl --kubeconfig apply -f my-app.yaml
Afficher les journaux d'application
Console
Dans la console Google Cloud , accédez à la page Explorateur de journaux.
Cliquez sur Ressource.
Dans la liste Tous les types de ressources, sélectionnez
Kubernetes Container.Dans Nom du cluster, sélectionnez le nom de votre cluster d'utilisateur.
Dans Nom de l'espace de noms, sélectionnez
default.Cliquez sur Ajouter, puis sur Exécuter la requête.
Dans la section Résultats de la requête, vous pouvez voir les entrées de journal du déploiement
monitoring-example. Exemple :{ "textPayload": "2020/11/14 01:24:24 Starting to listen on :9090\n", "insertId": "1oa4vhg3qfxidt", "resource": { "type": "k8s_container", "labels": { "pod_name": "monitoring-example-7685d96496-xqfsf", "cluster_name": ..., "namespace_name": "default", "project_id": ..., "location": "us-west1", "container_name": "prometheus-example-exporter" } }, "timestamp": "2020-11-14T01:24:24.358600252Z", "labels": { "k8s-pod/pod-template-hash": "7685d96496", "k8s-pod/app": "monitoring-example" }, "logName": "projects/.../logs/stdout", "receiveTimestamp": "2020-11-14T01:24:39.562864735Z" }
gcloud
Exécutez la commande
gcloud logging read:gcloud logging read 'resource.labels.project_id="PROJECT_ID" AND \ resource.type="k8s_container" AND resource.labels.namespace_name="default"'Remplacez
PROJECT_IDpar l'ID de votre projet.Le résultat affiche les entrées de journal du déploiement
monitoring-example. Exemple :insertId: 1oa4vhg3qfxidt labels: k8s-pod/app: monitoring-example k8s- pod/pod-template-hash: 7685d96496 logName: projects/.../logs/stdout receiveTimestamp: '2020-11-14T01:24:39.562864735Z' resource: labels: cluster_name: ... container_name: prometheus-example-exporter location: us-west1 namespace_name: default pod_name: monitoring-example-7685d96496-xqfsf project_id: ... type: k8s_container textPayload: | 2020/11/14 01:24:24 Starting to listen on :9090 timestamp: '2020-11-14T01:24:24.358600252Z'
Afficher les métriques d'application
Votre exemple d'application présente une métrique personnalisée nommée example_monitoring_up.
Vous pouvez consulter les valeurs de cette métrique dans la Google Cloud console.
Dans la Google Cloud console, accédez à la page Explorateur de métriques.
Pour Type de ressource, sélectionnez
Kubernetes Pod.Pour Métrique, sélectionnez
external/prometheus/example_monitoring_up.Le graphique montre que
example_monitoring_upa une valeur répétée de 1.
Collecter des métriques avec Prometheus
Distributed Cloud connecté est compatible avec la Prometheus pour collecter des métriques sur vos charges de travail Distributed Cloud connecté.
À cet effet, Distributed Cloud connecté crée un espace de noms non géré nommé prom-monitoring lorsque vous créez un cluster Distributed Cloud connecté.
Nous vous recommandons d'utiliser cet espace de noms pour déployer Prometheus. Vous pouvez également copier les ressources requises de l'espace de noms prom-monitoring vers l'espace de noms de votre choix et y déployer Prometheus.
Configurer la récupération des métriques Prometheus
Pour collecter des métriques Distributed Cloud connecté avec Prometheus, vous devez configurer la récupération des métriques Prometheus. Pour ce faire, installez le ConfigMap prometheus-scrape-config dans votre pod Prometheus et ajoutez la configuration de récupération du ConfigMap à votre configuration Prometheus. Exemple :
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-deployment
namespace: prom-monitoring
labels:
app: prom-monitoring
spec:
replicas: 1
selector:
matchLabels:
app: prom-monitoring
template:
metadata:
labels:
app: prom-monitoring
spec:
containers:
- name: prometheus
image: prom/prometheus:main
args:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus/"
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config-volume
mountPath: /etc/prometheus/
- name: prometheus-scrape-config-volume
mountPath: /etc/prometheus/scrape/
- name: prometheus-storage-volume
mountPath: /prometheus/
- name: prometheus-scrape-token
mountPath: /var/run/secrets/kubernetes.io/stackdriver-prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
mountPath: /certs/stackdriver-prometheus-scrape
- name: metrics-providers-ca
mountPath: /certs/metrics-providers
- name: stackdriver-prometheus-etcd-scrape
mountPath: /stackdriver-prometheus-etcd-scrape
volumes:
- name: prometheus-storage-volume
emptyDir: {}
- name: prometheus-config-volume
configMap:
defaultMode: 420
name: prometheus-config
- name: prometheus-scrape-config-volume
configMap:
defaultMode: 420
name: prometheus-scrape-config
- name: prometheus-scrape-token
secret:
defaultMode: 420
secretName: prometheus-scrape
- name: stackdriver-prometheus-scrape-cert
secret:
defaultMode: 420
secretName: stackdriver-prometheus-scrape-cert
- name: metrics-providers-ca
secret:
defaultMode: 420
items:
- key: ca.crt
path: ca.crt
secretName: metrics-providers-ca
- name: stackdriver-prometheus-etcd-scrape
secret:
defaultMode: 420
optional: true
secretName: stackdriver-prometheus-etcd-scrape
Pour collecter des métriques de charge de travail avec Prometheus, vous devez ajouter des annotations aux services et aux pods qui exécutent les charges de travail cibles comme suit :
Pour envoyer des métriques à la fois à Cloud Monitoring et à Prometheus, utilisez les annotations décrites dans Exporter des journaux et des métriques personnalisés.
Pour envoyer des métriques uniquement à Prometheus, utilisez les annotations suivantes :
prometheus.io/unmanaged_scrape: "true"
prometheus.io/unmanaged_path: "ENDPOINT_PATH"
prometheus.io/unmanaged_port: "PORT_NUMBER"
Collecter des journaux avec Kafka
Distributed Cloud connecté est compatible avec la solution Apache Kafka pour collecter des journaux sur les charges de travail exécutées sur votre déploiement Distributed Cloud connecté.
Vous devez disposer d'un déploiement Kafka fonctionnel avant de suivre les étapes de cette section. Vos agents Kafka doivent annoncer leurs écouteurs en mode PLAINTEXT. Les variables liées à SSL/SASL ne sont pas compatibles.
Pour configurer un cluster pour la journalisation Kafka, vous devez créer un fichier JSON qui configure les modules complémentaires que vous souhaitez exécuter sur le cluster. Spécifiez ce fichier lorsque vous créez un cluster à l'aide de l'option --system-addons-config. Si vous devez modifier la configuration Kafka, vous devez supprimer le cluster et le recréer avec les nouveaux paramètres Kafka.
Ajoutez la section suivante au fichier de configuration des modules complémentaires du système :
{
"systemAddonsConfig": {
"unmanagedKafkaConfig": {
"brokers": "BROKERS",
"topics": "TOPICS"
"topic_key": "TOPIC_KEY,
}
}
}
Remplacez les éléments suivants :
BROKERS: liste d'adresses IP et de paires de ports d'agent séparées par des virgules au formatip_address:port.TOPICS: liste de sujets Kafka séparés par des virgules.TOPIC_KEY: clé de sujet Kafka. Cela permet à Kafka de sélectionner un sujet s'il en existe plusieurs.
Si Kafka ne collecte pas de journaux après la création de votre cluster Distributed Cloud connecté, vérifiez les points suivants :
- Côté serveur : vérifiez les journaux d'erreurs de votre déploiement Kafka pour détecter les indications d'un problème.
- Côté client : contactez l'assistance Google pour récupérer et examiner les journaux des pods système.