Documentation ¶
Index ¶
- func LoadMibsFromPath(paths []string, log telegraf.Logger, loader MibLoader) error
- func NewGosmiTranslator(paths []string, log telegraf.Logger) (*gosmiTranslator, error)
- func NewNetsnmpTranslator(log telegraf.Logger) *netsnmpTranslator
- type ClientConfig
- type Connection
- type Field
- type GosmiMibLoader
- type GosnmpWrapper
- type MibEntry
- type MibLoader
- type RTable
- type RTableRow
- type Table
- type Translator
- type TranslatorPlugin
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LoadMibsFromPath ¶ added in v1.21.0
will give all found folders to gosmi and load in all modules found in the folders
func NewGosmiTranslator ¶ added in v1.30.0
func NewNetsnmpTranslator ¶ added in v1.30.0
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
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 ¶
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.
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
}