Azure 上の運用環境に Grafana をデプロイする


執筆者: Parikshit Savjani (Senior Program Manager, Azure OSS Database service)

このポストは、2019 4 15 日に投稿された Deploying Grafana for production deployments on Azure の翻訳です。

 

今回の記事は、マイクロソフトでテクニカル アドバイザーを努める Nick Lopez と共同で執筆しました。

Grafana (英語) は時系列メトリックの視覚化に広く使用されている先進的なオープン ソース ツールで、サーバーやアプリケーションのメトリック監視用視覚化ツールとして開発チームや運用チームの間で急速に普及しました。Grafana ダッシュボードを使用すると、運用チームはパフォーマンス、可用性、サービス全体の正常性を監視し迅速に対応することができます。また、Azure のサービスやアプリケーションの監視に便利なのが、Grafana Labs が開発した Azure Monitor データ ソース プラグイン (英語) です。このプラグインを使用すると、Azure Monitor Application Insights から送られるすべてのメトリックを Grafana ダッシュボードに表示できます。Azure Monitor Application Insights のメトリックを Grafana ですばやくセットアップしてテストする方法については Azure Monitor のドキュメントをお読みください。

Grafana dashboard using Azure Monitor as a data source to display metrics for Contoso dev environment.

スムーズにデプロイするには、Azure Marketplace で提供している Grafana サーバー イメージを使用すると便利です。このイメージでは、Grafana ダッシュボード サーバー、SQLite データベース、Azure プラグインが事前にインストールされている仮想マシン (VM) をプロビジョニングできます。また、概念実証やテストには、VM 1 台だけデプロイする既定のセットアップをお勧めします。さらに、重要なアプリケーションやサービスに向けの高可用性監視ダッシュボードをセットアップする場合は、Grafana を高可用性構成で Azure にデプロイする必要があります。最後に、高度な可用性と安全性を持つ Grafana Azure にセットアップする場合は、以下のアーキテクチャがお勧めです。

運用環境用に Grafana をセットアップする

Grafana Labs では、高可用性の Grafana をセットアップ (英語) する場合、高可用性共有 MySQL サーバーを独立してセットアップすることを推奨しています。Azure Database for MySQL および Azure Database for MariaDB は、コミュニティ エディションの MySQL/MariaDB データベース エンジンを基盤とするマネージド リレーショナル データベース サービスです。これらのサービスでは無料で高可用性構成にすることが可能で、パフォーマンスの予測や柔軟なスケーリング、自動バックアップに対応しています。また、Secure Sockets Layer (SSL)、保存中の暗号化、Advanced Threat ProtectionVNet サービス エンドポイントをサポートしており、エンタープライズ クラスのセキュリティが確保されています。Azure Database for MySQL Azure Database for MariaDB のリモート構成データベースを使用すると、企業の運用環境で必要となる水平方向のスケーリングや高可用性を持つ Grafana 環境を構築できます。

Bitnami の多層型 Grafana テンプレートを運用環境で使用する

Grafana high availability deployment architecture on Azure.

Bitnami を使用すると、マルチノードの運用環境用 Grafana ソリューションを数クリックで Azure Marketplace からデプロイできます。このソリューションでは、ロード バランサーが事前構成されている複数の Grafana ノードと Azure Database for MariaDB のデータ ストレージを使用します。ノード数は、要件に応じてデプロイ時に指定できます。ノードと Azure Database for MariaDB サービスの間の通信は SSL で暗号化されて保護されます。

Bitnami の Grafana ソリューションの主要機能は、フォールト トレラントな環境を提供するように事前構成されています。要求はロード バランサーで処理されます。このロード バランサーはノードが正常かどうかを常時テストして、異常があった場合は自動的に要求をルーティングし直します。データ (セッション データを含む) は、各ノードではなく Azure Database for MariaDB に保存されます。この手法では、高いパフォーマンスが得られると共にノードの障害によるデータ損失も防止できます。

ソリューションを新たにデプロイする場合は、Azure Marketplace 多層型 Bitnami Grafana (英語) をご利用ください。

既にインストールされている Grafana Azure Database for MySQL サービスで使用するように構成する

