目次
- はじめに
- Grafanaの基本
- Kubernetesクラスターの作成
- Grafanaサービスの作成
- Grafanaのテスト
- Grafanaの拡張
- Grafanaストレージ
- 最後のMetricFireについて
1. はじめに
Grafanaは、メトリック分析、モニタリング、視覚化のためのオープンソースプラットフォームです。 この記事では、Grafanaの基本を探った後、GrafanaをKubernetesにデプロイする方法を学びます。 Grafanaをデプロイするために使うことができるコーディング例も紹介させてもらいます。
2. Grafanaの基本
いきなり始める前に、Grafanaで何ができるかを理解していきましょう。 Grafanaは、さまざまなデータソースからメトリックを取得することができ、 ソースごとに、データを抽出して解釈する特定のシンタックスとクエリエディターがあります。
Grafanaは、Prometheus、Mysql、MSSQL、PostgreSQL、Influx DB、Graphite、ElasticSearchなどの複数のデータソースをサポートしていると共に、Google Stackdriver、Azure Monitor、AWS CloudWatchなどの一部のクラウド管理サービスからデータを読み込むこともできます。 適切なプラグインを使用すると、Grafanaを拡張して、他のデータストアやオンラインソースを追加することもできる便利なツールです。 インフラストラクチャとアプリケーション(ディスクI / O使用率、CPU、メモリなど)の時系列データは、最初に分析ツールにロードされ、分析されていくという流れになります。
さらに、Grafanaを使用すると、ダッシュボードを簡単に作成および編集できるのも魅力の一つです。
自分でGrafanaのインストールし、設定していくのが大変だと思う方は心配しないでも大丈夫です。これから説明する少し面倒臭いプロセスを経ずともMetricFireの無料トライアルを通じてGrafanaを使用できます。また、質問などがある場合は、直接MetricFireにご相談することも可能です。
3. Kubernetesクラスターの作成
Grafanaの仕組みをよりよく理解するために、Grafanaを使用してKubernetesクラスターを監視していきます。 マネージドクラウドクラスターやMinikubeを使用して構いません。 今回のチュートリアルでは、Google CloudのKubernetesサービスであるGKE(Google Kubernetes Engine)を使用します。 GKEを使用している場合は、Google Cloudプロジェクトを請求先アカウントにリンクする必要があります。 また、Kubernetes APIを有効にして、Google Cloud SDKをインストールする必要があります。
別のクラウドプロバイダーを使用する場合は、Google Cloud Platform(GCP)に固有の一部のコマンドを除いて、ここに示す手順とほぼ同じです。
インストールと設定が完了したら、以下を使用して続けていきます。
選択したクラスター名の「mycluster」を変更して、必ず優先ゾーンを使用してください。
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
mycluster europe-west1-b 1.13.11-gke.9 34.77.193.73 n1-standard-1 1.13.11-gke.9 3 RUNNING
Minikubeクラスタを使用している場合は、正式の手順に従って最初にインストールする必要があります。 次に、以下を使用してクラスターを作成します。
これでクラスターが起動して実行されたので、Kubernetesコマンドラインツールkubectlをインストールする必要があります。 インストールは非常に簡単です。 Debian / Ubuntuを使用している場合は、次のコマンドを実行してください。
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
4. Grafanaサービスの作成
デプロイを作成するために、Docker Hubからの公式のGrafanaイメージ(v5.4.3)を使用します。
次を使用して、イメージがデプロイされたかどうかを確認できます。
すると、次のような出力が表示されます。
Name | Type | CLUSTER-IP | EXTERNAL-IP | PORT(S) | Age |
---|---|---|---|---|---|
kubernetes | ClusterIP | 10.27.240.1 | 443/TCP | 100m |
次に、LoadBalancerサービスタイプを使用してGrafanaサービスを公開します。
315/5000
3000は、カスタム構成をセットアップしていない場合にGrafanaが表示するデフォルトのHTTPポートです。 今回、簡単にするために、この内部ポートをTCPを使用して外部ポート80にマッピングします。 ロードバランサーの作成には数分かかる場合があります。 展開が公開されたことを確認するには、次のように入力します。
ここで、ロードバランサーの外部IPを確認できるはずです。
Name | Type | CLUSTER-IP | EXTERNAL-IP | PORT(S) | Age |
---|---|---|---|---|---|
grafana | LoadBalancer | 10.27.252.155 | 35.205.13.61 | 80:32471/TCP | 92s |
スケーリングなど、デプロイされたサービスで他の操作を実行することもできます。
これで、デフォルトポート(80)で同じIPにアクセスすると、Grafanaの認証ページが表示されるはずです。
5. Grafanaのテスト
デフォルトのログイン/パスワードはadmin / adminです。 最初のログイン後にこれらの資格情報を変更するように求められます。
また、MetricFireの無料トライアル 通じて行なった場合、今までの煩わしいセットアップを行うことなく、この時点から直接開始することも出来るので、おすすめです。
Grafanaインスタンスをテストするために、データソースを追加できます。 最も簡単なのは、Grafana TestDataソースを追加することです。これは、Grafana機能の検証をより簡単かつ高速にするテスト目的の偽のデータソースです。
[Create your first data source]をクリックして[TestData DB]を選択し、[Save and test]をクリックします。
[Create a new dashboard]をクリックすると、
テストデータを視覚化したパネルを表示するには、「Graph」または「Heatmap」などを選択できます。
6. Grafanaの拡張
プラグインを使用して、デフォルトのインストールを拡張できます。 デフォルトでは多くのプラグインがインストールされていますが、必要に応じてプラグインを追加できます。 高度なGrafanaチュートリアルで、Grafanaダッシュボードとプラグインの構築の詳細を確認できます。
プラグインには、パネル、データソース、アプリの3種類があります。 Grafana Kubernetes Appのようなプラグインをインストールするには、次のコマンドを実行する必要があります。
次に、以下を使用してGrafanaサービスを再起動します。
service grafana-server restart
コンテナを使用するため、コンテキストで実行するコマンドは次のとおりです。
kubectl exec -it grafana-96fd979c-kjfhr grafana-cli plugins install grafana-kubernetes-app
もちろん、ポッドの名前をgrafana-96fd979c-kjfhrに変更する必要があります。 アプリがインストールされたら、サービスを再起動する代わりに、デプロイメントを0にスケーリングしてから、1つ以上のレプリカにスケーリングできます。
kubectl scale deployment grafana --replicas=0
kubectl scale deployment grafana --replicas=1
コンテナ内のストレージは一時的なものであるため、ポッドをスケーリングまたは強制終了すると、インストールが失われます。 次のセクションでは、永続的なGrafanaストレージを使用してこの問題を回避する方法を説明していきたいと思います。
7. Grafanaストレージ
ポッドのスケーリング、再起動、強制終了などの操作を実行する場合でも、Grafanaデータの一部はクラスターに保持する必要があります。
まず、永続ボリュームを使用するGrafanaデプロイメントを作成する必要があります。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: grafana
name: grafana
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- image: grafana/grafana:5.4.3
name: grafana
ports:
- containerPort: 3000
name: http
volumeMounts:
- name: grafana-storage
mountPath: /var/lib/grafana
volumes:
- name: grafana-storage
persistentVolumeClaim:
claimName: grafana-storage
securityContext:
runAsNonRoot: true
runAsUser: 65534
fsGroup: 472
上記の展開では、volume / var / lib / grafanaを使用しています。
次に、永続ボリュームのクレームを作成します。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: grafana-storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
これは、さまざまな構成をニーズに合わせて調整できます。
ボリュームクレームとデプロイメントを作成したら、デプロイメントを公開するためにロードバランサーサービスを作成する必要があります。
apiVersion: v1
kind: Service
metadata:
name: grafana
labels:
app: grafana
spec:
type: LoadBalancer
ports:
- port: 3000
protocol: TCP
targetPort: http
selector:
app: grafana
Kubernetesマニフェストファイルは、それぞれgrafana-deployment.yaml、grafana-pvc.yaml、grafana-service.yamlに保存されています。
最後のステップは、Kubernetesオブジェクトを作成することです。
kubectl create -f grafana-deployment.yaml -f grafana-pvc.yaml -f grafana-service.yaml
このステップでは、ポート3000のロードバランサIPでクラスタに到達できます。Kubernetesアプリのインストール手順を繰り返して、永続性が機能していることを確認できます。
kubectl exec -it grafana-96fd979c-kjfhr grafana-cli plugins install grafana-kubernetes-app
8. 最後にMetricFireについて
GrafanaをKubernetesクラスターにデプロイする方法をStep by Stepで説明させていただきました。 Grafanaは高い汎用性と柔軟性を持ち、特定のニーズに適応させることができ、データの監視、分析、または視覚化が必要な場合に最適です。
自分でGrafanaを始めてみるのもいいかもしれませんが、セットアップ、またはその後の管理のことを考えると、MetricFireを使用してGrafanaの使用をすることをお勧めします。MetricFireはKufernetesに加えて、GrafanaはクラウドとPrometheusまたはGraphiteの監視プラットフォームを提供します。これらはすべて、手頃な価格で使いやすい最新のプラットフォームで利用できます。
MetricFireの無料トライアルを試して、Grafanaダッシュボードの作成を開始してみてください。 また、Grafanaが何ができるかについて質問がある場合は、デモも無料で行なってくるとのことです。