この記事は、Azure Advent Calendar 2017 の 10 日目 の記事です。
qiita.com
OSS のモニタリングツールである Grafana を使って、Azure のメトリクスを監視してみました。元ネタは、こちらのブログですが、Grafana を Azure Marketplace ではなく、Azure Container Service(AKS)にデプロイしました。
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 にアクセスすると、ログイン画面が表示されます。
Grafanaのデータソースを追加する
Grafana の add data source を選択して、Azure のメトリクスをデータソースとして登録します。
任意の名前を入力して、Type で「Azure Monitor」を選択します。Azure Monitor API Details には、サブスクリプションIDとサービスプリンシパルを入力します。Application Insights Details はオプションなので、空欄のままで進めます。
Grafanaのダッシュボードを作成する
Grafana の New Dashboard を選択して、Azure のメトリクスを表示するダッシュボードを作成します。今回は Graph を使って、Azure Web Apps にデプロイされているアプリケーションのメトリクスを表示してみます。
Panel Title の edit をクリックして、Metrics タブからメトリクスを取得するアプリケーションのリソースやメトリクスの種類を選択します。選択候補がプルダウンで表示されるので、簡単にダッシュボードを作成できます。
2つのアプリケーションの CPU Time と AverageMemoryWorkingSet を 表示することができました。
まとめ
Grafana を使って、Azure のメトリクスを表示するダッシュボードを作成してみました。
このプラグインをインストールすると、Azure Monitor のほかに、Application Insights のメトリクスも取得できます。
Grafana のデータソースには、AWS の CloudWatch や OSS の Prometheus も指定できるので、Azure に限らず活用できる監視ツールだと思います。