aliyun-timestream は、Elastic コミュニティが提供する時系列製品の機能に基づいて、Alibaba Cloud Elasticsearch チームが開発したプラグインです。このプラグインは、時系列データのストレージと使用パフォーマンスを向上させるために使用されます。Alibaba Cloud Elasticsearch は、Prometheus および Grafana とシームレスに統合でき、Prometheus クエリに使用できる API をサポートしています。Alibaba Cloud Elasticsearch を Prometheus および Grafana と統合した後、Elasticsearch の時系列インデックスを Prometheus のデータソースとして使用して、Grafana にデータを表示できます。これにより、時系列インデックスのメトリックデータのストレージと分析のパフォーマンスが向上し、コストが削減されます。このトピックでは、aliyun-timestream をベースに Elasticsearch を Prometheus および Grafana と統合して統合モニタリングを実装する方法について説明します。
背景情報
- 保存されたデータにはコピーがありません。ローカルクラスター内のマシンで障害が発生した場合、Prometheus は保存されたデータにアクセスできません。
- データは単一のマシンにのみ保存され、スケールアウトはサポートされていません。データ量が増加するにつれて、ストレージのボトルネックが発生する可能性があります。
- データバックアップはサポートされていません。ハードディスクが破損した場合、データの回復に失敗する可能性があります。
- ローカルディスクストレージのコストは高くなります。コールドデータとホットデータの分離ストレージはサポートされていません。
Prometheus が提供する高可用性ソリューションを使用する場合、高可用性で分散型のリモートストレージシステムにデータを保存することをお勧めします。 aliyun-timestream は、Prometheus のリモートストレージおよびクエリ機能を提供し、分散アーキテクチャ、スケーラビリティ、高可用性、ホットデータとコールドデータの分離ストレージなど、Elasticsearch の機能に基づいて開発されています。したがって、aliyun-timestream は Prometheus の最適なリモートストレージシステムです。

- Prometheus はエクスポーターからデータを収集します。
- Prometheus はリモート書き込み機能を使用して、収集されたデータを Elasticsearch に同期します。
- ユーザーは、Prometheus によって Elasticsearch に同期されたデータを Kibana および Grafana で表示します。説明 Grafana を使用して Elasticsearch に同期されたデータにアクセスする場合、ネイティブの Elasticsearch データソースまたは Prometheus のデータソースを使用して Elasticsearch のデータにアクセスし、Prometheus Query Language(PromQL)ステートメントを実行してメトリックデータをクエリできます。
前提条件
次のバージョン要件を満たす Elasticsearch クラスターが作成されます。クラスターのバージョンは V7.10 で、クラスターのカーネルバージョンは V1.8.0 以降、またはクラスターのバージョンは V7.16 以降で、クラスターのカーネルバージョンは V1.7.0 以降です。Elasticsearch クラスターの作成方法については、Alibaba Cloud Elasticsearch クラスターを作成する を参照してください。
手順
手順 1:準備を行う
- Standard Edition の Elasticsearch V7.16 クラスターを作成します。詳細については、Alibaba Cloud Elasticsearch クラスターを作成する を参照してください。
- サブ手順 1 で作成した Elasticsearch クラスターと同じ仮想プライベートクラウド (VPC) に存在し、Linux オペレーティングシステムを実行する Elastic Compute Service (ECS) インスタンスを作成します。ECS インスタンスの作成方法については、カスタム起動タブでインスタンスを作成する を参照してください。ECS インスタンスは、Elasticsearch クラスターにアクセスし、Prometheus および Grafana をインストールするために使用されます。このようにして、Elasticsearch を Prometheus および Grafana と統合できます。
- Elasticsearch クラスターに時系列インデックスを作成します。時系列インデックスは、Prometheus によって同期されるデータを受信するために使用されます。
- Elasticsearch クラスターの Kibana コンソールにログオンし、プロンプトに従って Kibana コンソールのホームページに移動します。Kibana コンソールにログオンする方法については、Kibana コンソールにログオンする を参照してください。
- 表示されるページの左側のナビゲーションペインで、
アイコンをクリックし、 を選択します。 - Kibana コンソール で、
PUT_time_stream/prom_indexコマンドを実行して、prom_index という名前の時系列インデックスを作成します。
- Elasticsearch クラスターの Kibana コンソールにログオンし、プロンプトに従って Kibana コンソールのホームページに移動します。
手順 2:Node Exporter をダウンロード、インストール、および起動する
Prometheus Node Exporter は、さまざまなハードウェアおよびカーネル関連のメトリックを公開し、Prometheus がメトリックデータを読み取れるようにします。Node Exporter とそのインストール方法の詳細については、node_exporter を参照してください。
- ECS インスタンスに接続します。詳細については、Workbench を使用して SSH 経由で Linux インスタンスに接続する を参照してください。説明 この例では、通常のユーザーを使用して ECS インスタンスに接続します。
- Node Exporter のインストールパッケージをダウンロードします。この例では、Node Exporter 1.3.1 のインストールパッケージがダウンロードされます。ダウンロードコマンドの例:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz - インストールパッケージを解凍し、Node Exporter をインストールして、Node Exporter を起動します。
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64 ./node_exporter
手順 3:Prometheus をダウンロード、構成、および起動する
- ECS インスタンスに接続します。詳細については、Workbench を使用して SSH 経由で Linux インスタンスに接続する を参照してください。
- ルートディレクトリから Prometheus のインストールパッケージをダウンロードします。この例では、Prometheus 2.36.2 インストールパッケージがダウンロードされます。ダウンロードコマンドの例:
cd ~ wget https://github.com/prometheus/prometheus/releases/download/v2.36.2/prometheus-2.36.2.linux-amd64.tar.gz - Prometheus インストールパッケージを解凍します。
tar xvfz prometheus-2.36.2.linux-amd64.tar.gz - Prometheus がインストールされているルートディレクトリの prometheus.yml ファイルで、node_exporter パラメーターと remote_write パラメーターを構成します。
cd prometheus-2.36.2.linux-amd64 vim prometheus.yml次のコードは、構成例を提供します。scrape_configs: // ジョブ名は、この構成からスクレイピングされたすべての時系列に `job=<job_name>` というラベルとして追加されます。 - job_name: 'prometheus' // metrics_path のデフォルトは '/metrics' です。 // scheme のデフォルトは 'http' です。 static_configs: - targets: ['localhost:9090'] // node_exporter を構成します。 - job_name: "node" static_configs: - targets: ["127.0.0.1:9100"] // remote_write を構成し、Prometheus が Elasticsearch クラスターにアクセスできることを確認します。 remote_write: - url: "http://xxx:9200/_time_stream/prom_write/prom_index" basic_auth: username: elastic password: xxxxパラメーター 説明 node_exporter Node Exporter の接続情報。targets パラメーターを Node Exporter の IP アドレス:ポート番号 の形式で構成する必要があります。 この例では、Prometheus と Node Exporter は同じ ECS インスタンスにインストールされています。この例では、Node Exporter の IP アドレスとして 127.0.0.1 を、Node Exporter のポート番号としてデフォルトのポート番号 9100 を指定する必要があります。
remote_write Elasticsearch クラスターの時系列インデックスの接続情報。remote_write パラメーターには、次の基本パラメーターを構成する必要があります。remote_write パラメーターで構成できる詳細パラメーターについては、remote_write を参照してください。 - url:時系列インデックスにアクセスするために使用できる URL を指定します。このパラメーターは、http://<Elasticsearch クラスターのパブリックエンドポイントまたはインターナルエンドポイント>:9200/_time_stream/prom_write/<yourTimeStreamIndex> の形式で構成する必要があります。説明
- Elasticsearch クラスターのパブリックエンドポイントまたはインターナルエンドポイント:Elasticsearch コンソールの Elasticsearch クラスターの 基本情報 ページでエンドポイントを取得できます。Prometheus がインストールされている ECS インスタンスと Elasticsearch クラスターが同じ VPC に存在する場合、URL に Elasticsearch クラスターのインターナルエンドポイントを指定できます。この例では、Elasticsearch クラスターのインターナルエンドポイントが使用されます。ECS インスタンスと Elasticsearch クラスターが異なる VPC に存在する場合、URL に Elasticsearch クラスターのパブリックエンドポイントを指定し、Elasticsearch クラスターのパブリック IP アドレスホワイトリストを構成する必要があります。Elasticsearch クラスターのパブリック IP アドレスホワイトリストの構成方法については、Elasticsearch クラスターのパブリックまたはプライベート IP アドレスホワイトリストを構成する を参照してください。
- <yourTimeStreamIndex>:Prometheus によって同期されるデータを受信するために使用される時系列インデックスの名前を指定します。このようなインデックスは事前に作成する必要があります。この例では、prom_index という名前の時系列インデックスが使用されます。
- username:時系列インデックスにアクセスするために使用されるユーザー名を指定します。デフォルトのユーザー名は elastic です。カスタムユーザーアカウントを使用することもできます。ただし、カスタムユーザーが時系列インデックスに対するアクセス権限と操作権限を持っていることを確認する必要があります。ユーザーに必要な権限を付与する方法については、Elasticsearch X-Pack が提供する RBAC メカニズムを使用してアクセス制御を実装する を参照してください。
- password:ユーザー名に対応するパスワードを指定します。elastic アカウントのパスワードは、Elasticsearch クラスターの作成時に指定されます。パスワードを忘れた場合は、リセットできます。パスワードのリセット手順と注意事項については、Elasticsearch クラスターのアクセスパスワードをリセットする を参照してください。
- url:時系列インデックスにアクセスするために使用できる URL を指定します。このパラメーターは、http://<Elasticsearch クラスターのパブリックエンドポイントまたはインターナルエンドポイント>:9200/_time_stream/prom_write/<yourTimeStreamIndex> の形式で構成する必要があります。
- Prometheus を起動します。
./prometheus - データが Prometheus によって Elasticsearch クラスターの時系列インデックスに同期されているかどうかを確認します。Kibana コンソールで、次のコマンドを実行して確認を行います。
- prom_index 時系列インデックスのデータをクエリします。
GET _cat/indices/prom_index?v&s=iデータが prom_index 時系列インデックスに同期されている場合、次の図に示す結果が返されます。
- データを取得して表示できるかどうかを確認します。
GET prom_index/_searchデータが prom_index 時系列インデックスに同期されている場合、次の図に示す結果が返されます。
- prom_index 時系列インデックスのデータをクエリします。
手順 4:Grafana をダウンロード、起動、および構成する
- ECS インスタンスに接続します。詳細については、Workbench を使用して SSH 経由で Linux インスタンスに接続する を参照してください。
- ルートディレクトリから Grafana のインストールパッケージをダウンロードします。この例では、Grafana 9.0.2 インストールパッケージがダウンロードされます。ダウンロードコマンドの例:
cd ~ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.2.linux-amd64.tar.gz - インストールパッケージを解凍し、Grafana をインストールして、Grafana を起動します。
tar xvfz grafana-enterprise-9.0.2.linux-amd64.tar.gz cd grafana-9.0.2 ./bin/grafana-server - ブラウザーのアドレスバーに
http://<ECS インスタンスのパブリック IP アドレス>:3000と入力して、Grafana コンソールのログオンページに移動します。ユーザー名とパスワードを入力して、Grafana コンソールにログオンします。- Grafana コンソールに初めてログオンするときは、ログオンにデフォルトのユーザー名とデフォルトのパスワードを入力する必要があります。デフォルトのユーザー名とデフォルトのパスワードは admin です。Grafana コンソールにログオンすると、パスワードを変更するように求められます。パスワードを変更した後、Grafana コンソールに再度ログオンできます。
- 次の手順を実行して、ECS インスタンスのパブリック IP アドレスを取得できます。ECS コンソール にログオンし、左側のナビゲーションペインで [インスタンスとイメージ] > [インスタンス] を選択し、[インスタンス] ページで ECS インスタンスを見つけて、インスタンスの [IP アドレス] 列に表示されているパブリック IP アドレスを表示します。
- Grafana にアクセスするために使用できるデフォルトのポート番号は 3000 です。ポート 3000 経由でブラウザーで Grafana にアクセスするには、ECS インスタンスのセキュリティグループに受信許可ルールを追加する必要があります。受信許可ルールでは、[宛先] を 3000 に、[送信元] をクライアントの IP アドレスに設定する必要があります。セキュリティグループルールの追加方法については、セキュリティグループルールを追加する を参照してください。
- Grafana コンソールで、Prometheus のデータソースを追加します。
- Grafana コンソールの左側のナビゲーションペインで、 を選択します。
- [データソース] タブで、[データソースを追加] をクリックします。
- [時系列データベース] リストで、[prometheus] をクリックします。
- [設定] タブで、[データソース] に関する情報を構成します。
次の表に、この例で構成する必要があるパラメーターを示します。パラメーター 説明 URL 時系列インデックスにアクセスするために使用できる URL。このパラメーターは、http://<Elasticsearch クラスターのパブリックエンドポイントまたはインターナルエンドポイント>:9200/_time_stream/prom/<yourTimeStreamIndex> の形式で構成する必要があります。 説明- Elasticsearch クラスターのパブリックエンドポイントまたはインターナルエンドポイント:Elasticsearch コンソールの Elasticsearch クラスターの 基本情報 ページでエンドポイントを取得できます。Prometheus がインストールされている ECS インスタンスと Elasticsearch クラスターが同じ VPC に存在する場合、URL に Elasticsearch クラスターのインターナルエンドポイントを指定できます。この例では、Elasticsearch クラスターのインターナルエンドポイントが使用されます。ECS インスタンスと Elasticsearch クラスターが異なる VPC に存在する場合、URL に Elasticsearch クラスターのパブリックエンドポイントを指定し、Elasticsearch クラスターのパブリック IP アドレスホワイトリストを構成する必要があります。Elasticsearch クラスターのパブリック IP アドレスホワイトリストの構成方法については、Elasticsearch クラスターのパブリックまたはプライベート IP アドレスホワイトリストを構成する を参照してください。
- <yourTimeStreamIndex>:Prometheus によって同期されるデータを受信するために使用される時系列インデックスの名前を指定します。このようなインデックスは事前に作成する必要があります。この例では、prom_index という名前の時系列インデックスが使用されます。
基本認証 Elasticsearch クラスターの基本認証を有効にするかどうかを指定します。Elasticsearch クラスターの基本認証を有効にする場合、クラスターにアクセスするために使用できるユーザー名とパスワードを指定する必要があります。 ユーザー 時系列インデックスにアクセスするために使用されるユーザー名を指定します。デフォルトのユーザー名は elastic です。カスタムユーザーアカウントを使用することもできます。ただし、カスタムユーザーが時系列インデックスに対するアクセス権限と操作権限を持っていることを確認する必要があります。ユーザーに必要な権限を付与する方法については、Elasticsearch X-Pack が提供する RBAC メカニズムを使用してアクセス制御を実装する を参照してください。 ユーザー名に対応するパスワードを指定します。elastic アカウントのパスワードは、Elasticsearch クラスターの作成時に指定されます。パスワードを忘れた場合は、リセットできます。パスワードのリセット手順と注意事項については、Elasticsearch クラスターのアクセスパスワードをリセットする を参照してください。 - [保存してテスト] をクリックします。データソースが Grafana に追加されると、[データソースは動作しています] メッセージが表示されます。
- Prometheus のデータソースのメトリックデータを表示するために使用されるダッシュボードを作成します。
- Grafana コンソールの左側のナビゲーションペインで、 を選択します。
- [新しいパネルを追加] をクリックします。
- [データソース] ドロップダウンリストから追加した [データソース] の名前と時間範囲を選択します。[クエリを実行] をクリックして、データソースのデータをクエリします。

- 表示されるページの右上隅にある [保存] をクリックして、ダッシュボードを保存します。
- Grafana コンソールで、Node Exporter の組み込み Grafana ダッシュボードをインポートし、Prometheus のデータソースを構成して、メトリックモニタリング用のダッシュボードを生成します。
- Grafana コンソールの左側のナビゲーションペインで、 を選択します。
- [grafana.com 経由でインポート] フィールドに、Node Exporter の組み込み Grafana ダッシュボードの URL または ID を入力します。Node Exporter の組み込み Grafana ダッシュボードの URL は https://grafana.com/grafana/dashboards/1860 で、Node Exporter の組み込み Grafana ダッシュボードの ID は 1860 です。

- [ロード] をクリックします。
- 構成ページで、[prometheus] ドロップダウンリストから追加したデータソースを選択します。

- [インポート] をクリックします。
- ダッシュボードページの右上隅で、時間範囲を選択し、時間範囲内のメトリックデータのダッシュボードを表示します。
説明 Grafana の使用方法の詳細については、Grafana のドキュメント を参照してください。
> [データソース]
> [新しいダッシュボード]