メインコンテンツへスキップ
Redis データベースを接続して、Tony(データベースエンジニア)がキースペースの使用状況を検査し、コマンドパターンを分析し、データベースの健全性を監視できるようにします。

対応プラットフォーム

プラットフォームサポート
セルフホスト Redis6.x・7.x(バニラおよび Redis Stack)
Upstash Redis全プランティア
Redis Cloud全プランティア

前提条件

  • CloudThinker からネットワーク経由で到達可能な Redis インスタンス。
  • ACL ユーザー(セルフホスト)または RBAC ユーザー(Upstash/Redis Cloud)を作成するための管理者アクセス。
  • クレデンシャルを含む REDIS_URL 接続文字列。

セットアップ

Redis プラットフォームを選択して、具体的な接続手順を確認してください。
2 種類の一般的なデプロイ形態に対応しています:
  • バニラ Redis — モジュールなしの最小イメージ。コアの Redis コマンドのみ必要な場合に使用。
  • Redis Stack — RediSearch・RedisJSON・RedisTimeSeries・Bloom をバンドル。Tony が FT.*JSON.*TS.*BF.* コマンドを必要とする場合に使用。バニラではこれらのコマンドはソフトエラーになります。
1

Redis を起動する

バニラ Redis(モジュールなし):
docker run -d --name redis-min \
  -p 6379:6379 \
  redis:7-alpine \
  redis-server --requirepass <admin-password> --appendonly yes
管理者パスワードは --requirepass サーバーフラグで設定します。--appendonly yes は再起動後の耐久性のために AOF を有効にします。Redis Stack(モジュールと RedisInsight UI をポート 8001 で):
docker run -d --name redis-stack \
  -p 6379:6379 -p 8001:8001 \
  -e REDIS_ARGS="--requirepass <admin-password>" \
  redis/redis-stack:latest
インスタンスを確認します:
redis-cli -a <admin-password> ping
# PONG
2

読み取り専用 ACL ユーザーを作成する

CloudThinker 専用のユーザーを作成します。Redis ACL のユーザー名には [A-Za-z0-9_-] が使用できます。cloudthinker-readonly を使用してください。
redis-cli -a <admin-password> ACL SETUSER cloudthinker-readonly on \
  '><readonly-password>' \
  '~*' \
  '+@read' '-@write' '-@dangerous' '-@admin'
  • on — ユーザーを有効化
  • ><readonly-password> — パスワードを設定(> プレフィックスは ACL の構文)
  • ~* — 全キーにマッチ。より厳格なスコープには ~app:* を使用
  • +@read -@write -@dangerous -@admin — 読み取りのみ。書き込み・FLUSHALL/CONFIG/DEBUG/SHUTDOWN・レプリケーションをブロック
  • オプション:大規模コレクションで KEYSSMEMBERSHGETALL をブロックするには -@slow を追加
3

再起動後も ACL を維持する

コンテナ再起動後も ACL が維持されるよう users.acl ファイルをマウントします:
user default on ><admin-password> ~* &* +@all
user cloudthinker-readonly on ><readonly-password> ~* +@read -@write -@dangerous -@admin
ファイルをマウントして Redis を起動します:
-v $PWD/users.acl:/data/users.acl
サーバーコマンドに --aclfile /data/users.acl を追加してください。
4

読み取り専用ユーザーを確認する

redis-cli -u redis://cloudthinker-readonly:<readonly-password>@localhost:6379 SET foo bar
# (error) NOPERM ... has no permissions to run the 'set' command

redis-cli -u redis://cloudthinker-readonly:<readonly-password>@localhost:6379 GET foo
# 動作します
5

ネットワークアクセスを設定する

CloudThinker がデータベースに到達できるよう設定します:
  • CloudThinker の IP をファイアウォールまたはセキュリティグループに追加
  • Redis がアクセス可能なインターフェースにバインドされていることを確認(bind 127.0.0.1 のみは避ける)
6

CloudThinker に接続を追加する

Connections → Redis に移動し、REDIS_URL として接続文字列を入力します:
redis://cloudthinker-readonly:<readonly-password>@<your-host>:6379
デプロイが TLS を終端している場合は rediss://(2 番目の s に注意)を使用してください。Connect をクリックします。成功すると CloudThinker は Connected ステータスを表示します。

