ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

Azure Container Service(AKS)にデプロイした Grafana で Azure のメトリクスを監視する

この記事は、Azure Advent Calendar 2017 の 10 日目 の記事です。
qiita.com
OSS のモニタリングツールである Grafana を使って、Azure のメトリクスを監視してみました。元ネタは、こちらのブログですが、Grafana を Azure Marketplace ではなく、Azure Container Service(AKS)にデプロイしました。

f:id:TonyTonyKun:20171210105722p:plain

Azure Container Service(AKS)を作成する

最近、Azure Portal からも AKS が作れるようになりました。公式ドキュメントの手順に従って、作成します。
docs.microsoft.com
AKS の作成が完了したら、Azure Cloud Shell を使って、AKS に接続するための資格情報を取得します。

$ az aks get-credentials --resource-group gooner1210 --name gooner1210
Merged "gooner1210" as current context in /home/hara/.kube/config

$ kubectl get nodes
NAME                       STATUS    ROLES     AGE       VERSION
aks-agentpool-63390745-0   Ready     agent     10m       v1.7.7
aks-agentpool-63390745-1   Ready     agent     10m       v1.7.7
aks-agentpool-63390745-2   Ready     agent     10m       v1.7.7

Grafanaをデプロイする

Helm のリポジトリで公開されている Grafana の Charts を使って、AKS にデプロイします。
まず、Helm をセットアップします。

$ helm init
HELM_HOME has been configured at /home/hara/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Happy Helming!

Azure のメトリクスを取得するためには、Grafana のプラグインをインストールする必要があります。
grafana.com
Grafana のプラグインは、helm install コマンドのパラメータで指定できるので、次のようなコマンドでインストールできます。

$ helm install --name gf \
--set server.installPlugins=grafana-azure-monitor-datasource,\
server.adminPassword=admin,\
server.service.type=LoadBalancer,\
server.persistentVolume.storageClass=default \
stable/grafana

プラグイン以外のパラメータは、お好みで指定してください。

Parameter Value Description
server.installPlugins grafana-azure-monitor-datasource プラグイン名
server.adminPassword admin 管理者アカウント(admin)のパスワード
server.service.type LoadBalancer ダッシュボードを外部IPで公開
server.persistentVolume.storageClass default データをディスクに永続化

デプロイが完了したら、Grafana の External IP を確認します。

$ kubectl get svc
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
gf-grafana   LoadBalancer   10.0.210.171   52.179.12.156   80:31032/TCP   7m
kubernetes   ClusterIP      10.0.0.1       <none>          443/TCP        1h

ブラウザで Grafana の External IP にアクセスすると、ログイン画面が表示されます。

f:id:TonyTonyKun:20171210112709p:plain

Grafanaのデータソースを追加する

Grafana の add data source を選択して、Azure のメトリクスをデータソースとして登録します。

f:id:TonyTonyKun:20171210112728p:plain

任意の名前を入力して、Type で「Azure Monitor」を選択します。Azure Monitor API Details には、サブスクリプションIDとサービスプリンシパルを入力します。Application Insights Details はオプションなので、空欄のままで進めます。

Grafanaのダッシュボードを作成する

Grafana の New Dashboard を選択して、Azure のメトリクスを表示するダッシュボードを作成します。今回は Graph を使って、Azure Web Apps にデプロイされているアプリケーションのメトリクスを表示してみます。

f:id:TonyTonyKun:20171210112745p:plain

Panel Title の edit をクリックして、Metrics タブからメトリクスを取得するアプリケーションのリソースやメトリクスの種類を選択します。選択候補がプルダウンで表示されるので、簡単にダッシュボードを作成できます。

f:id:TonyTonyKun:20171210112807p:plain

2つのアプリケーションの CPU Time と AverageMemoryWorkingSet を 表示することができました。

まとめ

Grafana を使って、Azure のメトリクスを表示するダッシュボードを作成してみました。
このプラグインをインストールすると、Azure Monitor のほかに、Application Insights のメトリクスも取得できます。
Grafana のデータソースには、AWS の CloudWatch や OSS の Prometheus も指定できるので、Azure に限らず活用できる監視ツールだと思います。