add skaffold and fix bugs
This commit is contained in:
		| @@ -1,7 +1,6 @@ | ||||
| package mongo | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	"log" | ||||
| 	"time" | ||||
|  | ||||
| @@ -14,27 +13,12 @@ import ( | ||||
|  | ||||
| const promSubsystem = "database" | ||||
|  | ||||
| var ( | ||||
| 	promDbHeartbeat = promauto.NewHistogramVec(prom.HistogramOpts{ | ||||
| 		Namespace: globals.PrometheusPrefix, Subsystem: promSubsystem, | ||||
| 		Name:    "heartbeat_time", | ||||
| 		Help:    "Time in seconds for succeeded heartbeat, or 0 on failure", | ||||
| 		Buckets: []float64{0.1, 0.2, 0.5, 1, 5, 10, 50}, | ||||
| 	}, []string{"connection_id"}) | ||||
|  | ||||
| 	promDbCmd = promauto.NewHistogramVec(prom.HistogramOpts{ | ||||
| 		Namespace: globals.PrometheusPrefix, Subsystem: promSubsystem, | ||||
| 		Name:    "operation_latency", // "command_time", | ||||
| 		Help:    "Time in seconds of commands", | ||||
| 		Buckets: []float64{0.1, 0.2, 0.5, 1, 5, 10, 50}, | ||||
| 	}, []string{"connection_id", "command_name"}) | ||||
|  | ||||
| 	promDbCmdErr = promauto.NewCounterVec(prom.CounterOpts{ | ||||
| 		Namespace: globals.PrometheusPrefix, Subsystem: promSubsystem, | ||||
| 		Name: "errors", | ||||
| 		Help: "Failed commands (also reflected elsewhere)", | ||||
| 	}, []string{"connection_id", "command_name"}) | ||||
| ) | ||||
| var promDbHeartbeat = promauto.NewHistogramVec(prom.HistogramOpts{ | ||||
| 	Namespace: globals.PrometheusPrefix, Subsystem: promSubsystem, | ||||
| 	Name:    "heartbeat_time", | ||||
| 	Help:    "Time in seconds for succeeded heartbeat, or 0 on failure", | ||||
| 	Buckets: []float64{0.1, 0.2, 0.5, 1, 5, 10, 50}, | ||||
| }, []string{"connection_id"}) | ||||
|  | ||||
| func monitoredClientOptions() *mongoOpt.ClientOptions { | ||||
| 	return mongoOpt.Client(). | ||||
| @@ -46,15 +30,5 @@ func monitoredClientOptions() *mongoOpt.ClientOptions { | ||||
| 				promDbHeartbeat.WithLabelValues(ev.ConnectionID).Observe(0) | ||||
| 				log.Printf("database heartbeat failed on connection %q: %e", ev.ConnectionID, ev.Failure) | ||||
| 			}, | ||||
| 		}). | ||||
| 		SetMonitor(&mongoEvent.CommandMonitor{ | ||||
| 			Succeeded: func(_ context.Context, ev *mongoEvent.CommandSucceededEvent) { | ||||
| 				promDbCmd.WithLabelValues(ev.ConnectionID, ev.CommandName).Observe(time.Duration(ev.DurationNanos).Seconds()) | ||||
| 			}, | ||||
| 			Failed: func(_ context.Context, ev *mongoEvent.CommandFailedEvent) { | ||||
| 				promDbCmd.WithLabelValues(ev.ConnectionID, ev.CommandName).Observe(time.Duration(ev.DurationNanos).Seconds()) | ||||
|  | ||||
| 				promDbCmdErr.WithLabelValues(ev.ConnectionID, ev.CommandName).Add(1) | ||||
| 			}, | ||||
| 		}) | ||||
| } | ||||
|   | ||||
| @@ -22,11 +22,15 @@ func Initialize(ctx context.Context, uri string) (*mongo.Collection, error) { | ||||
|  | ||||
| 	dbOpt := monitoredClientOptions().ApplyURI(uri) | ||||
|  | ||||
| 	dbClient, err := mongo.Connect(globals.MongoTimeout(ctx)) | ||||
| 	dbClient, err := mongo.Connect(globals.MongoTimeout(ctx), dbOpt) | ||||
| 	if err != nil { | ||||
| 		return nil, fmt.Errorf("connecting to %q: %w", dbOpt.GetURI(), err) | ||||
| 	} | ||||
|  | ||||
| 	if err := dbClient.Ping(globals.MongoTimeout(ctx), nil); err != nil { | ||||
| 		return nil, fmt.Errorf("first ping to database: %w", err) | ||||
| 	} | ||||
|  | ||||
| 	col := dbClient.Database(uriParsed.Path).Collection("logs") | ||||
|  | ||||
| 	if err := InitializeIndexes(globals.MongoTimeout(ctx), col); err != nil { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user