接続詳細

フィールド説明
REDIS_URLクレデンシャルを含む Redis 接続 URIredis://cloudthinker-readonly:pass@host:6379
TLS/SSLTLS を要求するには rediss:// スキームを使用Upstash は rediss://、それ以外は任意
PortRedis ポート6379(セルフホスト・Upstash)、13xxx(Redis Cloud)
Database index論理 DB インデックス0

必要な権限

CloudThinker ユーザーに推奨される ACL カテゴリ:
カテゴリ設定理由
+@read許可キーの読み取り、INFOCLIENT LIST などの実行
-@write拒否SETDEL などの変更コマンドをブロック
-@dangerous拒否FLUSHALLCONFIGDEBUGSHUTDOWN・レプリケーションをブロック
-@admin拒否管理コマンドをブロック
-@slow(任意)拒否大規模コレクションでの KEYSSMEMBERSHGETALL をブロック
キースコープ(全キーには ~*、プレフィックス制限には ~app:*)で CloudThinker ユーザーがアクセスできる範囲を絞れます。まず ~* から始め、必要に応じて絞り込んでください。

エージェントの機能

接続後、Tony は以下を実行できます:
機能説明
キースペース分析キーのパターン・サイズ・TTL 分布の検査
コマンド統計INFO commandstats によるコマンドレイテンシとスループットの確認
パフォーマンスメトリクスメモリ・接続数・エビクション・レプリケーションラグの監視
モジュールインサイトRediSearch インデックス・RedisJSON ドキュメント・TimeSeries の検査(Redis Stack のみ)

接続を確認する

@tony #report run Redis INFO and summarize memory usage, connected clients, and keyspace stats

プロンプト例

@tony #report analyze hot keys and memory distribution on the production Redis instance
@tony #report check memory fragmentation ratio and eviction stats
@tony #report review replication lag on the Redis replica

トラブルシューティング

  • 接続 URL 内のユーザー名とパスワードを確認してください
  • セルフホストの場合、ACL WHOAMIACL LIST でユーザーが有効になっているか確認してください
  • Upstash と Redis Cloud の場合、REST または SDK の URL ではなく TCP/Redis CLI の URL をコピーしているか確認してください
  • 書き込みコマンドに対しては、読み取り専用ユーザーが正常に機能しています
  • 読み取りもブロックされている場合は、ACL ルールを再確認してください — +@read が付与されている必要があります
  • CloudThinker からホストとポートに到達可能か確認してください
  • セルフホストの場合、Redis が 127.0.0.1 のみにバインドされていないか確認してください
  • CloudThinker の IP をファイアウォールまたはクラウドプロバイダーの許可リストに追加してください
  • バニラ Redis にはモジュールが含まれていません。必要なモジュールをバンドルした Redis Stack(redis/redis-stack)またはそれに相当するマネージドサービスを使用してください。

セキュリティ

  • 最小権限 — エージェントがユースケースに必要な権限のみを付与します。まず読み取り専用から始め、後から拡張してください。
  • デフォルトで読み取り専用 — エージェントにこの接続で変更を行わせる場合を除き、読み取り専用の認証情報を使用してください。
  • 認証情報のローテーション — 通常のスケジュールに従ってキーとトークンをローテーションしてください。接続を更新すると、CloudThinker が新しい値を自動的に取得します。
  • オフボーディング時に失効 — 接続を削除するか、チームメンバーが退職する際には、プロバイダー側で認証情報を無効化してください。
  • TLS には rediss:// を使用 — デプロイが TLS をサポートしている場合は、転送中のデータを暗号化するために rediss:// スキームを使用してください。
  • ACL の永続化 — セルフホストのデプロイでは aclfile を使用して、読み取り専用ユーザーが再起動後も維持されるようにしてください。

関連

Tony Agent

データベース特化の最適化エージェント
https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/mongodb.svg?fit=max&auto=format&n=aLd-ttc-SCW-aFky&q=85&s=6ba4577251f89473df297fbc739af375

MongoDB 接続

MongoDB データベースのセットアップ手順