mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 10:11:03 +00:00
Gather dyanmodb latency
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/dynamodb"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/ugorji/go/codec"
|
||||
"golang.org/x/net/context"
|
||||
|
||||
@@ -25,6 +26,18 @@ const (
|
||||
reportField = "report"
|
||||
)
|
||||
|
||||
var (
|
||||
dynamoRequestDuration = prometheus.NewSummaryVec(prometheus.SummaryOpts{
|
||||
Namespace: "scope",
|
||||
Name: "dynamo_request_duration_nanoseconds",
|
||||
Help: "Time spent doing DynamoDB requests.",
|
||||
}, []string{"method", "status_code"})
|
||||
)
|
||||
|
||||
func init() {
|
||||
prometheus.MustRegister(dynamoRequestDuration)
|
||||
}
|
||||
|
||||
// DynamoDBCollector is a Collector which can also CreateTables
|
||||
type DynamoDBCollector interface {
|
||||
app.Collector
|
||||
@@ -99,6 +112,7 @@ func (c *dynamoDBCollector) CreateTables() error {
|
||||
|
||||
func (c *dynamoDBCollector) getRows(userid string, row int64, start, end time.Time, input report.Report) (report.Report, error) {
|
||||
rowKey := fmt.Sprintf("%s-%s", userid, strconv.FormatInt(row, 10))
|
||||
startTime := time.Now()
|
||||
resp, err := c.db.Query(&dynamodb.QueryInput{
|
||||
TableName: aws.String(tableName),
|
||||
KeyConditions: map[string]*dynamodb.Condition{
|
||||
@@ -117,8 +131,12 @@ func (c *dynamoDBCollector) getRows(userid string, row int64, start, end time.Ti
|
||||
},
|
||||
},
|
||||
})
|
||||
duration := time.Now().Sub(startTime)
|
||||
if err != nil {
|
||||
dynamoRequestDuration.WithLabelValues("Query", "500").Observe(float64(duration.Nanoseconds()))
|
||||
return report.MakeReport(), err
|
||||
} else {
|
||||
dynamoRequestDuration.WithLabelValues("Query", "200").Observe(float64(duration.Nanoseconds()))
|
||||
}
|
||||
result := input
|
||||
for _, item := range resp.Items {
|
||||
@@ -182,6 +200,7 @@ func (c *dynamoDBCollector) Add(ctx context.Context, rep report.Report) error {
|
||||
|
||||
now := time.Now()
|
||||
rowKey := fmt.Sprintf("%s-%s", userid, strconv.FormatInt(now.UnixNano()/time.Hour.Nanoseconds(), 10))
|
||||
startTime := time.Now()
|
||||
_, err = c.db.PutItem(&dynamodb.PutItemInput{
|
||||
TableName: aws.String(tableName),
|
||||
Item: map[string]*dynamodb.AttributeValue{
|
||||
@@ -196,9 +215,12 @@ func (c *dynamoDBCollector) Add(ctx context.Context, rep report.Report) error {
|
||||
},
|
||||
},
|
||||
})
|
||||
duration := time.Now().Sub(startTime)
|
||||
if err != nil {
|
||||
dynamoRequestDuration.WithLabelValues("PutItem", "500").Observe(float64(duration.Nanoseconds()))
|
||||
return err
|
||||
}
|
||||
dynamoRequestDuration.WithLabelValues("PutItem", "200").Observe(float64(duration.Nanoseconds()))
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user