Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

go-redis、Upstash、OpenTelemetryを使用した分散トレース

このチュートリアルでは、go-redisクライアントを使用してUpstash Redisデータベースに接続し、分散トレースを使用してアプリのパフォーマンスを監視する方法を学習します。

go-redisとは何ですか?

go-redisは、Golangで人気のあるRedisクライアントです。箱から出して、Redisサーバー、Sentinel、およびクラスターをサポートします。

Upstash Redisデータベースに接続するには、次のコードを使用します。

package main

import (
	"context"
	"fmt"

	"github.com/go-redis/redis/v8"
)

func main() {
	ctx := context.Background()

	opt, _ := redis.ParseURL("<connection-string-from-Upstash>")
	client := redis.NewClient(opt)

	if err := client.Set(ctx, "foo", "bar", 0); err != nil {
		panic(err)
	}
	fmt.Println(client.Get(ctx, "foo").Result())
}

任意のコマンドを実行するには、別のAPIを使用することもできます:

val, err := rdb.Do(ctx, "get", "key").Result()
if err != nil {
	if err == redis.Nil {
		fmt.Println("key does not exists")
		return
	}
	panic(err)
}

go-redisを使用して、APIへのデータまたはレート制限リクエストをキャッシュできます。クライアントの詳細については、RedisGolangのドキュメントを参照してください。

分散トレースとは何ですか?

分散トレースを使用すると、分散システム、特にマイクロサービスアーキテクチャを使用して構築されたシステムを介して伝播するリクエストを監視できます。

トレースにより、リクエストが分散システムを通過するときにリクエストを追跡できます。何が違うのか、何が壊れているのか、どのログとエラーが関連しているのかについての完全なコンテキストを取得します。

go-redis、Upstash、OpenTelemetryを使用した分散トレース

OpenTelemetryとは何ですか?

OpenTelemetryは、トレース、ログ、およびメトリックを収集およびエクスポートできるベンダー中立の標準です。

Otelを使用すると、開発者はベンダーに依存しない方法でテレメトリデータを収集およびエクスポートできます。 OpenTelemetryを使用すると、アプリケーションを一度インストルメント化してから、インストルメンテーションを変更せずにベンダーを追加または変更できます。たとえば、OpenTelemetryをサポートする人気のあるDataDogの代替案のリストを次に示します。

OpenTelemetryは、ほとんどのプログラミング言語で利用可能であり、さまざまな言語や環境間での相互運用性を提供します。

トレースとgo-redis

go-redisには、別のモジュールとして配布されるredisotelと呼ばれるOpenTelemetryインスツルメンテーションが付属しています:

go get github.com/go-redis/redis/extra/redisotel/v8

Redisクライアントをインストルメント化するには、redisotelが提供するフックを追加する必要があります:

import (
    "github.com/go-redis/redis/v8"
    "github.com/go-redis/redis/extra/redisotel/v8"
)

rdb := redis.NewClient(&redis.Options{...})

rdb.AddHook(redisotel.NewTracingHook())

トレースを機能させるには、アクティブなトレースコンテキストをgo-redisコマンドに渡す必要があります。例:

ctx := req.Context()
val, err := rdb.Get(ctx, "key").Result()

redisotelの詳細については、「GoRedisのパフォーマンスとエラーの監視」を参照してください。

アップトレース

Uptraceは、直感的なクエリビルダー、豊富なダッシュボード、自動アラート、ほとんどの言語とフレームワークの統合を備えたオープンソースのDataDog競合企業です。

Uptraceをインストールするには、DEB/RPMパッケージまたはコンパイル済みのバイナリをダウンロードします。

予想どおり、redisotelは、処理されたRedisコマンドのスパンを作成し、エラーが発生したときにそれを記録します。収集された情報がUptraceでどのように表示されるかを次に示します。

go-redis、Upstash、OpenTelemetryを使用した分散トレース

実行可能な例はGitHubにあります。

次は何ですか?

次に、OpenTelemetryインストルメンテーションをさらにインストールして、GinやGogRPCなどのアプリの他の側面を監視できます。

OpenTelemetry TracingAPIとMetricsAPIについて学習して、独自のインストルメンテーションを作成することもできます。


  1. Flutter、サーバーレスフレームワーク、Upstash(REDIS)を備えたフルスタックサーバーレスアプリ-パート2

    このチュートリアルシリーズのパート2へようこそ。最初のパートでは、Upstash、Serverless Framework、およびRedisを使用してRESTAPIを構築する方法を説明しました。 このパートでは、Flutterを使用してモバイルアプリケーションを構築し、RESTAPIエンドポイントを使用します。 始めましょう🙃 まず、フラッターをコンピューターにインストールして実行する必要があります フラッター IDEで新しいフラッタープロジェクトを作成し、任意の名前を付けます。 pubspec.yamlを開きます flutterプロジェクトのルートディレクトリにあるファイルを

  2. Flutter、サーバーレスフレームワーク、Upstash(REDIS)を備えたフルスタックサーバーレスアプリ-パート1

    この投稿では、データを保存するためのFlutter、Serverless Framework、Upstash、Redisを使用してサーバーレスモバイルアプリケーションを構築します。 Upstashとは? Upstashは、Redis用のサーバーレスデータベースです。 Upstashを使用すると、リクエストごとに支払います。これは、データベースが使用されていないときに課金されないことを意味します。 Upstashはデータベースを構成および管理します。これは、DynamoDBやFaunaなどの他のデータベースの強力な代替手段であり、などの利点があります。 低レイテンシ REDISAPIと同