Redis における過剰または長時間実行されるスロークエリ(例:20 秒)は、シングルスレッドの操作キューをブロックし、サービスの可用性を損なう可能性があります。Alibaba Cloud Elasticsearch と Rsbeat を使用して Redis スローログをリアルタイムで収集・分析することで、パフォーマンスの問題を迅速に検出し、解決できます。
背景情報
Rsbeat は Redis スローログを収集し、Kibana コンソールでの可視化および分析のために Elasticsearch に送信します。本トピックでは以下の用語を使用します。
-
Elasticsearch:Apache ライセンスに基づいてリリースされた Lucene ベースの分散型リアルタイム検索・分析エンジンです。大規模なデータセットをニアリアルタイムで保存、クエリ、分析できます。
Alibaba Cloud Elasticsearch は、Security、Machine Learning、Graph、Application Performance Monitoring (APM) などのオープンソース Elasticsearch の機能と互換性があります。バージョン 5.5.3、6.3.2、6.7.0、6.8.0、7.4.0 などでリリースされています。商用プラグイン X-Pack をサポートし、エンタープライズレベルの権限管理、セキュリティモニタリングとアラート、自動化レポートを提供します。本例では Alibaba Cloud Elasticsearch を使用します。詳細については、「Alibaba Cloud Elasticsearch とは」をご参照ください。
-
Rsbeat:Redis スローログを収集・分析するために使用するデータシッパーです。詳細については、「Rsbeat 公式ドキュメント」をご参照ください。
-
Redis:オープンソースのインメモリデータ構造ストアです。データベース、キャッシュ、メッセージングミドルウェアとして使用できます。詳細については、「Redis 公式ドキュメント」をご参照ください。
ApsaraDB for Redis はネイティブ Redis プロトコルと互換性があり、高可用性ホットスタンバイアーキテクチャによるハイブリッドメモリ・ディスクストレージをサポートし、高性能な読み取り/書き込み操作の要件に対応できます。本例では ApsaraDB for Redis を使用します。詳細については、「ApsaraDB for Redis とは」をご参照ください。
操作手順
-
同一 VPC 内に Alibaba Cloud Elasticsearch クラスター、ApsaraDB for Redis インスタンス、および Elastic Compute Service (ECS) インスタンスを作成します。
-
ステップ 1:ApsaraDB for Redis インスタンスのスロークエリパラメーターを設定する
Redis スローログを生成する条件と、記録可能なスローログの最大数を要件に応じて設定します。
-
ECS インスタンスに Rsbeat をインストールし、Rsbeat 設定ファイル内で ApsaraDB for Redis インスタンスおよび Alibaba Cloud Elasticsearch クラスターを指定します。
-
ステップ 3:グラフを使用して Kibana コンソールで Redis スローログを分析する
Alibaba Cloud Elasticsearch クラスターの Kibana コンソールで Redis スローログの詳細を表示し、ビジネス要件に基づいてログを分析します。
事前準備
-
Alibaba Cloud Elasticsearch クラスターを作成し、自動インデックス作成機能を有効にします。
詳細については、「Alibaba Cloud Elasticsearch クラスターの作成」および「YML ファイルの設定」をご参照ください。本例では Standard Edition の Elasticsearch V6.7 クラスターを使用します。
-
ApsaraDB for Redis インスタンスを作成します。
詳細については、「ステップ 1:ApsaraDB for Redis インスタンスの作成」をご参照ください。本例では Community Edition の ApsaraDB for Redis V5.0 インスタンスを使用します。このインスタンスは Alibaba Cloud Elasticsearch クラスターと同じ VPC 内に配置されており、内部ネットワーク経由で Elasticsearch クラスターにアクセスできます。
-
ECS インスタンスを作成します。
詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。本例では 64 ビット CentOS 7.6 イメージを実行する ECS インスタンスを使用します。このインスタンスは ApsaraDB for Redis インスタンスおよび Alibaba Cloud Elasticsearch クラスターと同じ VPC 内に配置されています。
-
ApsaraDB for Redis インスタンスへのアクセス用 IP アドレスホワイトリストを設定します。
ApsaraDB for Redis インスタンスの IP アドレスホワイトリストに ECS インスタンスのプライベート IP アドレスを追加します。詳細については、「ホワイトリストの設定」をご参照ください。
ステップ 1:ApsaraDB for Redis インスタンスのスロークエリパラメーターを設定する
-
[ApsaraDB for Redis コンソール] にログインします。
-
上部ナビゲーションバーでリージョンを選択します。
-
[クラスター] ページで、対象インスタンスの ID をクリックします。
-
左側ナビゲーションウィンドウで [パラメーターの設定] をクリックします。
-
[システムパラメーター] タブで、slowlog-log-slower-than パラメーターおよび slowlog-max-len パラメーターを検索し、要件に応じてこれらのパラメーターを変更します。
パラメーター
説明
例
slowlog-log-slower-than
コマンドのランタイムがこのパラメーターの値を超える場合、そのコマンドはスロークエリとして定義され、スローログとして記録されます。ランタイムにはキューイングに要する時間が含まれません。単位:マイクロ秒。デフォルト値:10000(10 ミリ秒)。
重要このパラメーターを負の数に設定すると、ApsaraDB for Redis はスロークエリをスローログとして記録しません。0 に設定すると、すべてのコマンドが記録されます。
本例では、このパラメーターを 20000 に設定しています。これは、ランタイムが 20 ミリ秒を超えるコマンドがスローログとして記録されることを意味します。
slowlog-max-len
スローログとして記録可能なスロークエリコマンドの最大数です。記録されたコマンドの数がこのパラメーターの値を超えると、ApsaraDB for Redis は最も古いスローログを削除します。
本例では、このパラメーターを 100 に設定しています。これは、ApsaraDB for Redis が最新の 100 件のスロークエリコマンドをスローログとして記録することを意味します。
ステップ 2:Rsbeat をインストールおよび設定する
-
ECS インスタンスに接続します。
詳細については、「ECS インスタンスへの接続」をご参照ください。
-
Rsbeat のパッケージをダウンロードして解凍します。
本例では Rsbeat 5.3.2 を使用します。
wget https://github.com/Yourdream/rsbeat/archive/master.zip unzip master.zip -
Rsbeat の設定を変更します。
-
次のコマンドを実行して rsbeat.yml ファイルを開きます。
cd rsbeat-master vim rsbeat.yml -
rsbeat セクションおよび output.elasticsearch セクションの設定を以下の指示に従って変更し、変更内容を保存します。

表 1. rsbeat セクションの設定 パラメーター
説明
period
Rsbeat が Redis スローログを Elasticsearch クラスターに送信する間隔です。
redis
ApsaraDB for Redis インスタンスに接続するためのエンドポイントです。詳細については、「エンドポイントの確認」をご参照ください。
重要ApsaraDB for Redis インスタンスにアクセスするためのパスワードは Rsbeat の設定ファイル内に指定しません。Rsbeat が ApsaraDB for Redis インスタンスにアクセスできるようにするには、エンドポイントを取得した後にパスワードなしのアクセスを有効にする必要があります。詳細については、「パスワードなしのアクセスの有効化」をご参照ください。
slowerThan
Redis サーバーに
config set slowlog-log-slower-thanコマンドを送信するのに必要な時間です。単位:マイクロ秒。表 2. output.elasticsearch セクションの設定 パラメーター
説明
hosts
Elasticsearch クラスターにアクセスするためのエンドポイントです。Elasticsearch クラスターの基本情報ページでエンドポイントを確認できます。詳細については、「クラスターの基本情報の確認」をご参照ください。
username
Elasticsearch クラスターにアクセスするためのユーザー名です。デフォルトのユーザー名は elastic です。
password
Elasticsearch クラスターにアクセスするためのパスワードです。このパスワードは Elasticsearch クラスター作成時に指定します。パスワードを忘れた場合はリセットできます。パスワードリセット時の注意事項および手順の詳細については、「Elasticsearch クラスターのアクセスパスワードのリセット」をご参照ください。
template.overwrite
Elasticsearch クラスターのインデックステンプレートと同じ名前の Rsbeat 作成インデックステンプレートが、Elasticsearch クラスターのインデックステンプレートを上書きするかどうかを指定します。デフォルト値:true。
-
-
Rsbeat サービスを起動します。
./rsbeat.linux.amd64 -c rsbeat.yml -e -d "*"
ステップ 3:グラフを使用して Kibana コンソールで Redis スローログを分析する
-
Elasticsearch クラスターの Kibana コンソールにログインします。
詳細については、「Kibana コンソールへのログイン」をご参照ください。
-
インデックスパターンを作成します。
- 左側ナビゲーションウィンドウで [Management] をクリックします。
- [Kibana] セクションで [Index Patterns] をクリックします。
- [Create index pattern] をクリックします。
-
表示されたセクションで、[Index pattern] フィールドにインデックスパターン名を入力し、[Next step] をクリックします。

- [Time Filter field name] を指定します。本トピックでは、このパラメーターを [@timestamp] に設定します。
- [Create index pattern] をクリックします。
-
Redis スローログの詳細を表示します。
-
左側ナビゲーションウィンドウで [Discover] をクリックします。
-
[Discover] ページの左側で、[Add a filter] 下のドロップダウンリストから rsbeat-* を選択します。
-
ページ右上隅で時間範囲を選択し、その時間範囲内の Redis スローログの詳細を表示します。

-
-
Redis スローログの件数が最も多い上位 10 件のキーを降順で記録します。
-
左側ナビゲーションウィンドウで [Visualize] をクリックします。
-
[Visualize] ページで
アイコンをクリックします。 -
[New Visualization] ダイアログボックスで [Pie] をクリックします。

-
[From a New Search, Select Index] セクションで、rsbeat-* をクリックします。

-
[Metrics] セクションおよび [Buckets] セクションのパラメーターを下図に従って設定します。

-
アイコンをクリックして結果を表示します。
説明Kibana コンソールの使用に関する注意事項の詳細については、「Kibana ユーザーガイド」をご参照ください。
-