既にインストールされている Grafana を高可用性構成にする場合は、Azure Database for MySQL サーバーをバックエンド構成データベースとして使用する Grafana インスタンスを次の手順でセットアップします。この手順では、Grafana がインストールされている Ubuntu (英語) で、リモート データベースとして Azure Database for MySQL を使用する Grafana をセットアップします。

  1. Azure Database for MySQL サーバーを作成します。サービス レベルは、運用環境に適した General Purpose を指定します。データベース サーバーの作成手順の詳細については、クイックスタート チュートリアルをご覧ください。Azure CLI を使用する場合は、az mysql up (英語) を使用するだけでセットアップできます。
  2. 既に Ubuntu サーバーに Grafana がインストール (英語) されている場合は、ini ファイルを編集して Azure Database for MySQL パラメーターを追加する必要があります。ここでは、データベース設定に関する Grafana のドキュメント (英語) に従って、データベース パラメーターについて説明します。: ユーザー名は user@server という形式にする必要があります (Azure Database for MySQL のサーバー識別メソッド)。他の形式では接続を確立できません。
  3. Azure Database for MySQL では SSL 接続をサポートしています。企業の運用環境では必ず SSL を強制適用することをお勧めします。Azure Database for MySQL での SSL のセットアップの詳細については、Azure Database for MySQL のドキュメントをご覧ください。Ubuntu の最新インストールの多くでは、必要な Baltimore Cyber Trust CA 証明書があらかじめ /etc/ssl/certs ディレクトリにインストールされていますが、必要な場合は Azure Database for MySQL で使用する SSL CA 証明書をこちらからダウンロードしてください。SSL モードには skip-verify と true のいずれかが指定されます。skip-verify の場合、マイクロソフトは提供された証明書を検証しませんが、接続は暗号化されます。true の場合、提供された証明書が Baltimore CA で検証されます。これは「man-in-the-middle」攻撃の防止に有効です。どちらの場合でも、証明機関 (CA) のパスを Grafana に提供する必要があります。
  4. 次に、Azure DB for MySQL のテーブル セッションでユーザー セッションの保存に関するオプションを指定します。このオプションは、セッション セクションで使用したものと同じini で指定します。これは、Grafana にアクセスするユーザーのセッションを保持する負荷分散環境などで有効です。provider_config パラメーターには、user@server 形式のユーザー名、パスワード、サーバー情報全般、TLS/SSL メソッドなどを含める必要があります。この場合の値は、true または ssl-verify となります。これは go-sql-driver/mysql ドライバーです。詳細についてはこちらのドキュメント (英語) をご覧ください。
  5. 設定がすべて完了したら、Grafana を起動し、次のコマンドを実行して状態を確認します。
  • systemctl start grafana-server
  • systemctl status grafana-server

既定では /var/log/grafana/ にログが記録されるので、何らかのエラーや問題が発生した場合はこのログを確認して、起動しない原因を確認します。ユーザー名が user@server という形式ではなく user のみだった場合のエラーの例を次に示します。

lvl=eror msg="Server shutdown" logger=server reason="Service init failed: Migration failed err: Error 9999: An internal error has occurred.Please retry or report your issues.

エラーがなければサービスの状態は Ok と表示され、初回起動時には Azure DB for MySQL で必要なすべてのテーブルが構築されます。

重要ポイント

  • テストや概念実証を目的とする場合、Grafana VM 1 台だけセットアップすると手軽に開始できますが、運用環境には適しません。
  • 企業の Grafana の運用環境では、構成データベースを専用サーバーに独立させ、高可用性とスケーラビリティを確保します。
  • Bitnami の多層型 Grafana (英語) テンプレートを使用すると、スケールアウトに対応した安全な Grafana 環境をわずか数クリックで、無償でプロビジョニングできます。
  • Azure Database for MySQL などのマネージド データベース サービスを運用環境で使用すると、高可用性、スケーラビリティ、エンタープライズ レベルのセキュリティが組み込まれているデータベース リポジトリを使用できます。

関連情報

Bitnami の多層型ソリューションを Microsoft Azure で使用する (英語)

Grafana を使用する Monitor Azure のサービスとアプリケーション (英語)

Grafana で Azure サービスを監視する

高可用性 Grafana のセットアップ (英語)

Azure Database for MySQL のドキュメント

謝辞

このブログ記事の執筆にご協力いただいた Shau PhangDiana PutnamAnitah CanteleBitnami チームに感謝いたします。

 

Comments (0)

Skip to main content