このチュートリアルでは、Kubernetes (K8s) クラスター上に MySQL をセットアップする方法と、監視のために Prometheus と Grafana を統合する方法を説明します。 MySQL、Prometheus、Grafana の Bitnami Helm チャートを使用し、MySQL を監視するカスタム Grafana ダッシュボードを作成する方法を示します。
まず、MySQL と監視コンポーネントをデプロイする Kubernetes 名前空間を作成します。
kubectl create namespace my-lab
ネームスペースの作成を確認するには、次のコマンドを実行します。
kubectl get namespaces
これにより、クラスタ内の名前空間の 1 つとして my-lab がリストされるはずです。
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 に接続するには、まず、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 ポッドにアクセスします。
kubectl exec -it mysql-0 --namespace my-lab -- /bin/bash
ポッドに入ったら、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;
次に、MySQL を監視するために Prometheus と Grafana をインストールします。
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
ポッドをチェックすることでインストールを確認できます:
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
次に、割り当てられた IP を使用して外部から MySQL にアクセスします。
kubectl create namespace my-lab
MySQL メトリクスを収集し、Prometheus が収集できるように公開するには、MySQL Exporter をインストールする必要があります。
エクスポーター構成の作成
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 にアクセスして、メトリクスが公開されていることを確認します。
Prometheus と MySQL エクスポーターがセットアップされたので、Grafana を Prometheus に接続しましょう。
ポートフォワード グラファナ
Grafana ダッシュボードにアクセスするには、次のポート転送コマンドを実行します。
kubectl get pods --namespace my-lab
これにより、http://localhost:3000 で Grafana にアクセスできるようになります。デフォルトのログイン認証情報は次のとおりです:
ユーザー名: 管理者
パスワード: prom-operator
ログインしたら、Grafana のデータ ソースとして Prometheus を追加します。
「設定」に移動 >データソース。
URL http://prometheus-operated:9090.
MySQL を監視するには、事前構成されたダッシュボードを Grafana のダッシュボード リポジトリからインポートできます。
ダッシュボードのインポート
ダッシュボードに移動 >次のダッシュボード ID をインポートして入力します:
ダッシュボード ID 14057 (MySQL の概要)
ダッシュボード ID 7362 (MySQL パフォーマンス)
これらのダッシュボードは、接続、クエリ、リソース使用率などの関連する MySQL メトリクスを自動的にロードして表示します。
Kubernetes で MySQL をセットアップし、監視のために Prometheus と Grafana を統合しました。 Grafana ダッシュボードを使用して、MySQL インスタンスをリアルタイムで監視できるようになりました。
重要なポイント:
このセットアップを使用すると、Kubernetes 上のデータベース インフラストラクチャを簡単に拡張および監視できます。
以上がPrometheus と Grafana モニタリングを使用して Kubernetes 上に MySQL をセットアップするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。