mongo

package module
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2020 License: Apache-2.0 Imports: 9 Imported by: 1

Documentation

Overview

Package mongo-driver provides functions to trace the go.mongodb.org/mongo-driver/mongo(https://github.com/mongodb/mongo-go-driver) package. It support v0.2.0 of github.com/mongodb/mongo-go-driver

`NewMonitor` will return an event.CommandMonitor which is used to trace requests.

This code was originally based on the following: - https://github.com/DataDog/dd-trace-go/tree/02f0449efa3cb382d499fadc873957385dcb2192/contrib/go.mongodb.org/mongo-driver/mongo - https://github.com/DataDog/dd-trace-go/tree/v1.23.3/ddtrace/ext

Example
package main

import (
	"context"

	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/mongo"
	"go.mongodb.org/mongo-driver/mongo/options"

	mongotrace "go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver"
)

func main() {
	// connect to MongoDB
	opts := options.Client()
	opts.Monitor = mongotrace.NewMonitor("test-service")
	opts.ApplyURI("mongodb://localhost:27017")
	client, err := mongo.Connect(context.Background(), opts)
	if err != nil {
		panic(err)
	}
	db := client.Database("example")
	inventory := db.Collection("inventory")

	_, err = inventory.InsertOne(context.Background(), bson.D{
		{Key: "item", Value: "canvas"},
		{Key: "qty", Value: 100},
		{Key: "attributes", Value: bson.A{"cotton"}},
		{Key: "size", Value: bson.D{
			{Key: "h", Value: 28},
			{Key: "w", Value: 35.5},
			{Key: "uom", Value: "cm"},
		}},
	})
	if err != nil {
		panic(err)
	}
}
Output:

Index

Examples

Constants

View Source
const (
	DBApplicationKey = label.Key("db.application")
	DBNameKey        = label.Key("db.name")
	DBTypeKey        = label.Key("db.type")
	DBInstanceKey    = label.Key("db.instance")
	DBUserKey        = label.Key("db.user")
	DBStatementKey   = label.Key("db.statement")
)
View Source
const (
	// PeerHostname records the host name of the peer.
	PeerHostnameKey = label.Key("peer.hostname")
	// PeerPort records the port number of the peer.
	PeerPortKey = label.Key("peer.port")
)
View Source
const (
	TargetHostKey   = label.Key("out.host")
	TargetPortKey   = label.Key("out.port")
	HTTPMethodKey   = label.Key("http.method")
	HTTPCodeKey     = label.Key("http.code")
	HTTPURLKey      = label.Key("http.url")
	SpanTypeKey     = label.Key("span.type")
	ServiceNameKey  = label.Key("service.name")
	ResourceNameKey = label.Key("resource.name")
	ErrorKey        = label.Key("error")
	ErrorMsgKey     = label.Key("error.msg")
)

Variables

This section is empty.

Functions

func DBApplication

func DBApplication(dbApplication string) label.KeyValue

DBApplication indicates the application using the database.

func DBInstance

func DBInstance(dbInstance string) label.KeyValue

DBInstance indicates the instance name of Database.

func DBName

func DBName(dbName string) label.KeyValue

DBName indicates the database name.

func DBStatement

func DBStatement(dbStatement string) label.KeyValue

DBStatement records a database statement for the given database type.

func DBType

func DBType(dbType string) label.KeyValue

DBType indicates the type of Database.

func DBUser

func DBUser(dbUser string) label.KeyValue

DBUser indicates the user name of Database, e.g. "readonly_user" or "reporting_user".

func Error

func Error(err bool) label.KeyValue

Error specifies whether an error occurred.

func ErrorMsg

func ErrorMsg(errorMsg string) label.KeyValue

ErrorMsg specifies the error message.

func HTTPCode

func HTTPCode(httpCode string) label.KeyValue

HTTPCode sets the HTTP status code as a attribute.

func HTTPMethod

func HTTPMethod(httpMethod string) label.KeyValue

HTTPMethod specifies the HTTP method used in a span.

func HTTPURL

func HTTPURL(httpURL string) label.KeyValue

HTTPURL sets the HTTP URL for a span.

func NewMonitor

func NewMonitor(serviceName string, opts ...Option) *event.CommandMonitor

NewMonitor creates a new mongodb event CommandMonitor.

func PeerHostname

func PeerHostname(peerHostname string) label.KeyValue

PeerHostname records the host name of the peer.

func PeerPort

func PeerPort(peerport string) label.KeyValue

PeerPort records the port number of the peer.

func ResourceName

func ResourceName(resourceName string) label.KeyValue

ResourceName defines the Resource name for the Span.

func ServiceName

func ServiceName(serviceName string) label.KeyValue

ServiceName defines the Service name for this Span.

func SpanType

func SpanType(spanType string) label.KeyValue

SpanType defines the Span type (web, db, cache).

func TargetHost

func TargetHost(targetHost string) label.KeyValue

TargetHost sets the target host address.

func TargetPort

func TargetPort(targetPort string) label.KeyValue

TargetPort sets the target host port.

Types

type Config

type Config struct {
	Tracer trace.Tracer
}

Config is used to configure the mongo tracer.

type Option

type Option func(*Config)

Option specifies instrumentation configuration options.

func WithTracer

func WithTracer(tracer trace.Tracer) Option

WithTracer specifies a tracer to use for creating spans. If none is specified, a tracer named "go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver" from the global provider is used.

Directories

Path Synopsis
mongo
otelmongo Module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL