„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Bauen Sie MySQL auf Kubernetes auf und überwachen Sie sie mit Prometheus und Grafana

Bauen Sie MySQL auf Kubernetes auf und überwachen Sie sie mit Prometheus und Grafana

Gepostet am 2025-04-16
Durchsuche:380

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.

1. Erstellen Sie einen Namespace für Ihr Labor

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.

2. Installieren Sie MySQL mit Helm

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

Greifen Sie auf den MySQL -Pod zu

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 -lab
kubectl get secret/mysql -oyaml -n my-lab
Sie können das Passwort mit Base64 dekodieren:


echo | Base64 -d
kubectl get secret/mysql -oyaml -n my-lab
Greifen Sie jetzt mit Kubectl Exec auf den MySQL -Pod zu:


kubectl exec -it -it mySQL-0 --Namespace my-lab- /bin /bash
kubectl get secret/mysql -oyaml -n my-lab
Sobald im Pod in MySQL verwendet wird, verbinden Sie mit dem Stammkennwort:


mysql -u root -p
kubectl get secret/mysql -oyaml -n my-lab
Geben 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;

3. Installieren Sie Prometheus und Grafana

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-lab
kubectl bearbeiten svc/mysql -n my -lab


Ändern Sie den Diensttyp von clusterip in LoadBalancer:

kubectl edit svc/mysql -n my-lab
spec: Typ: LoadBalancer


überprüfen, ob die externe IP zugewiesen wurde:

kubectl edit svc/mysql -n my-lab
kubectl 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-lab
Minikube -Tunnel

Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring


Jetzt greifen Sie extern mit der zugewiesenen IP zu MySQL zu:

kubectl edit svc/mysql -n my-lab
mysql -h -u root -p

4. Installieren Sie den Prometheus Mysql Exporteur

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-lab
mysql: DB: "" Host: "" Benutzer: "root" Pass: "" Port: 3306 Protokoll: "" Servicemonitor: aktiviert: wahr Additionalabels: Veröffentlichung: Grafana


Installieren Sie jetzt den MySQL -Exporteur mit Helm:

kubectl edit svc/mysql -n my-lab
Helm 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. Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

5. Verbinden Sie Grafana mit Prometheus

Jetzt, wo Prometheus und der MySQL -Exporteur eingerichtet sind, verbinden wir Grafana mit Prometheus.

port-Forward Grafana

Um auf das Grafana-Dashboard zuzugreifen, führen Sie den folgenden Befehl portward aus:
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:

userername: admin

Passwort: prom-operator Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

Einmal angemeldet, fügen Sie Prometheus als Datenquelle in Grafana hinzu:

Gehen Sie zu Konfiguration> Datenquellen.

. Fügen Sie Prometheus als Datenquelle mit der URL http: // prometheus-operated hinzu: 9090.

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 14057 (MySQL -Übersicht)

Dashboard ID 7362 (MySQL Performance)

Diese Dashboards werden automatisch relevante MySQL -Metriken wie Verbindungen, Abfragen und Ressourcenauslastungen geladen und zeigen. Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

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.

    Key Takeaways:
  • MySQL läuft auf Kubernetes mit dem Bitnami -Helm -Diagramm.
  • prometheus wird verwendet, um Metriken mit dem MySQL -Exporteur aus MySQL abzukratzen.
  • Grafana ist so konfiguriert, dass sie die von Prometheus gesammelten Daten visualisieren.
Sie können mit einem LoadBalancer -Dienst extern auf MySQL zugreifen.

Mit diesem Setup können Sie Ihre Datenbankinfrastruktur auf Kubernetes problemlos skalieren und überwachen.

Freigabeerklärung Dieser Artikel ist reproduziert unter: https://dev.to/dm8ry/seting-up-mysql-on-klubernetes-with-prometheus-grafana-monitoring-3jd3?1 Wenn es zu Verletzungen kommt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

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