cyphergraphexporter

package module
v0.0.0-...-f797364 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2024 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package cyphergraphexporter implements an OpenTelemetry Collector exporter that sends trace data to a graph database using the Cypher language (Neo4j, Memgraph, ...)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFactory

func NewFactory() exporter.Factory

NewFactory creates a factory for the CypherGraph exporter.

Types

type Config

type Config struct {
	configretry.BackOffConfig `mapstructure:"retry_on_failure"`

	// DatabaseURI is the target address of a Neo4j instance. The URI is the Bolt URI
	// thats uses the following scheme:
	//   - 'bolt', 'bolt+s' or 'bolt+ssc' allow to connects to a single instance database
	//   - 'neo4j', 'neo4j+s' or 'neo4j+ssc' allow to connect to a cluster of databases
	//
	// Refer to [neo4j.NewDriverWithContext] documentation to understand how this value
	// is used.
	DatabaseURI string `mapstructure:"db_uri,omitempty"`

	// Username corresponds to the user name used in the basic authentication process
	// to the database.
	Username string `mapstructure:"username,omitempty"`

	// Password corresponds to the secret used in the basic authentication process
	// to the database.
	Password configopaque.String `mapstructure:"password,omitempty"`

	// BearerToken corresponds to a base64-encoded string generated by a Single Sign-On Provider.
	BearerToken configopaque.String `mapstructure:"bearer_token,omitempty"`

	// KerberosTicket corresponds to a base64-encoded string representing the kerberos ticket.
	KerberosTicket configopaque.String `mapstructure:"kerberos_ticket,omitempty"`

	// UserAgent corresponds to the value of the User-Agent field that is used in
	// the "bolt" (websocket) connection.
	UserAgent string `mapstructure:"user_agent,omitempty"`

	// RessourceMappers allows to generate multiple nodes with different labels in the graph
	// for a single [go.opentelemetry.io/collector/pdata/pcommon.Resource] based on its attributes.
	// Graph node labels are provided as keys of the ResourceMappers field:
	//   resources:
	//     "k8s.pod":
	//       identified_by: "k8s.pod.uid"
	//       other_properties: [ "k8s.pod.name" ]
	//     "k8s.node":
	//       identified_by: "k8s.node.uid"
	//       other_properties: [ "k8s.node.name" ]
	// This configuration will generate for each spans processed by the receiver two different
	// resource nodes: one with label 'k8s.node' and one with label 'k8s.pod'. Nodes with the same
	// label sharing the same value of the attribute referenced in the 'identified_by' field will be
	// merged together. This configuration will only generate one node for each single pods more
	// one for each single nodes in the kubernetes cluster.
	ResourceMappers map[string]*ResourceMapper `mapstructure:"resources"`
}

Config defines configuration for the Cypher Graph exporter.

func (*Config) Validate

func (cfg *Config) Validate() error

type ResourceMapper

type ResourceMapper struct {
	// IdentifiedByKey represents the attribute Key of a resource whose value will be used as index for
	// for a given resource node, if this property is missing, the resource node will not be added in the graph.
	IdentifiedByKey string `mapstructure:"identified_by"`

	// OtherProperties represents additionnal properties added to the resource nodes that will not be indexed.
	OtherProperties []string `mapstructure:"other_properties"`
}

ResourceMapper describes how go.opentelemetry.io/collector/pdata/pcommon.Resource attributes get parsed to create a node in the graph.

Directories

Path Synopsis
internal
graphmodel
Package graphmodel provides methods that encode opentelemetry pipeline data into a property graph through cypher queries.
Package graphmodel provides methods that encode opentelemetry pipeline data into a property graph through cypher queries.
neo4jdriverwrap
Package neo4jdriverwrap holds the logic of adapting neo4jdriver options and functions to be usable from the OpenTelemetry exporter module.
Package neo4jdriverwrap holds the logic of adapting neo4jdriver options and functions to be usable from the OpenTelemetry exporter module.

Jump to

Keyboard shortcuts

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