Heim > Artikel > System-Tutorial > Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung
Das Bild unten zeigt die Bereitstellungsarchitektur dieser Lösung, die hauptsächlich Folgendes umfasst:
Verwenden Sie Heapster, um K8s-Leistungsdaten zu sammeln, einschließlich CPU, Speicher, Netzwerk, Dateisystem usw.
Verwenden Sie den Statsd Sink von Heapster, um Daten an den Metrics Store von Splunk zu senden
Verwenden Sie die Suchbefehle und Dashboard-Funktionen von Splunk, um Leistungsdaten zu überwachen
Zu Beginn müssen vor allem zwei Dinge vorbereitet werden:
Kompilieren Sie das neueste Heapster-Image und laden Sie es in ein öffentliches Docker-Image-Repository hoch, z. B. Docker Hub
Konfigurieren Sie den Metrics Store und die entsprechende Netzwerkeingabe (Netzwerkeingabe UDP/TCP) in Splunk
Die Hauptauswahl besteht hier darin, ob UDP oder TCP als Übertragungsprotokoll von Statsd verwendet werden soll. Hier empfehle ich die Verwendung von TCP. Der neueste Heapster-Code unterstützt verschiedene Backends, einschließlich Log, Influxdb, Stackdriver, GCP-Überwachung, GCP-Protokollierung, Statsd, Hawkular-Metrics, Wavefront, OpenTSDB, Kafka, Riemann, Elasticsearch usw. Da der Metrics Store von Splunk das statsd-Protokoll unterstützt, kann er problemlos in Heapster integriert werden.
Zuerst müssen wir den neuesten Heapster-Code verwenden, um ein Container-Image zu kompilieren, da das offizielle Image von Heapsterd auf dem Docker Hub älter ist und statsd nicht unterstützt. Sie müssen es also selbst kompilieren.
mkdir myheapster mkdir myheapster/src export GOPATH=myheapster cd myheapster/src git clone https://github.com/kubernetes/heapster.git cd heapster make container
Führen Sie den obigen Befehl aus, um das neueste Heapster-Image zu kompilieren.
Beachten Sie, dass Heapster standardmäßig das UDP-Protokoll verwendet. Wenn Sie TCP verwenden möchten, müssen Sie den Code ändern
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 }
Ändern Sie UDP in TCP.
Ich habe zwei Bilder auf dem Docker-Hub platziert, die der UDP-Version bzw. der TCP-Version entsprechen. Sie können sie direkt verwenden
naughtytao/heapster-amd64:v1.5.0-beta.3 udp
naughtytao/heapster-amd64:v1.5.0-beta.4 tcp
Dann müssen Sie den Metrics Store in Splunk konfigurieren, siehe dieses Dokument
Es ist relativ einfach, Heapster auf K8s bereitzustellen. Erstellen Sie einfach die entsprechende Yaml-Konfigurationsdatei und verwenden Sie dann die kubectl-Befehlszeile, um sie zu erstellen.
Im Folgenden sind die Konfigurationsdateien für Bereitstellung und Dienst aufgeführt:
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
Achten Sie auf die Konfiguration der Bereitstellungssenke. IP ist die IP oder der Hostname von Splunk, und Port entspricht der Portnummer der Dateneingabe von Splunk. Bei Verwendung des UDP-Protokolls ist der Wert von numMetricsPerMsg, der konfiguriert werden muss, relativ klein. Wenn dieser Wert relativ groß ist, wird ein Fehler angezeigt, der zu lang ist. Bei Verwendung von TCP können größere Werte konfiguriert werden.
Führen Sie kubectl apply -f *.yaml aus, um Heapster bereitzustellen
Wenn es normal läuft, lautet das entsprechende Protokoll des Heapster-Pods wie folgt
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
Okay, wenn alles normal läuft, sendet Heapster Metriken mithilfe des statsd-Protokolls und -Formats an den Metrikspeicher von Splunk.
Dann können Sie die Befehle mstats und mcatalog von SPL verwenden, um die Metrikdaten zu analysieren und zu überwachen.
Die folgende Suchanweisung listet alle Metriken auf
| mcatalog values(metric_name)
Die folgende Suchanweisung listet die CPU-Auslastung des gesamten Clusters auf. Wir können Flächen- oder Liniendiagramme verwenden, um die Suchergebnisse zu visualisieren.
| mstats avg(_value) WHERE metric_name=cluster.cpu/usage_rate span=30m
Entsprechende Speichernutzung des Kube-System-Namespace
| mstats avg(_value) WHERE metric_name=namespace.kube-system.memory/usage span=30m
Sie können die Analyseergebnisse, die Sie interessieren, im Dashboard ablegen und Echtzeiteinstellungen zur Überwachung verwenden.
Okay, weitere Analysemöglichkeiten finden Sie in der Splunk-Dokumentation.
Das obige ist der detaillierte Inhalt vonErläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!