使用 Prometheus 和 Grafana 監控在 Kubernetes 上設定 MySQL

Barbara Streisand
發布: 2024-11-12 20:01:02
原創
574 人瀏覽過

在本教程中,我們將介紹如何在 Kubernetes (K8s) 叢集上設定 MySQL,以及如何整合 Prometheus 和 Grafana 進行監控。我們將使用適用於 MySQL、Prometheus 和 Grafana 的 Bitnami Helm 圖表,並向您展示如何建立自訂 Grafana 儀表板來監控 MySQL。

1. 為您的實驗室創建命名空間

首先,建立一個 Kubernetes 命名空間,您將在其中部署 MySQL 和監控元件。

kubectl create namespace my-lab
登入後複製
登入後複製

要驗證命名空間的創建,請執行:

kubectl get namespaces
登入後複製
登入後複製

這應該將 my-lab 列為叢集中的命名空間之一。

2.使用Helm安裝MySQL

我們將使用 Bitnami Helm 圖表在 my-lab 命名空間中安裝 MySQL。如果您尚未新增 Bitnami 圖表儲存庫,請使用下列指令新增:

helm repo add bitnami https://charts.bitnami.com/bitnami
登入後複製
登入後複製

現在,使用以下指令安裝 MySQL:

helm upgrade --install mysql bitnami/mysql --namespace my-lab
登入後複製
登入後複製

要檢查狀態並確保 MySQL 正在運行,請使用:

kubectl get pods --namespace my-lab
登入後複製
登入後複製

存取 MySQL Pod

要連接到 MySQL,首先,您需要從 Kubernetes 金鑰中檢索 MySQL 密碼。使用此指令取得秘密:

kubectl get secret -n my-lab
登入後複製

然後如下解碼 mysql-root-password 和 mysql-password:

kubectl get secret/mysql -oyaml -n my-lab
登入後複製

您可以使用base64解碼密碼:

echo <encoded-password> | base64 -d
登入後複製

現在,使用 kubectl exec 存取 MySQL pod:

kubectl exec -it mysql-0 --namespace my-lab -- /bin/bash
登入後複製

進入 Pod 後,使用 root 密碼連接到 MySQL:

mysql -u root -p
登入後複製

出現提示時輸入解碼後的 root 密碼。

建立資料庫和一些表格

進入 MySQL 後,建立一個資料庫和一些要監視的表:

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.安裝Prometheus和Grafana

接下來,我們將安裝Prometheus和Grafana來監控MySQL。

安裝 Prometheus 和 Grafana

首先加入Prometheus社群Helm圖表:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
登入後複製

建立grafana命名空間:

kubectl create ns grafana
登入後複製

現在,使用 Helm 安裝 Prometheus-Grafana 堆疊:

helm upgrade --install grafana prometheus-community/kube-prometheus-stack --namespace grafana
登入後複製

您可以透過檢查 pod 來驗證安裝:

kubectl get pods -n grafana
登入後複製

使用 LoadBalancer 公開 MySQL

要從 Kubernetes 叢集外部存取 MySQL,我們需要使用 LoadBalancer 公開 MySQL 服務。編輯 MySQL 服務:

kubectl edit svc/mysql -n my-lab
登入後複製

將服務類型從 ClusterIP 變更為 LoadBalancer:

spec:
  type: LoadBalancer
登入後複製

驗證外部IP已分配:

kubectl get svc -n my-lab
登入後複製

如果您使用 Minikube,您可能需要執行 minikube 隧道以將服務公開至外部:

minikube tunnel
登入後複製

Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

現在,使用分配的IP從外部存取MySQL:

kubectl create namespace my-lab
登入後複製
登入後複製

4.安裝Prometheus MySQL導出器

我們需要安裝 MySQL Exporter 來收集 MySQL 指標並將其公開給 Prometheus 進行抓取。

建立導出器配置

使用您的 MySQL 連線詳細資料建立檔案 mysql-exporter-values.yaml:

kubectl get namespaces
登入後複製
登入後複製

現在,使用 Helm 安裝 MySQL 導出器:

helm repo add bitnami https://charts.bitnami.com/bitnami
登入後複製
登入後複製

連接埠轉送 Prometheus MySQL 導出器

要將 MySQL 導出器指標轉送到本機進行測試,請使用:

helm upgrade --install mysql bitnami/mysql --namespace my-lab
登入後複製
登入後複製

透過造訪 http://localhost:9104/metrics 驗證指標是否公開。

Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

5. 將 Grafana 連接到 Prometheus

現在 Prometheus 和 MySQL 導出器已經設定完畢,讓我們將 Grafana 連接到 Prometheus。

連接埠轉送 Grafana

要存取 Grafana 儀表板,請執行下列連接埠轉送指令:

kubectl get pods --namespace my-lab
登入後複製
登入後複製

這將使 Grafana 透過 http://localhost:3000 存取。預設登入憑證是:

使用者名稱:admin
密碼:舞會操作員

Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

登入後,在 Grafana 中加入 Prometheus 作為資料來源:

前往設定>;資料來源。
使用 URL http://prometheus-operated:9090 新增 Prometheus 作為資料來源。

6.導入Grafana儀表板

要監控 MySQL,我們可以從 Grafana 的儀表板儲存庫匯入預先設定的儀表板。

導入儀表板

前往儀表板>;匯入並輸入以下儀表板 ID:

儀表板 ID 14057(MySQL 概述)
儀表板 ID 7362(MySQL 效能)

這些儀表板將自動載入並顯示相關的 MySQL 指標,例如連線、查詢和資源利用率。

Setting Up MySQL on Kubernetes with Prometheus & Grafana Monitoring

七、結論

您已成功在 Kubernetes 中設定 MySQL 並整合 Prometheus 和 Grafana 進行監控。現在您可以使用 Grafana 儀表板即時監控您的 MySQL 實例。

重點:

  • MySQL 使用 Bitnami Helm 圖表在 Kubernetes 上運作。
  • Prometheus 用於使用 MySQL 導出器從 MySQL 中抓取指標。
  • Grafana 配置為視覺化 Prometheus 收集的資料。
  • 您可以使用 LoadBalancer 服務從外部存取 MySQL。

透過此設置,您可以輕鬆擴展和監控 Kubernetes 上的資料庫基礎架構。

以上是使用 Prometheus 和 Grafana 監控在 Kubernetes 上設定 MySQL的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板