Maison  >  Article  >  Tutoriel système  >  Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

WBOY
WBOYoriginal
2024-07-26 17:31:50755parcourir
Architecture de déploiement

L'image ci-dessous montre l'architecture de déploiement de cette solution, qui comprend principalement :

Utilisez Heapster pour collecter les données de performances du K8, notamment le processeur, la mémoire, le réseau, le système de fichiers, etc.

Utilisez Statsd Sink de Heapster pour envoyer des données au Metrics Store de Splunk

Utilisez les commandes de recherche et les fonctions du tableau de bord de Splunk pour surveiller les données de performances
Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

Préparation

Il y a deux choses principales à préparer au début :

Compilez la dernière image Heapster et téléchargez-la dans un référentiel d'images Docker public, tel que Docker Hub

Configurez Metrics Store et l'entrée réseau correspondante (Network Input UDP/TCP) dans Splunk

Le choix principal ici est d'utiliser UDP ou TCP comme protocole de transmission de Statsd. Ici, je recommande d'utiliser TCP. Le dernier code Heapster prend en charge différents backends, notamment log, influxdb, stackdriver, gcp monitoring, gcp logging, statsd, hawkular-metrics, wavefront, openTSDB, kafka, riemann, elasticsearch, etc. Étant donné que le Metrics Store de Splunk prend en charge le protocole statsd, il peut être facilement intégré à Heapster.

Nous devons d'abord utiliser le dernier code heapster pour compiler une image de conteneur, car l'image officielle de heapsterd sur Docker Hub est plus ancienne et ne prend pas en charge statsd. Vous devez donc le compiler vous-même.

mkdir myheapster
mkdir myheapster/src
export GOPATH=myheapster
cd myheapster/src
git clone https://github.com/kubernetes/heapster.git
cd heapster
make container

Exécutez la commande ci-dessus pour compiler la dernière image heapster.

Notez que heapster utilise le protocole udp par défaut. Si vous souhaitez utiliser TCP, vous devez modifier le code

.

https://github.com/kubernetes/heapster/blob/master/metrics/sinks/statsd/statsd_client.go

func (client *statsdClientImpl) open() error {
	var err error
	client.conn, err = net.Dial("udp", client.host)
	if err != nil {
		glog.Errorf("Failed to open statsd client connection : %v", err)
	} else {
		glog.V(2).Infof("statsd client connection opened : %+v", client.conn)
	}
	return err
}

Changez udp en tcp.

J'ai placé deux images sur docker hub, correspondant respectivement à la version udp et à la version tcp. Vous pouvez les utiliser directement

.

naughtytao/heapster-amd64:v1.5.0-beta.3 udp

naughtytao/heapster-amd64:v1.5.0-beta.4 tcp

Ensuite, vous devez configurer Metrics Store dans Splunk, reportez-vous à ce document
Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

Installer et configurer Heapster

Il est relativement facile de déployer heapster sur K8. Créez simplement le fichier de configuration yaml correspondant, puis utilisez la ligne de commande kubectl pour le créer.

Voici les fichiers de configuration du déploiement et du service :

deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: heapster
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        task: monitoring
        k8s-app: heapster
        version: v6
    spec:
      containers:
      - name: heapster
        image: naughtytao/heapster-amd64:v1.5.0-beta.3
        imagePullPolicy: Always
        command:
        - /heapster
        - --source=kubernetes:https://kubernetes.default
        - --sink=statsd:udp://ip:port?numMetricsPerMsg=1

service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    task: monitoring
    # For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
    # If you are NOT using this as an addon, you should comment out this line.
    kubernetes.io/cluster-service: 'true'
    kubernetes.io/name: Heapster
  name: heapster
  namespace: kube-system
spec:
  ports:
  - port: 80
    targetPort: 8082
  selector:
    k8s-app: heapster

Faites attention à la configuration du déploiement : l'IP est l'adresse IP ou le nom d'hôte de Splunk, et le port correspond au numéro de port d'entrée de données de Splunk. Lors de l'utilisation du protocole udp, la valeur de numMetricsPerMsg à configurer est relativement petite. Lorsque cette valeur est relativement grande, un message d'erreur trop long apparaîtra. Des valeurs plus grandes peuvent être configurées lors de l'utilisation de TCP.

Exécutez kubectl apply -f *.yaml pour déployer heapster

S'il fonctionne normalement, le journal correspondant du pod heapster est le suivant

I0117 18:10:56.054746       1 heapster.go:78] /heapster --source=kubernetes:https://kubernetes.default --sink=statsd:udp://ec2-34-203-25-154.compute-1.amazonaws.com:8124?numMetricsPerMsg=10
I0117 18:10:56.054776       1 heapster.go:79] Heapster version v1.5.0-beta.4
I0117 18:10:56.054963       1 configs.go:61] Using Kubernetes client with master "https://kubernetes.default" and version v1
I0117 18:10:56.054978       1 configs.go:62] Using kubelet port 10255
I0117 18:10:56.076200       1 driver.go:104] statsd metrics sink using configuration : {host:ec2-34-203-25-154.compute-1.amazonaws.com:8124 prefix: numMetricsPerMsg:10 protocolType:etsystatsd renameLabels:map[] allowedLabels:map[] customizeLabel:0x15fc8c0}
I0117 18:10:56.076248       1 driver.go:104] statsd metrics sink using configuration : {host:ec2-34-203-25-154.compute-1.amazonaws.com:8124 prefix: numMetricsPerMsg:10 protocolType:etsystatsd renameLabels:map[] allowedLabels:map[] customizeLabel:0x15fc8c0}
I0117 18:10:56.076272       1 heapster.go:202] Starting with StatsD Sink
I0117 18:10:56.076281       1 heapster.go:202] Starting with Metric Sink
I0117 18:10:56.090229       1 heapster.go:112] Starting heapster on port 8082
Surveillance dans Splunk

D'accord, si tout se passe normalement, heapster enverra les métriques au magasin de métriques de Splunk en utilisant le protocole et le format statsd.

Ensuite, vous pouvez utiliser les commandes mstats et mcatalog de SPL pour analyser et surveiller les données de métriques.

L'instruction de recherche suivante répertorie toutes les métriques

| mcatalog values(metric_name)

Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

L'instruction de recherche suivante répertorie l'utilisation du processeur de l'ensemble du cluster. Nous pouvons utiliser un graphique en zones ou en courbes pour visualiser les résultats de la recherche.

| mstats avg(_value) WHERE metric_name=cluster.cpu/usage_rate span=30m

Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

Utilisation de la mémoire correspondante de l'espace de noms du système Kube

| mstats avg(_value) WHERE metric_name=namespace.kube-system.memory/usage span=30m

Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

Vous pouvez placer les résultats d'analyse qui vous intéressent dans le tableau de bord et utiliser les paramètres en temps réel pour la surveillance.
Expliquer comment utiliser Splunk pour surveiller les performances de Kubernetes

D'accord, pour plus d'options d'analyse, veuillez vous référer à la documentation Splunk.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn