Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Report GraphQL stats from alpha. #4607

Merged
merged 4 commits into from
Jan 21, 2020
Merged

Report GraphQL stats from alpha. #4607

merged 4 commits into from
Jan 21, 2020

Conversation

arijitAD
Copy link

@arijitAD arijitAD commented Jan 17, 2020

This will help to get stats of graphql+- query adoption.


This change is Reviewable

@arijitAD arijitAD requested a review from a team as a code owner January 17, 2020 11:03
Copy link
Contributor

@mangalaman93 mangalaman93 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 5 files reviewed, 10 unresolved discussions (waiting on @arijitAD, @mangalaman93, and @manishrjain)


dgraph/cmd/alpha/run.go, line 504 at r1 (raw file):

	if Alpha.Conf.GetBool("telemetry") {
		go edgraph.PeriodicallyPostTelemetry()

should stop this go routine when server shuts down and move this code up before the previous goroutine.


dgraph/cmd/zero/zero.go, line 113 at r2 (raw file):

		}
		ms := s.membershipState()
		t := telemetry.NewZeroTelemetry(ms)

Don't have to use telemetry word twice.


edgraph/server.go, line 89 at r1 (raw file):

type Server struct{}

// PeriodicallyPostTelemetry periodically report telemetry data for alpha.

minor: reports*


edgraph/server.go, line 103 at r2 (raw file):

		}
		ms := worker.GetMembershipState()
		t := telemetry.NewAlphaTelemetry(ms, graphqlQueryCount, nonGraphqlQueryCount)

you can just set the values here itself.


edgraph/server.go, line 104 at r2 (raw file):

		ms := worker.GetMembershipState()
		t := telemetry.NewAlphaTelemetry(ms, graphqlQueryCount, nonGraphqlQueryCount)
		if t == nil {

nil check seems unnecessary


telemetry/telemetry.go, line 2 at r2 (raw file):

/*
 * Copyright 2018 Dgraph Labs, Inc. and Contributors

2020


telemetry/telemetry.go, line 81 at r2 (raw file):

func NewAlphaTelemetry(ms *pb.MembershipState, graphqlQueryCount uint64,
	nonGraphqlQueryCount uint64) *Telemetry {
	t := &Telemetry{

call return here


telemetry/telemetry.go, line 111 at r2 (raw file):

		"A0554BAFF14C292A40BC252BB9FF008736A0FD1D44E085")

	client := &http.Client{}

just use the default HTTP client.


telemetry/telemetry.go, line 122 at r2 (raw file):

		return err
	}
	glog.V(2).Infof("Telemetry response status: %v", resp.Status)

can log at just one the places

@mangalaman93 mangalaman93 self-requested a review January 17, 2020 11:31
Copy link
Contributor

@campoy campoy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 5 files reviewed, 16 unresolved discussions (waiting on @arijitAD, @mangalaman93, and @manishrjain)


edgraph/server.go, line 90 at r2 (raw file):

// PeriodicallyPostTelemetry periodically report telemetry data for alpha.
func PeriodicallyPostTelemetry() {

receive a channel or a WaitGroup so you can shutdown this goroutine.


edgraph/server.go, line 104 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

nil check seems unnecessary

unnecessary, indeed


edgraph/server.go, line 107 at r2 (raw file):

			continue
		}
		t.SinceHours = int(time.Since(start).Hours())

Instead of reporting the uptime, it'd be much more useful if you reported the number of seconds since the last metric was successfully sent (lastPostedAt)


edgraph/server.go, line 111 at r2 (raw file):

		err := t.Post()
		glog.V(2).Infof("Telemetry data posted with error: %v", err)

this will print nil every single time this works?


telemetry/telemetry.go, line 45 at r2 (raw file):

	Version              string
	GraphqlQueryCount    uint64
	NonGraphqlQueryCount uint64

It'd be better to just count the queries per language

GraphqlQueryCount    uint64
GraphqlpmQueryCount  uint64

telemetry/telemetry.go, line 52 at r2 (raw file):

// NewZeroTelemetry returns a Telemetry struct that holds information about the state of zero
// server.
func NewZeroTelemetry(ms *pb.MembershipState) *Telemetry {

This could be called NewZero, since you'll call it telemetry.NewZero


telemetry/telemetry.go, line 79 at r2 (raw file):

// NewAlphaTelemetry returns a Telemetry struct that holds information about the state of alpha
// server.
func NewAlphaTelemetry(ms *pb.MembershipState, graphqlQueryCount uint64,

This could be called NewAlpha, since you'll call it telemetry.NewAlpha

@arijitAD arijitAD force-pushed the arijitAD/graphql-stats branch 3 times, most recently from 3d47a16 to ab5769f Compare January 20, 2020 09:23
Copy link
Author

@arijitAD arijitAD left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 5 files reviewed, 15 unresolved discussions (waiting on @campoy, @golangcibot, @mangalaman93, and @manishrjain)


dgraph/cmd/alpha/run.go, line 504 at r1 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

should stop this go routine when server shuts down and move this code up before the previous goroutine.

Done.


dgraph/cmd/zero/zero.go, line 34 at r1 (raw file):

Previously, golangcibot (Bot from GolangCI) wrote…

File is not gofmt-ed with -s (from gofmt)

	"github.com/dgraph-io/dgraph/telemetry"
	"github.com/dgraph-io/dgraph/x"

Done.


dgraph/cmd/zero/zero.go, line 113 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

Don't have to use telemetry word twice.

Done.


edgraph/server.go, line 90 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

receive a channel or a WaitGroup so you can shutdown this goroutine.

Done.


edgraph/server.go, line 103 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

you can just set the values here itself.

Done.


edgraph/server.go, line 104 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

unnecessary, indeed

Done.


edgraph/server.go, line 107 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

Instead of reporting the uptime, it'd be much more useful if you reported the number of seconds since the last metric was successfully sent (lastPostedAt)

Done.


edgraph/server.go, line 111 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

this will print nil every single time this works?

Done.


telemetry/telemetry.go, line 2 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

2020

Done.


telemetry/telemetry.go, line 45 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

It'd be better to just count the queries per language

GraphqlQueryCount    uint64
GraphqlpmQueryCount  uint64

Done.


telemetry/telemetry.go, line 52 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

This could be called NewZero, since you'll call it telemetry.NewZero

Done.


telemetry/telemetry.go, line 79 at r2 (raw file):

Previously, campoy (Francesc Campoy) wrote…

This could be called NewAlpha, since you'll call it telemetry.NewAlpha

Done.


telemetry/telemetry.go, line 81 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

call return here

Done.


telemetry/telemetry.go, line 111 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

just use the default HTTP client.

Done.


telemetry/telemetry.go, line 122 at r2 (raw file):

Previously, mangalaman93 (Aman Mangal) wrote…

can log at just one the places

Done.

Copy link
Contributor

@manishrjain manishrjain left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

Reviewed 1 of 2 files at r2, 4 of 4 files at r3.
Reviewable status: all files reviewed, 21 unresolved discussions (waiting on @arijitAD, @campoy, @golangcibot, and @mangalaman93)


dgraph/cmd/alpha/run.go, line 491 at r3 (raw file):

	go serveHTTP(httpListener, tlsCfg, &wg)

	doneTelemetry := make(chan interface{})

y.Closer is the right thing to use in general.


dgraph/cmd/zero/zero.go, line 126 at r3 (raw file):

				lastPostedAt = time.Now()
			} else {
				glog.V(1).Infof("Telemetry couldn't be posted. Error: %v", err)

V(2).


edgraph/server.go, line 83 at r3 (raw file):

var (
	graphqlQueryCount   uint64

numQueries
numGraphQL


edgraph/server.go, line 113 at r3 (raw file):

			err := t.Post()
			if err == nil {
				atomic.StoreUint64(&graphqlQueryCount, 0)

curVal := atomic.SwapUint64(addr, 0)

curVal should be set in the metrics being sent.

If you fail sending, then I'd do atomic.AddUint64(addr, curVal).


edgraph/server.go, line 121 at r3 (raw file):

		case <-doneTelemetry:
			glog.V(2).Infof("Stopping reporting of Telemetry data.")
			wg.Done()

You can just skip stopping the goroutine. No need for closer or WaitGroup.


telemetry/telemetry.go, line 2 at r2 (raw file):

Previously, arijitAD (Arijit Das) wrote…

Done.

If this code was moved, then keep the original date.


telemetry/telemetry.go, line 49 at r3 (raw file):

}

var keenURL = "https://ping.dgraph.io/3.0/projects/5b809dfac9e77c0001783ad0/events"

var url

@arijitAD arijitAD force-pushed the arijitAD/graphql-stats branch 3 times, most recently from 66f1786 to 8d42b3b Compare January 21, 2020 09:24
Copy link
Author

@arijitAD arijitAD left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 1 of 5 files reviewed, 21 unresolved discussions (waiting on @campoy, @golangcibot, @mangalaman93, and @manishrjain)


dgraph/cmd/alpha/run.go, line 491 at r3 (raw file):

Previously, manishrjain (Manish R Jain) wrote…

y.Closer is the right thing to use in general.

Done.


dgraph/cmd/zero/zero.go, line 126 at r3 (raw file):

Previously, manishrjain (Manish R Jain) wrote…

V(2).

Done.


edgraph/server.go, line 83 at r3 (raw file):

Previously, manishrjain (Manish R Jain) wrote…

numQueries
numGraphQL

Done.


edgraph/server.go, line 113 at r3 (raw file):

Previously, manishrjain (Manish R Jain) wrote…

curVal := atomic.SwapUint64(addr, 0)

curVal should be set in the metrics being sent.

If you fail sending, then I'd do atomic.AddUint64(addr, curVal).

Done.


edgraph/server.go, line 121 at r3 (raw file):

Previously, manishrjain (Manish R Jain) wrote…

You can just skip stopping the goroutine. No need for closer or WaitGroup.

Done.


telemetry/telemetry.go, line 49 at r3 (raw file):

Previously, manishrjain (Manish R Jain) wrote…

var url

Done.

@arijitAD arijitAD merged commit 4d1d0e0 into master Jan 21, 2020
@arijitAD arijitAD deleted the arijitAD/graphql-stats branch January 21, 2020 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants