TimeStream は、Alibaba Cloud Elasticsearch チームが開発した時系列エンジンであり、Elastic コミュニティ内の時系列プロダクトの機能を統合しています。Alibaba Cloud Elasticsearch は Prometheus および Grafana とシームレスに統合され、Prometheus Query API をサポートします。Grafana 内では、TimeStream インデックスを直接 Prometheus データソースとして使用できます。これにより、時系列メトリックデータのストレージ、クエリ、分析のパフォーマンスが向上し、コストも削減されます。本トピックでは、Alibaba Cloud Elasticsearch の TimeStream エンジンと Prometheus・Grafana を統合してクラウドネイティブな可観測性を実現する手順について説明します。
背景情報
Prometheus のローカル記憶域には、以下の制限があります:
データのレプリカが存在しません。ローカルクラスターのマシンがダウンすると、Prometheus にアクセスできなくなります。
単一マシンでのストレージです。データ量の増加に伴いハードウェアのボトルネックが発生し、スケールアウトが不可能です。
データバックアップ機能がありません。ハードディスクが破損した場合、データが復旧できない可能性があります。
ローカルディスクのストレージコストが高くなります。ホットデータとコールドデータの分離はサポートされていません。
このため、Prometheus の高可用性を確保するには、分散型かつ高可用性のリモートストレージを使用することを推奨します。Alibaba Cloud Elasticsearch の TimeStream エンジンは、Prometheus 向けのリモートストレージおよびクエリ機能を提供します。分散アーキテクチャ、弾力性、高可用性、バックアップ、ホット/コールドデータ向けの階層ストレージなど、Elasticsearch の特徴を活かした TimeStream は、Prometheus リモートストレージに最適な選択肢です。
以下の図は、Alibaba Cloud Elasticsearch が Prometheus および Grafana と統合される仕組みを示しています。
その仕組みは以下のとおりです:
Prometheus が各種 Exporter からデータを収集します。
Prometheus が remote write を使用して、収集したデータを Elasticsearch に同期します。
Kibana および Grafana を使用して、Elasticsearch に同期されたデータを表示できます。
説明Grafana で Elasticsearch データにアクセスする際は、ネイティブの Elasticsearch データソースまたは Prometheus データソースのいずれかを使用してください。メトリックデータの表示には PromQL を使用します。
前提条件
以下のバージョン要件を満たす Elasticsearch クラスターを作成済みである必要があります:クラスターのバージョンが V7.10 で、カーネルバージョンが V1.8.0 以降、またはクラスターのバージョンが V7.16 以降で、カーネルバージョンが V1.7.0 以降であること。Elasticsearch クラスターの作成方法については、「Alibaba Cloud Elasticsearch クラスターの作成」をご参照ください。
操作手順
ステップ 1:環境の準備
一般ビジネスエディション V7.16 の Alibaba Cloud Elasticsearch インスタンスを作成できます。
詳細な手順については、「Alibaba Cloud Elasticsearch インスタンスの作成」をご参照ください。
「ステップ 1」で作成したElasticsearchインスタンスと同じ仮想プライベートクラウド(VPC)内にECSインスタンスを作成し、Linuxオペレーティングシステムを使用できます。
ECS インスタンスの作成手順については、「インスタンス購入のカスタマイズ」をご参照ください。本 ECS インスタンスは、Alibaba Cloud Elasticsearch クラスターへのアクセス、および Prometheus・Grafana のインストールに使用し、Alibaba Cloud Elasticsearch、Prometheus、Grafana 間の統合を実現します。
Prometheus データを受信するための Elasticsearch TimeStream インデックスを作成できます。
Alibaba Cloud Elasticsearch インスタンスの Kibana コンソールにログインします。Kibana のホームページへ移動するよう案内されます。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
左側のナビゲーションウィンドウで
アイコンをクリックし、 を選択します。コンソールで、
PUT _time_stream/prom_indexコマンドを実行して、prom_index という名前の TimeStream インデックスを作成します。
ステップ 2:node_exporter のダウンロードと起動
Prometheus Node Exporter は、さまざまなハードウェアおよびカーネル関連のメトリックを公開し、Prometheus がメトリックデータを読み取れるようにします。Node Exporter の詳細およびインストール方法については、「node_exporter」をご参照ください。
ECS インスタンスに接続できます。
具体的な手順については、「パスワードまたは SSH キーペアを使用した Linux インスタンスへのログイン」をご参照ください。
説明本トピックでは、一般ユーザ権限を例として使用します。
node_exporter のインストールパッケージをダウンロードできます。
本例では node_exporter V1.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 を起動できます。
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64 ./node_exporter
ステップ 3:Prometheus のダウンロード、構成、および起動
ECS インスタンスに接続できます。
詳細については、「パスワードまたはキーペアを使用した Linux インスタンスへのログイン」をご参照ください。
Prometheus のインストールパッケージをルートディレクトリにダウンロードできます。
本例では Prometheus V2.36.2 を使用します。ダウンロードコマンドは以下のとおりです:
cd ~ wget https://github.com/prometheus/prometheus/releases/download/v2.36.2/prometheus-2.36.2.linux-amd64.tar.gzPrometheus のインストールパッケージを解凍できます。
tar xvfz prometheus-2.36.2.linux-amd64.tar.gzPrometheus フォルダ内の 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 エンドポイント:ポート を設定する必要があります。
本例では、Prometheus と Node Exporter が同一の ECS インスタンス上にデプロイされているため、Node Exporter エンドポイントとしてローカル IP アドレス 127.0.0.1、デフォルトポート 9100 を使用します。
remote_write
Elasticsearch インスタンス内の時系列インデックスへの接続情報を構成します。以下の基本パラメーターを必ず構成してください。高度なパラメーターについては、「remote_write」をご参照ください。
url: TimeStream インデックスへのアクセス URL。形式:http://<Elasticsearch インスタンスのパブリックまたは内部エンドポイント>:9200/_time_stream/prom_write/<yourTimeStreamIndex>。
説明Elasticsearch インスタンスのパブリックまたは内部エンドポイント: Elasticsearch インスタンスの「基本情報」ページから取得できます。Prometheus をデプロイする ECS インスタンスと Elasticsearch インスタンスが同一の VPC 内にある場合は、内部エンドポイントを使用できます(本トピックではこの方法を例として使用します)。異なる VPC の場合は、パブリックエンドポイントを使用し、パブリックアクセスのホワイトリストを構成する必要があります。詳細については、「インスタンスのパブリック/内部アクセスホワイトリストの構成」をご参照ください。
<yourTimeStreamIndex>: Prometheus データを受信するための Elasticsearch TimeStream インデックスです。事前にこのインデックスを作成する必要があります。本トピックでは prom_index インデックスを例として使用します。
username: TimeStream インデックスへのアクセスに使用するユーザー名です。デフォルト値は管理者アカウント elastic です。カスタムユーザーを使用することもできますが、そのユーザーが TimeStream インデックスへのアクセスおよび管理権限を持つことを確認してください。詳細については、「Elasticsearch X-Pack ロール管理によるユーザー権限の制御」をご参照ください。
password: TimeStream インデックスへのアクセスに使用するユーザーのパスワードです。elastic アカウントのパスワードは、インスタンス作成時に設定されます。パスワードを忘れてしまった場合は、再設定できます。パスワード再設定の注意事項および手順については、「インスタンスのアクセスパスワードの再設定」をご参照ください。
Prometheus を起動できます。
./prometheusPrometheus データが Elasticsearch TimeStream インデックスに同期されているかを確認できます。
Elasticsearch の Kibana コンソールで、以下のコマンドを実行して確認します:
prom_index インデックスにすでにデータが含まれているかを確認できます。
GET _cat/indices/prom_index?v&s=i期待される結果:

データのクエリおよび表示が可能かを確認できます。
GET prom_index/_search期待される結果:

ステップ 4:Grafana ダッシュボードのダウンロード、起動、および構成
ECS インスタンスに接続できます。
具体的な手順については、「パスワードまたは SSH キーペアを使用した Linux インスタンスへのログイン」をご参照ください。
Grafana のインストールパッケージをルートディレクトリにダウンロードできます。
本例では Grafana V9.0.2 を使用します。ダウンロードコマンドは以下のとおりです:
cd ~ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.2.linux-amd64.tar.gzGrafana のインストールパッケージを解凍し、Grafana を起動できます。
tar xvfz grafana-enterprise-9.0.2.linux-amd64.tar.gz cd grafana-9.0.2 ./bin/grafana-serverブラウザで Grafana エンドポイント
http://<ECS インスタンスのパブリック IP アドレス>:3000を入力します。Grafana のサインインページに移動し、ユーザー名とパスワードを入力して Grafana コンソールにアクセスします。Grafana コンソールに初めてログインする場合は、デフォルトのユーザー名およびパスワード(ともに `admin`)を使用します。ログイン後、パスワード変更を促されます。パスワードを変更すると、Grafana コンソールにアクセスできるようになります。
ご利用の ECS インスタンスのパブリック IP アドレス:「ECS コンソール」にアクセスし、該当インスタンスの IP アドレス 列から取得できます。
Grafana へのアクセスに使用されるデフォルトポートは 3000 です。ブラウザでポート 3000 にアクセスするには、ECS インスタンスのセキュリティグループにインバウンドルールを追加し、宛先 を 3000 に、送信元 をクライアントの IP アドレスに設定する必要があります。詳細については、「セキュリティグループルールの追加」をご参照ください。
Grafana で Prometheus データソースを作成できます。
Grafana コンソールの左側ナビゲーションウィンドウで、 を選択します。
Data sources タブで、Add data source をクリックします。
Time series databases リストから、Prometheus をクリックします。
Settings タブで、Prometheus データソースの情報を構成できます。

本トピックで必須となる構成パラメーターは以下のとおりです:
パラメーター
説明
URL
TimeStream インデックスへのアクセス URL。形式:http://<Elasticsearch インスタンスのパブリックまたは内部エンドポイント>:9200/_time_stream/prom/<yourTimeStreamIndex>。
説明Elasticsearch インスタンスのパブリックまたは内部エンドポイント: Elasticsearch インスタンスの「基本情報」ページから取得できます。Prometheus をデプロイする ECS インスタンスと Elasticsearch インスタンスが同一の VPC 内にある場合は、内部エンドポイントを使用できます(本トピックではこの方法を例として使用します)。異なる VPC の場合は、パブリックエンドポイントを使用し、パブリックアクセスのホワイトリストを構成する必要があります。詳細については、「インスタンスのパブリック/内部アクセスホワイトリストの構成」をご参照ください。
<yourTimeStreamIndex>: Prometheus データを受信するための Elasticsearch TimeStream インデックスです。事前にこのインデックスを作成する必要があります。本トピックでは prom_index インデックスを例として使用します。
Basic auth
Elasticsearch インスタンスに対して Basic auth を有効化します。有効化した場合、Elasticsearch インスタンスへのアクセスに使用するユーザー名およびパスワードを構成します。
User
TimeStream インデックスへのアクセスに使用するユーザー名です。デフォルトは管理者アカウント elastic です。カスタムユーザーを使用することもできますが、そのユーザーが TimeStream インデックスへのアクセスおよび管理権限を持つことを確認してください。詳細については、「Elasticsearch X-Pack ロール管理によるユーザー権限の管理」をご参照ください。
TimeStream インデックスにアクセスするユーザーのパスワードです。elastic アカウントのパスワードは、インスタンス作成時に設定されます。パスワードを忘れてしまった場合は、再設定できます。詳細については、「インスタンスのアクセスパスワードの再設定」をご参照ください。
Save&test をクリックします。
構成が正常に完了すると、Data source is working と表示されます。
Grafana で Prometheus データソースを表示するダッシュボードを作成できます。
Grafana コンソールの左側ナビゲーションウィンドウで、 を選択します。
Add a new panel をクリックします。
Data source および時間範囲を選択し、Run queries をクリックしてデータをクエリします。

右上隅の Save をクリックしてダッシュボードを保存します。
Grafana で、node_exporter 向けの組み込み Grafana ダッシュボードをインポートできます。Prometheus データソースを構成することで、メトリック監視用のダッシュボードを生成します。
Grafana コンソールの左側ナビゲーションウィンドウで、 を選択します。
Import via grafana.com のテキストボックスに、node_exporter 向けの Grafana URL または ID(例:https://grafana.com/grafana/dashboards/1860 または 1860)を入力します。

Load をクリックします。
構成ページで、既に作成した Prometheus データソースを選択します。

Import をクリックします。
ダッシュボードページの右上隅でクエリ時間範囲を選択します。対応する時間範囲のメトリック監視ダッシュボードを表示できます。
説明詳細については、「Grafana ドキュメント」をご参照ください。
> Data sources
> New dashboard