Heim  >  Artikel  >  System-Tutorial  >  Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

WBOY
WBOYOriginal
2024-07-26 17:31:50756Durchsuche
Bereitstellungsarchitektur

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
Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

Vorbereitung

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
Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

Installieren und konfigurieren Sie Heapster

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
Überwachung in Splunk

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)

Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

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

Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

Entsprechende Speichernutzung des Kube-System-Namespace

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

Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

Sie können die Analyseergebnisse, die Sie interessieren, im Dashboard ablegen und Echtzeiteinstellungen zur Überwachung verwenden.
Erläutern Sie die Verwendung von Splunk zur Überwachung der Kubernetes-Leistung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn