jti_openconfig_telemetry

package
v1.29.3 Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2024 License: MIT Imports: 22 Imported by: 8

README

JTI OpenConfig Telemetry Input Plugin

This plugin reads Juniper Networks implementation of OpenConfig telemetry data from listed sensors using Junos Telemetry Interface. Refer to openconfig.net for more details about OpenConfig and Junos Telemetry Interface (JTI).

Service Input

This plugin is a service input. Normal plugins gather metrics determined by the interval setting. Service plugins start a service to listens and waits for metrics or events to occur. Service plugins have two key differences from normal plugins:

  1. The global or plugin specific interval setting may not apply
  2. The CLI options of --test, --test-wait, and --once may not produce output for this plugin

Global configuration options

In addition to the plugin-specific configuration settings, plugins support additional global and plugin configuration settings. These settings are used to modify metrics, tags, and field or create aliases and configure ordering, etc. See the CONFIGURATION.md for more details.

Configuration

# Subscribe and receive OpenConfig Telemetry data using JTI
[[inputs.jti_openconfig_telemetry]]
  ## List of device addresses to collect telemetry from
  servers = ["localhost:1883"]

  ## Authentication details. Username and password are must if device expects
  ## authentication. Client ID must be unique when connecting from multiple instances
  ## of telegraf to the same device
  username = "user"
  password = "pass"
  client_id = "telegraf"

  ## Frequency to get data
  sample_frequency = "1000ms"

  ## Sensors to subscribe for
  ## A identifier for each sensor can be provided in path by separating with space
  ## Else sensor path will be used as identifier
  ## When identifier is used, we can provide a list of space separated sensors.
  ## A single subscription will be created with all these sensors and data will
  ## be saved to measurement with this identifier name
  sensors = [
   "/interfaces/",
   "collection /components/ /lldp",
  ]

  ## We allow specifying sensor group level reporting rate. To do this, specify the
  ## reporting rate in Duration at the beginning of sensor paths / collection
  ## name. For entries without reporting rate, we use configured sample frequency
  sensors = [
   "1000ms customReporting /interfaces /lldp",
   "2000ms collection /components",
   "/interfaces",
  ]

  ## Timestamp Source
  ## Set to 'collection' for time of collection, and 'data' for using the time
  ## provided by the _timestamp field.
  # timestamp_source = "collection"

  ## Optional TLS Config
  # enable_tls = false
  # tls_ca = "/etc/telegraf/ca.pem"
  # tls_cert = "/etc/telegraf/cert.pem"
  # tls_key = "/etc/telegraf/key.pem"
  ## Minimal TLS version to accept by the client
  # tls_min_version = "TLS12"
  ## Use TLS but skip chain & host verification
  # insecure_skip_verify = false

  ## Delay between retry attempts of failed RPC calls or streams. Defaults to 1000ms.
  ## Failed streams/calls will not be retried if 0 is provided
  retry_delay = "1000ms"

  ## Period for sending keep-alive packets on idle connections
  ## This is helpful to identify broken connections to the server
  # keep_alive_period = "10s"

  ## To treat all string values as tags, set this to true
  str_as_tags = false

Tags

  • All measurements are tagged appropriately using the identifier information in incoming data

Example Output

Metrics

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CollectionByKeys

type CollectionByKeys []DataGroup

Sort the data groups by number of keys

func (CollectionByKeys) Insert

func (a CollectionByKeys) Insert(tags map[string]string, data map[string]interface{}) CollectionByKeys

Inserts into already existing group or creates a new group

func (CollectionByKeys) IsAvailable

func (a CollectionByKeys) IsAvailable(tags map[string]string) *DataGroup

Checks to see if there is already a group with these tags and returns its index. Returns -1 if unavailable.

func (CollectionByKeys) Len

func (a CollectionByKeys) Len() int

func (CollectionByKeys) Less

func (a CollectionByKeys) Less(i, j int) bool

func (CollectionByKeys) Swap

func (a CollectionByKeys) Swap(i, j int)

type DataGroup

type DataGroup struct {
	// contains filtered or unexported fields
}

type OpenConfigTelemetry

type OpenConfigTelemetry struct {
	Servers         []string        `toml:"servers"`
	Sensors         []string        `toml:"sensors"`
	Username        string          `toml:"username"`
	Password        string          `toml:"password"`
	ClientID        string          `toml:"client_id"`
	TimestampSource string          `toml:"timestamp_source"`
	SampleFrequency config.Duration `toml:"sample_frequency"`
	StrAsTags       bool            `toml:"str_as_tags"`
	RetryDelay      config.Duration `toml:"retry_delay"`
	EnableTLS       bool            `toml:"enable_tls"`
	KeepAlivePeriod config.Duration `toml:"keep_alive_period"`
	internaltls.ClientConfig

	Log telegraf.Logger
	// contains filtered or unexported fields
}

func (*OpenConfigTelemetry) Gather

func (*OpenConfigTelemetry) Init added in v1.26.0

func (m *OpenConfigTelemetry) Init() error

func (*OpenConfigTelemetry) SampleConfig

func (*OpenConfigTelemetry) SampleConfig() string

func (*OpenConfigTelemetry) Start

func (*OpenConfigTelemetry) Stop

func (m *OpenConfigTelemetry) Stop()

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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