SQL Server 2019 ビッグデータクラスターを AKS で使う - クラスターの管理方法

この記事では SQL Server 2019 BDC の管理についてみていきます。SQL Server 2019 BDC は AKS の観点、Azure の観点、SQL の観点、BDC クラスタの観点など、多くの観点で管理が行えます。またツールも複数提供されているため、必要に応じて使い分けます。

# azdata を使ったクラスタの管理

azdata はクラスタの構築するだけでなく、管理や削除も行えます。
bdc サブコマンドで BDC を管理できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/8c5f8ee9-541a-6d5d-d309-270b078e49f2.png)

## 環境へログイン

まず初めに環境にログインします。クラスタ名を指定するか、エンドポイント URL を使ってログインできます。

[クラスタ名を指定]

```shell
azdata login --namespace mssql-cluster --username admin
```
[エンドポイントアドレスを指定]

```
azdata login --endpoint https://xxx.xxx.xxx.xxx:30080 --username admin
```
いずれもパスワードを聞かれたら入力してログインします。

## BDC サブコマンド

azdata bdc コマンドは BDC を管理するための機能を提供します。それぞれのエンドポイント用に
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/4e01fd78-ba5c-ea8d-916e-0311697217ef.png)

以下にいくつかのコマンドを結果を紹介します。

[ステータスの確認]

```shell
azdata bdc status show
```
上記コマンドを実行すると、以下のような結果が表示され、現在のクラスタの各サービスと各リソースの状況を一目で確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/081a68d5-7f3e-5f80-bae6-514811d8b6fe.png)

特定のサービスのステータスだけを確認したい場合、以下のコマンドが使えます。

```shell
azdata bdc sql status show
azdata bdc control status show
azdata bdc hdfs status show
azdata bdc spark status show
azdata bdc gateway status show

```
[エンドポイントの情報]

```shell
azdata bdc endpoint list
```
BDC のエンドポイントは 5 つありますが、上記コマンドは管理エンドポイントだけでなく、ツールのエンドポイントも表示してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/3679bf3a-3b31-a7fd-f983-8fcb01d2fb35.png)

## SQL サブコマンド

クエリを実行したい場合、sql サブコマンドが使えます。クエリの指定、出力形式の指定が行えるほか、実行ユーザーを渡すことも環境変数に入れることもできます。

```shell
>azdata sql query -q "SELECT database_id, name FROM sys.databases" --output table
Enter SQL Server username:
Enter SQL Server Password:
Stdout
----------------------------------------------------------------------------------------------------------------------
The SQL Server username is needed.  It can be set for the session by setting the environment variable AZDATA_USERNAME.
The SQL Server password is needed.  It can be set for the session by setting the environment variable AZDATA_PASSWORD.

Database_id    Name
-------------  ----------------------
1              master
2              tempdb
3              model
4              msdb
5              DWDiagnostics
6              DWConfiguration
7              DWQueue
8              sales
32761          model_msdb
32762          model_replicatedmaster
```
# Azure Data Studio (ADS) を使ったクラスタの管理

ADS はクエリをの発行以外にも、複数のことができます。

## SQL Server マスターインスタンスと HDFS へ接続

マスターインスタンスへ接続すると、HDFS も確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/d89244f0-04ef-84d0-f632-358916093313.png)

## SQL Server BDC ペイン

ADS の BDC ペインに Control エンドポイントを追加して詳細を確認できます。エンドポイントはマネージメントサービスの URL を指定します。

[BDC ペインでエンドポイントを追加]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/524063d9-68ff-2b9f-187a-127316630d57.png)

[ヘルスステータスとエンドポイント詳細]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/91fdad9d-7e07-9915-5251-90eb32f44694.png)

[SQL Server ペイン]
サービスを構成するポッドとステータス、ノードやポッドメトリックの情報を表示する Grafana へのダッシュボードや、ログを表示する Kibana へのリンク
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/976bce11-f0d8-73a6-368f-1725334ff78a.png)

## Notebook: SQL Server 2019 Guide

ADS は Jupyter Notebook をサポートしており、既定でサンプルを提供します。

[SQL Server 2019 Guid]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/047ec950-8ad2-5896-e611-ae9e44e3ff97.png)

例えば以下は Monitor - Big Data Cluster サンプルより　Show BDC Status のコードです。それぞれのセクションをマウスオーバーして実行するか、画面上部の「Run Cell」コマンドでコードを実行できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/5aa345b5-fc4c-f246-d8c4-282fc29eca85.png)

コードがエラーになった場合も、実施すべき前提のサンプルなどを自動で示してくれる優れものです。

# SQL Server Management Studio (SSMS)

以前のバージョンと同様に、SSMS は引き続き SQL Server の重要なツールとなります。
[SQL Server Management Studio (SSMS) のダウンロード](https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15)
[SSMS 日本語版](https://go.microsoft.com/fwlink/?linkid=2108895&clcid=0x411)

接続方法は ADS と同じく SQL Server マスターインスタンスに接続します。

[接続]
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/e876c472-7f9b-c59f-f1e8-29c3f0575a48.png"/>

[サーバープロパティ]
ノード側の情報が表示されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/96d29767-6489-cb63-960c-040916171b3b.png)

## Dynamics Management View (DMV)

SQL Server のシステムビューである DMV にも BDC 関連のビューが多く提供されます。

# Azure ポータル

AKS は Azure モニターと統合されているため、[コンテナーに対する Azure Monitor](https://docs.microsoft.com/ja-jp/azure/azure-monitor/insights/container-insights-overview) も利用できます。 
[概要から監視やログに移動]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/bcc07d1f-3e1c-fa2d-129a-76c1a37bb888.png)

コンテナー監視をクリックすると、未構成の場合は自動的に Azure モニターが構成され、個別のリソースグループにリソースが作成されます。構成後は「監視」メニューから詳細を確認することができます。

## インサイト

現在の状況をクラスター、ノード、コンテナーなど複数のレベルで確認することができます。

[コントローラー]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/03ff0029-463e-44cd-d1ca-a5370cf66f96.png)

[コンテナ状況]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/3af3da3f-2a29-1abd-ae76-3b0124ff9891.png)

## メトリック

各種メトリックの表示やダッシュボードへの設定が行えます。既定で数多くのメトリックが提供されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/548f1ac3-80ff-5b10-3123-7a5a0a7cee72.png)

## ログ

各種ログのクエリや表示、ダッシュボードへの設定などが行えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/1ed58491-a77f-26c5-93e0-e2b244ae724b.png)

## Azure モニター

Azure モニターは AKS 以外も複数の Azure サービスを同時に監視対象とできるため、複数の BDC がある環境や、他サービスも併用している場合も便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/1aec6b4d-dbdd-68b9-a6a4-6a3bac862dc9.png)


# Grafana 

Grafana は複数のデータソースをサポートするオープンソースの監視ソリューションであり、BDC でも既定でこのインストールされ、AKS クラスタノードの情報を詳細に管理できるダッシュボード機能を提供します。
エンドポイントのアドレスから直接接続することも、ADS で表示される BDC の情報から接続することもできます。ログインは BDC 作成時のユーザー名とパスワードが利用できます。

## ダッシュボード

既定で以下のダッシュボードが提供されます。必要に応じて変更も追加もできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/a0f92204-68a6-b2ea-5a60-7229e1042cda.png)
[Host Node Metrics]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/2b7fcdc1-dfc8-7ed5-2d99-80eca81c0c84.png)
[Host Pods Metrics]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/aac82a8d-e853-be05-d21d-435fefb006cd.png)
[SQL Server Metrics]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/fce4c3ac-7067-3bd5-1687-ced12fc3b957.png)

## データソース

構成時にデータソースも自動で設定されます。また必要に応じて手動で追加することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/a4972fe3-f97c-7528-a850-f8c73c1eadda.png)

その外にも利用ユーザーやグループの管理、アラート設定など多くのことが柔軟に行えるサービスです。
[参照: Grafana](https://grafana.com/)

# Kibana

ポッドやノードのログは Kibana を使って監視できます。こちらもエンドポイントのアドレスから接続したり、ADS で表示される BDC の情報から接続できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214116/22421166-83a9-fa2b-04b0-db707ada9106.png)

使い方はまだ私も分かっていないため、今後調査していきます。
[参照: Kibana](https://www.elastic.co/products/kibana)

# kubectl

k8s の観点からは kubectl で情報を取得できます。このブログのシリーズを通しても色々なコマンドを紹介しています。
[参照: SQL Server ビッグ データ クラスターの監視とトラブルシューティング](https://docs.microsoft.com/ja-jp/sql/big-data-cluster/cluster-troubleshooting-commands?view=sql-server-ver15)

また GUI ツールであるダッシュボードも利用可能です。
[参照:Kubernetes ダッシュボード](https://docs.microsoft.com/ja-jp/sql/big-data-cluster/cluster-troubleshooting-commands?view=sql-server-ver15#kubernetes-dashboard)

# Azure CLI

最後に Azure CLI でも構成情報など多くの情報が取得できます。

# まとめ

AKS/k8s はすでに多くのオープンソースや有料ツールがあるため、監視/管理が柔軟に行えます。また BDC 固有の機能については、azdata, Azure CLI をはじめ ADS や SSMS などの GUI ツールも利用可能です。次回は HDFS の階層化を見ていきます。

[次の記事へ](https://qiita.com/kenakamu/items/eee6280ba7303842deec)
[目次へ戻る](https://qiita.com/kenakamu/items/e155740aa60c85a3d867)

# 参照

[How to monitor your Kubernetes clusters | Kubernetes Best Practices Series](https://www.youtube.com/watch?v=RjsNmapggPU)
[参照:ビッグ データ クラスターの状態を表示する方法](https://docs.microsoft.com/ja-jp/sql/big-data-cluster/view-cluster-status?view=sql-server-ver15)
[参照:SQL Server コントローラー ダッシュボードのビッグ データ クラスターを管理する](https://docs.microsoft.com/ja-jp/sql/big-data-cluster/manage-with-controller-dashboard?view=sql-server-ver15)
[参照: SQL Server ビッグ データ クラスターの監視とトラブルシューティング](https://docs.microsoft.com/ja-jp/sql/big-data-cluster/cluster-troubleshooting-commands?view=sql-server-ver15)
[参照: Grafana](https://grafana.com/)
[参照: Kibana](https://www.elastic.co/products/kibana)