In diesem Tutorial werden wir MySQL auf einem Kubernetes (K8S) -Cluster einrichten und Prometheus und Grafana zur Überwachung integrieren. Wir werden die Bitnami -Helm -Diagramme für MySQL, Prometheus und Grafana verwenden und Ihnen zeigen, wie Sie ein benutzerdefiniertes Grafana -Dashboard erstellen, um MySQL zu überwachen.
Erstellen Sie zunächst einen Kubernetes -Namespace, in dem Sie Ihre MySQL und die Überwachung von Komponenten bereitstellen.
kubectl create namespace my-lab
Um die Erstellung des Namespace zu überprüfen, rennen Sie:
kubectl get namespaces
Dies sollte my-lab als einen der Namespaces in Ihrem Cluster auflisten.
Wir werden das Bitnami-Helm-Diagramm verwenden, um MySQL im My-Lab-Namespace zu installieren. Wenn Sie das Bitnami -Chart -Repository noch nicht hinzugefügt haben, tun Sie dies mit dem folgenden Befehl:
helm repo add bitnami https://charts.bitnami.com/bitnami
Installieren Sie nun MySQL mit diesem Befehl:
helm upgrade --install mysql bitnami/mysql --namespace my-lab
um den Status zu überprüfen und sicherzustellen, dass MySQL ausgeführt wird, verwenden Sie:
kubectl get pods --namespace my-lab
Um sich mit MySQL zu verbinden, müssen Sie zuerst das MySQL -Passwort von den Kubernetes -Geheimnissen abrufen. Verwenden Sie diesen Befehl, um das Geheimnis zu erhalten:
kubectl get secret -n my-lab
Dann dekodieren
kubectl get secret/mysql -oyaml -n my-labSie können das Passwort mit Base64 dekodieren:
kubectl get secret/mysql -oyaml -n my-labGreifen Sie jetzt mit Kubectl Exec auf den MySQL -Pod zu:
kubectl get secret/mysql -oyaml -n my-labSobald im Pod in MySQL verwendet wird, verbinden Sie mit dem Stammkennwort:
kubectl get secret/mysql -oyaml -n my-labGeben Sie das dekodierte Stammkennwort ein, wenn sie aufgefordert werden.
Erstellen Sie eine Datenbank und einige Tabellen
Erstellen Sie eine Datenbank und einige Tabellen zum Überwachen:
eine Datenbank und einige Tabellen:
create database my_db_1; use my_db_1; create table my_table_1 (a varchar(100)); create table my_table_2 (a varchar(100)); create table my_table_3 (a varchar(100)); insert into my_table_1 values('One'); insert into my_table_1 values('One-One'); select * from my_table_1;
Als nächstes werden wir Prometheus und Grafana installieren, um MySQL zu überwachen.
Installieren Sie Prometheus und Grafana
Zunächst fügen Sie die Prometheus -Community -Helm -Diagramme hinzu:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update
Erstellen Sie einen Grafana -Namespace:
kubectl create ns grafana
Installieren Sie jetzt den Prometheus-Grafana-Stack mit Helm:
helm upgrade --install grafana prometheus-community/kube-prometheus-stack --namespace grafana
Sie können die Installation überprüfen, indem Sie die Pods überprüfen:
kubectl get pods -n grafana
MySQL mit LoadBalancer
aussetzen
Um von außerhalb des Kubernetes -Clusters von MySQL zugreifen zu können, müssen wir den MySQL -Dienst mit einem LoadBalancer freilegen. Bearbeiten Sie den MySQL -Dienst:
kubectl edit svc/mysql -n my-labkubectl bearbeiten svc/mysql -n my -lab
Ändern Sie den Diensttyp von clusterip in LoadBalancer:
kubectl edit svc/mysql -n my-labspec: Typ: LoadBalancer
überprüfen, ob die externe IP zugewiesen wurde:
kubectl edit svc/mysql -n my-labkubectl bekommen SVC -n my -lab
Wenn Sie Minikube verwenden, müssen Sie möglicherweise den Minikube -Tunnel ausführen, um den Dienst extern aufzudecken:
kubectl edit svc/mysql -n my-labMinikube -Tunnel
Jetzt greifen Sie extern mit der zugewiesenen IP zu MySQL zu:
kubectl edit svc/mysql -n my-labmysql -h
Wir müssen den MySQL -Exporteur installieren, um MySQL -Metriken zu sammeln und sie für Prometheus zu entlarven.
Create Exporter -Konfiguration
Erstellen Sie eine Datei mySQL-exporter-values.yaml mit Ihren MySQL-Verbindungsdetails:
kubectl edit svc/mysql -n my-labmysql: DB: "" Host: "
Installieren Sie jetzt den MySQL -Exporteur mit Helm:
kubectl edit svc/mysql -n my-labHelm Upgrade-Installieren Sie MySQL-Exporter Prometheus-Community/Prometheus-Mysql-Exporter -f mysql-exporter-values.yaml
port-forward prometheus mysql exporter
Um die Metriken von MySQL Exporter an Ihre lokale Maschine zum Testen weiterzuleiten, verwenden Sie:
kubectl port-forward svc/mysql-exporter-prometheus-mysql-exporter 9104 -n my-lab
kubectl port-forward svc/mysql-exporter-prometheus-mysql-exporter 9104 -n my-lab
überprüfen Sie, ob die Metriken durch Besuch http: // localhost: 9104/metrics entlarvt werden.
5. Verbinden Sie Grafana mit Prometheus
Jetzt, wo Prometheus und der MySQL -Exporteur eingerichtet sind, verbinden wir Grafana mit Prometheus.
port-Forward Grafana
kubectl port-forward svc/mysql-exporter-prometheus-mysql-exporter 9104 -n my-lab
Kubectl Port -Forward SVC/Grafana 3000: 80 -n Grafana
Dies wird Grafana unter http: // localhost: 3000 zugänglich machen. Die Standard -Login -Anmeldeinformationen sind:
Passwort: prom-operator
Einmal angemeldet, fügen Sie Prometheus als Datenquelle in Grafana hinzu:
6. Importieren Sie Grafana Dashboards
Um MySQL zu überwachen, können wir vorkonfigurierte Dashboards aus Grafanas Dashboard-Repository importieren.
Dashboards importieren
Gehen Sie zu Dashboards> Importieren und geben Sie die folgenden Dashboard -IDs ein:
Dashboard ID 7362 (MySQL Performance)
Diese Dashboards werden automatisch relevante MySQL -Metriken wie Verbindungen, Abfragen und Ressourcenauslastungen geladen und zeigen.
7. Schlussfolgerung
Sie haben MySQL erfolgreich in Kubernetes und integriert Prometheus und Grafana zur Überwachung eingerichtet. Sie können jetzt Ihre MySQL-Instanz in Echtzeit mit Grafana Dashboards überwachen.
Mit diesem Setup können Sie Ihre Datenbankinfrastruktur auf Kubernetes problemlos skalieren und überwachen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3