parsers

package
v1.23.4 Latest Latest
Warning

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

Go to latest
Published: Aug 16, 2022 License: MIT Imports: 17 Imported by: 243

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Parsers = map[string]Creator{}

Parsers contains the registry of all known parsers (following the new style)

Functions

func Add added in v1.22.0

func Add(name string, creator Creator)

Add adds a parser to the registry. Usually this function is called in the plugin's init function

Types

type Config

type Config struct {
	// DataFormat can be one of: json, influx, graphite, value, nagios
	DataFormat string `toml:"data_format"`

	// Separator only applied to Graphite data.
	Separator string `toml:"separator"`
	// Templates only apply to Graphite data.
	Templates []string `toml:"templates"`

	// TagKeys only apply to JSON data
	TagKeys []string `toml:"tag_keys"`
	// Array of glob pattern strings keys that should be added as string fields.
	JSONStringFields []string `toml:"json_string_fields"`

	JSONNameKey string `toml:"json_name_key"`
	// MetricName applies to JSON & value. This will be the name of the measurement.
	MetricName string `toml:"metric_name"`

	// holds a gjson path for json parser
	JSONQuery string `toml:"json_query"`

	// key of time
	JSONTimeKey string `toml:"json_time_key"`

	// time format
	JSONTimeFormat string `toml:"json_time_format"`

	// default timezone
	JSONTimezone string `toml:"json_timezone"`

	// Whether to continue if a JSON object can't be coerced
	JSONStrict bool `toml:"json_strict"`

	// Authentication file for collectd
	CollectdAuthFile string `toml:"collectd_auth_file"`
	// One of none (default), sign, or encrypt
	CollectdSecurityLevel string `toml:"collectd_security_level"`
	// Dataset specification for collectd
	CollectdTypesDB []string `toml:"collectd_types_db"`

	// whether to split or join multivalue metrics
	CollectdSplit string `toml:"collectd_split"`

	// DataType only applies to value, this will be the type to parse value to
	DataType string `toml:"data_type"`

	// DefaultTags are the default tags that will be added to all parsed metrics.
	DefaultTags map[string]string `toml:"default_tags"`

	// an optional json path containing the metric registry object
	// if left empty, the whole json object is parsed as a metric registry
	DropwizardMetricRegistryPath string `toml:"dropwizard_metric_registry_path"`
	// an optional json path containing the default time of the metrics
	// if left empty, the processing time is used
	DropwizardTimePath string `toml:"dropwizard_time_path"`
	// time format to use for parsing the time field
	// defaults to time.RFC3339
	DropwizardTimeFormat string `toml:"dropwizard_time_format"`
	// an optional json path pointing to a json object with tag key/value pairs
	// takes precedence over DropwizardTagPathsMap
	DropwizardTagsPath string `toml:"dropwizard_tags_path"`
	// an optional map containing tag names as keys and json paths to retrieve the tag values from as values
	// used if TagsPath is empty or doesn't return any tags
	DropwizardTagPathsMap map[string]string `toml:"dropwizard_tag_paths_map"`

	//grok patterns
	GrokPatterns           []string `toml:"grok_patterns"`
	GrokNamedPatterns      []string `toml:"grok_named_patterns"`
	GrokCustomPatterns     string   `toml:"grok_custom_patterns"`
	GrokCustomPatternFiles []string `toml:"grok_custom_pattern_files"`
	GrokTimezone           string   `toml:"grok_timezone"`
	GrokUniqueTimestamp    string   `toml:"grok_unique_timestamp"`

	//csv configuration
	CSVColumnNames        []string `toml:"csv_column_names"`
	CSVColumnTypes        []string `toml:"csv_column_types"`
	CSVComment            string   `toml:"csv_comment"`
	CSVDelimiter          string   `toml:"csv_delimiter"`
	CSVHeaderRowCount     int      `toml:"csv_header_row_count"`
	CSVMeasurementColumn  string   `toml:"csv_measurement_column"`
	CSVSkipColumns        int      `toml:"csv_skip_columns"`
	CSVSkipRows           int      `toml:"csv_skip_rows"`
	CSVTagColumns         []string `toml:"csv_tag_columns"`
	CSVTimestampColumn    string   `toml:"csv_timestamp_column"`
	CSVTimestampFormat    string   `toml:"csv_timestamp_format"`
	CSVTimezone           string   `toml:"csv_timezone"`
	CSVTrimSpace          bool     `toml:"csv_trim_space"`
	CSVSkipValues         []string `toml:"csv_skip_values"`
	CSVSkipErrors         bool     `toml:"csv_skip_errors"`
	CSVMetadataRows       int      `toml:"csv_metadata_rows"`
	CSVMetadataSeparators []string `toml:"csv_metadata_separators"`
	CSVMetadataTrimSet    string   `toml:"csv_metadata_trim_set"`

	// FormData configuration
	FormUrlencodedTagKeys []string `toml:"form_urlencoded_tag_keys"`

	// Prometheus configuration
	PrometheusIgnoreTimestamp bool `toml:"prometheus_ignore_timestamp"`

	// Value configuration
	ValueFieldName string `toml:"value_field_name"`

	// XPath configuration
	XPathPrintDocument       bool          `toml:"xpath_print_document"`
	XPathProtobufFile        string        `toml:"xpath_protobuf_file"`
	XPathProtobufType        string        `toml:"xpath_protobuf_type"`
	XPathProtobufImportPaths []string      `toml:"xpath_protobuf_import_paths"`
	XPathAllowEmptySelection bool          `toml:"xpath_allow_empty_selection"`
	XPathConfig              []XPathConfig `toml:"xpath"`

	// JSONPath configuration
	JSONV2Config []JSONV2Config `toml:"json_v2"`

	// Influx configuration
	InfluxParserType string `toml:"influx_parser_type"`

	// LogFmt configuration
	LogFmtTagKeys []string `toml:"logfmt_tag_keys"`
}

Config is a struct that covers the data types needed for all parser types, and can be used to instantiate _any_ of the parsers.

type Creator added in v1.22.0

type Creator func(defaultMetricName string) telegraf.Parser

Creator is the function to create a new parser

type JSONV2Config added in v1.19.0

type JSONV2Config struct {
	json_v2.Config
}

type Parser

type Parser interface {
	// Parse takes a byte buffer separated by newlines
	// ie, `cpu.usage.idle 90\ncpu.usage.busy 10`
	// and parses it into telegraf metrics
	//
	// Must be thread-safe.
	Parse(buf []byte) ([]telegraf.Metric, error)

	// ParseLine takes a single string metric
	// ie, "cpu.usage.idle 90"
	// and parses it into a telegraf metric.
	//
	// Must be thread-safe.
	// This function is only called by plugins that expect line based protocols
	// Doesn't need to be implemented by non-linebased parsers (e.g. json, xml)
	ParseLine(line string) (telegraf.Metric, error)

	// SetDefaultTags tells the parser to add all of the given tags
	// to each parsed metric.
	// NOTE: do _not_ modify the map after you've passed it here!!
	SetDefaultTags(tags map[string]string)
}

Parser is an interface defining functions that a parser plugin must satisfy.

func NewCollectdParser

func NewCollectdParser(
	authFile string,
	securityLevel string,
	typesDB []string,
	split string,
) (Parser, error)

func NewDropwizardParser

func NewDropwizardParser(
	metricRegistryPath string,
	timePath string,
	timeFormat string,
	tagsPath string,
	tagPathsMap map[string]string,
	defaultTags map[string]string,
	separator string,
	templates []string,

) (Parser, error)

func NewFormUrlencodedParser

func NewFormUrlencodedParser(
	metricName string,
	defaultTags map[string]string,
	tagKeys []string,
) (Parser, error)

func NewGraphiteParser

func NewGraphiteParser(
	separator string,
	templates []string,
	defaultTags map[string]string,
) (Parser, error)

func NewInfluxParser

func NewInfluxParser() (Parser, error)

func NewInfluxUpstreamParser added in v1.22.0

func NewInfluxUpstreamParser() (Parser, error)

func NewJSONPathParser added in v1.19.0

func NewJSONPathParser(jsonv2config []JSONV2Config) (Parser, error)

func NewLogFmtParser

func NewLogFmtParser(metricName string, defaultTags map[string]string, tagKeys []string) (Parser, error)

NewLogFmtParser returns a logfmt parser with the default options.

func NewNagiosParser

func NewNagiosParser() (Parser, error)

func NewParser

func NewParser(config *Config) (Parser, error)

NewParser returns a Parser interface based on the given config.

func NewPrometheusParser added in v1.17.0

func NewPrometheusParser(defaultTags map[string]string, ignoreTimestamp bool) (Parser, error)

func NewPrometheusRemoteWriteParser added in v1.18.3

func NewPrometheusRemoteWriteParser(defaultTags map[string]string) (Parser, error)

func NewValueParser

func NewValueParser(
	metricName string,
	dataType string,
	fieldName string,
	defaultTags map[string]string,
) (Parser, error)

func NewWavefrontParser

func NewWavefrontParser(defaultTags map[string]string) (Parser, error)

type ParserCompatibility added in v1.22.0

type ParserCompatibility interface {
	// InitFromConfig sets the parser internal variables from the old-style config
	InitFromConfig(config *Config) error
}

ParserCompatibility is an interface for backward-compatible initialization of new parsers

type ParserFunc

type ParserFunc func() (Parser, error)

type ParserFuncInput

type ParserFuncInput interface {
	// SetParserFunc returns a new parser.
	SetParserFunc(fn ParserFunc)
}

ParserFuncInput is an interface for input plugins that are able to parse arbitrary data formats.

type ParserInput

type ParserInput interface {
	// SetParser sets the parser function for the interface
	SetParser(parser Parser)
}

ParserInput is an interface for input plugins that are able to parse arbitrary data formats.

type XPathConfig added in v1.20.0

type XPathConfig struct {
	MetricQuery  string            `toml:"metric_name"`
	Selection    string            `toml:"metric_selection"`
	Timestamp    string            `toml:"timestamp"`
	TimestampFmt string            `toml:"timestamp_format"`
	Tags         map[string]string `toml:"tags"`
	Fields       map[string]string `toml:"fields"`
	FieldsInt    map[string]string `toml:"fields_int"`

	FieldSelection  string `toml:"field_selection"`
	FieldNameQuery  string `toml:"field_name"`
	FieldValueQuery string `toml:"field_value"`
	FieldNameExpand bool   `toml:"field_name_expansion"`

	TagSelection  string `toml:"tag_selection"`
	TagNameQuery  string `toml:"tag_name"`
	TagValueQuery string `toml:"tag_value"`
	TagNameExpand bool   `toml:"tag_name_expansion"`
}

XPathConfig definition for backward compatibitlity ONLY. We need this here to avoid cyclic dependencies. However, we need to move this to plugins/parsers/xpath once we deprecate parser construction via `NewParser()`.

Jump to

Keyboard shortcuts

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