Hallo,
ich habe ein kleines SNMP-Plugin für die neue Check-API geschrieben. Das Plugin soll nur Inventory-Daten sammeln. Dies funktioniert soweit auch ganz gut. Jedoch sieht es so aus, als würden bei jedem normalen Check (alle 60 Sekunden und nicht alle 24 Stunden) alle OIDs geholt werden. Also auch die OIDs, die nur für das Inventory notwendig sind.
Kann man der „register“ Funktion mitgeben, dass sie nur Inventory Daten holt und somit nicht bei jedem Check die Inventory-OIDs abfragt oder gibt es hier einen anderen Weg?
Vielen Dank.
Fürs Verständnis hier mal das Plugin (ich habe dieses der Übersicht halber etwas gekürzt)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from .agent_based_api.v1 import (
Attributes,
register,
SNMPTree,
contains,
TableRow,
OIDEnd,
)
from .agent_based_api.v1.type_defs import (
InventoryResult,
)
register.snmp_section(
name="sicam_info_module",
fetch=[
SNMPTree(
base=".1.3.6.1.4.1.22638.11.1.2.1.1",
oids=[
OIDEnd(),
"2", #dgpiProdCompContainedIn > .1.3.6.1.4.1.22638.11.1.2.1.1.2.1 0
"4", #dgpiProdCompName > .1.3.6.1.4.1.22638.11.1.2.1.1.4.1 CP-8050
"5", #dgpiProdCompDescription > .1.3.6.1.4.1.22638.11.1.2.1.1.5.1 CP-8050
"6", #dgpiProdCompOrderNumber > .1.3.6.1.4.1.22638.11.1.2.1.1.6.1 6MF28050AA00
],
),
],
detect=contains(".1.3.6.1.2.1.1.1.0", "Siemens AG, SICAM"),
)
def inventory_sicam_info_module(section) -> InventoryResult:
for id, dgpiProdCompContainedIn, dgpiProdCompName, dgpiProdCompDescription, dgpiProdCompOrderNumber in section[0]:
yield TableRow(
path=["hardware", "components", "modules"],
key_columns={
"index" : id,
"name" : dgpiProdCompName,
"description" : dgpiProdCompDescription,
"model" : dgpiProdCompOrderNumber,
"dgpiProdCompContainedIn": dgpiProdCompContainedIn,
},
)
register.inventory_plugin(
name='sicam_info_module',
inventory_function=inventory_sicam_info_module,
)