snmp

package
v1.31.2 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2024 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LoadMibsFromPath added in v1.21.0

func LoadMibsFromPath(paths []string, log telegraf.Logger, loader MibLoader) error

will give all found folders to gosmi and load in all modules found in the folders

func NewGosmiTranslator added in v1.30.0

func NewGosmiTranslator(paths []string, log telegraf.Logger) (*gosmiTranslator, error)

func NewNetsnmpTranslator added in v1.30.0

func NewNetsnmpTranslator(log telegraf.Logger) *netsnmpTranslator

Types

type ClientConfig

type ClientConfig struct {
	// Timeout to wait for a response.
	Timeout              config.Duration `toml:"timeout"`
	Retries              int             `toml:"retries"`
	Version              uint8           `toml:"version"`
	UnconnectedUDPSocket bool            `toml:"unconnected_udp_socket"`

	// Parameters for Version 1 & 2
	Community string `toml:"community"`

	// Parameters for Version 2 & 3
	MaxRepetitions uint32 `toml:"max_repetitions"`

	// Parameters for Version 3
	ContextName  string        `toml:"context_name"`
	SecLevel     string        `toml:"sec_level"`
	SecName      string        `toml:"sec_name"`
	AuthProtocol string        `toml:"auth_protocol"`
	AuthPassword config.Secret `toml:"auth_password"`
	PrivProtocol string        `toml:"priv_protocol"`
	PrivPassword config.Secret `toml:"priv_password"`
	EngineID     string        `toml:"-"`
	EngineBoots  uint32        `toml:"-"`
	EngineTime   uint32        `toml:"-"`

	// Path to mib files
	Path       []string `toml:"path"`
	Translator string   `toml:"-"`
}

func DefaultClientConfig added in v1.30.0

func DefaultClientConfig() *ClientConfig

type Connection added in v1.30.0

type Connection interface {
	Host() string
	//BulkWalkAll(string) ([]gosnmp.SnmpPDU, error)
	Walk(string, gosnmp.WalkFunc) error
	Get(oids []string) (*gosnmp.SnmpPacket, error)
	Reconnect() error
}

Connection is an interface which wraps a *gosnmp.GoSNMP object. We interact through an interface so we can mock it out in tests.

type Field added in v1.30.0

type Field struct {
	// Name will be the name of the field.
	Name string
	// OID is prefix for this field. The plugin will perform a walk through all
	// OIDs with this as their parent. For each value found, the plugin will strip
	// off the OID prefix, and use the remainder as the index. For multiple fields
	// to show up in the same row, they must share the same index.
	Oid string
	// OidIndexSuffix is the trailing sub-identifier on a table record OID that will be stripped off to get the record's index.
	OidIndexSuffix string
	// OidIndexLength specifies the length of the index in OID path segments. It can be used to remove sub-identifiers that vary in content or length.
	OidIndexLength int
	// IsTag controls whether this OID is output as a tag or a value.
	IsTag bool
	// Conversion controls any type conversion that is done on the value.
	//  "float"/"float(0)" will convert the value into a float.
	//  "float(X)" will convert the value into a float, and then move the decimal before Xth right-most digit.
	//  "int" will convert the value into an integer.
	//  "hwaddr" will convert a 6-byte string to a MAC address.
	//  "ipaddr" will convert the value to an IPv4 or IPv6 address.
	//  "enum"/"enum(1)" will convert the value according to its syntax. (Only supported with gosmi translator)
	Conversion string
	// Translate tells if the value of the field should be snmptranslated
	Translate bool
	// Secondary index table allows to merge data from two tables with different index
	//  that this filed will be used to join them. There can be only one secondary index table.
	SecondaryIndexTable bool
	// This field is using secondary index, and will be later merged with primary index
	//  using SecondaryIndexTable. SecondaryIndexTable and SecondaryIndexUse are exclusive.
	SecondaryIndexUse bool
	// Controls if entries from secondary table should be added or not if joining
	//  index is present or not. I set to true, means that join is outer, and
	//  index is prepended with "Secondary." for missing values to avoid overlapping
	//  indexes from both tables.
	// Can be set per field or globally with SecondaryIndexTable, global true overrides
	//  per field false.
	SecondaryOuterJoin bool
	// contains filtered or unexported fields
}

Field holds the configuration for a Field to look up.

func (*Field) Convert added in v1.30.0

func (f *Field) Convert(ent gosnmp.SnmpPDU) (interface{}, error)

fieldConvert converts from any type according to the conv specification

func (*Field) Init added in v1.30.0

func (f *Field) Init(tr Translator) error

init() converts OID names to numbers, and sets the .Name attribute if unset.

type GosmiMibLoader added in v1.21.4

type GosmiMibLoader struct{}

type GosnmpWrapper

type GosnmpWrapper struct {
	*gosnmp.GoSNMP
}

GosnmpWrapper wraps a *gosnmp.GoSNMP object so we can use it as a snmpConnection.

func NewWrapper

func NewWrapper(s ClientConfig) (GosnmpWrapper, error)

func (GosnmpWrapper) Host

func (gs GosnmpWrapper) Host() string

Host returns the value of GoSNMP.Target.

func (GosnmpWrapper) Reconnect added in v1.23.0

func (gs GosnmpWrapper) Reconnect() error

func (*GosnmpWrapper) SetAgent

func (gs *GosnmpWrapper) SetAgent(agent string) error

SetAgent takes a url (scheme://host:port) and sets the wrapped GoSNMP struct's corresponding fields. This shouldn't be called after using the wrapped GoSNMP struct, for example after connecting.

func (GosnmpWrapper) Walk

func (gs GosnmpWrapper) Walk(oid string, fn gosnmp.WalkFunc) error

Walk wraps GoSNMP.Walk() or GoSNMP.BulkWalk(), depending on whether the connection is using SNMPv1 or newer.

type MibEntry added in v1.21.0

type MibEntry struct {
	MibName string
	OidText string
}

The following is for snmp_trap

func TrapLookup added in v1.21.0

func TrapLookup(oid string) (e MibEntry, err error)

type MibLoader added in v1.21.4

type MibLoader interface {
	// contains filtered or unexported methods
}

type RTable added in v1.30.0

type RTable struct {
	// Name is the name of the field, copied from Table.Name.
	Name string
	// Time is the time the table was built.
	Time time.Time
	// Rows are the rows that were found, one row for each table OID index found.
	Rows []RTableRow
}

RTable is the resulting table built from a Table.

type RTableRow added in v1.30.0

type RTableRow struct {
	// Tags are all the Field values which had IsTag=true.
	Tags map[string]string
	// Fields are all the Field values which had IsTag=false.
	Fields map[string]interface{}
}

RTableRow is the resulting row containing all the OID values which shared the same index.

type Table added in v1.30.0

type Table struct {
	// Name will be the name of the measurement.
	Name string

	// Which tags to inherit from the top-level config.
	InheritTags []string

	// Adds each row's table index as a tag.
	IndexAsTag bool

	// Fields is the tags and values to look up.
	Fields []Field `toml:"field"`

	// OID for automatic field population.
	// If provided, init() will populate Fields with all the table columns of the
	// given OID.
	Oid string
	// contains filtered or unexported fields
}

Table holds the configuration for a SNMP table.

func (Table) Build added in v1.30.0

func (t Table) Build(gs Connection, walk bool) (*RTable, error)

Build retrieves all the fields specified in the table and constructs the RTable.

func (*Table) Init added in v1.30.0

func (t *Table) Init(tr Translator) error

Init() builds & initializes the nested fields.

type Translator added in v1.30.0

type Translator interface {
	SnmpTranslate(oid string) (
		mibName string, oidNum string, oidText string,
		conversion string,
		err error,
	)

	SnmpTable(oid string) (
		mibName string, oidNum string, oidText string,
		fields []Field,
		err error,
	)

	SnmpFormatEnum(oid string, value interface{}, full bool) (
		formatted string,
		err error,
	)
}

type TranslatorPlugin added in v1.22.0

type TranslatorPlugin interface {
	SetTranslator(name string) // Agent calls this on inputs before Init
}

Jump to

Keyboard shortcuts

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