Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

go-redis, Upstash 및 OpenTelemetry를 사용한 분산 추적

이 자습서에서는 go-redis 클라이언트를 사용하여 Upstash 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에 대한 속도 제한 요청을 사용할 수 있습니다. 클라이언트에 대해 자세히 알아보려면 Redis Golang 설명서를 참조하세요.

분산 추적이란 무엇입니까?

분산 추적을 사용하면 특히 마이크로서비스 아키텍처를 사용하여 구축된 분산 시스템을 통해 전파되는 요청을 관찰할 수 있습니다.

추적을 통해 요청이 분산 시스템을 통해 이동할 때 추적할 수 있습니다. 무엇이 다른지, 무엇이 손상되었는지, 어떤 로그 및 오류가 관련이 있는지에 대한 전체 컨텍스트를 얻을 수 있습니다.

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에 대한 자세한 내용은 Go Redis 성능 및 오류 모니터링을 참조하십시오.

업트레이스

Uptrace는 직관적인 쿼리 빌더, 풍부한 대시보드, 자동 경고, 대부분의 언어 및 프레임워크에 대한 통합을 제공하는 오픈 소스 DataDog 경쟁업체입니다.

DEB/RPM 패키지 또는 미리 컴파일된 바이너리를 다운로드하여 Uptrace를 설치할 수 있습니다.

예상대로 redisotel은 처리된 Redis 명령에 대한 범위를 만들고 오류가 발생하면 이를 기록합니다. 수집된 정보가 Uptrace에 표시되는 방식은 다음과 같습니다.

go-redis, Upstash 및 OpenTelemetry를 사용한 분산 추적

GitHub에서 실행 가능한 예제를 찾을 수 있습니다.

다음은 무엇입니까?

다음으로 더 많은 OpenTelemetry 계측을 설치하여 앱의 다른 측면(예:Gin 또는 Go gRPC)을 모니터링할 수 있습니다.

또한 OpenTelemetry Tracing API 및 Metrics API에 대해 학습하여 고유한 계측을 생성할 수 있습니다.