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
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
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
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)
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
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
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.
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!