2 Descubrimiento de interfaces de red

Es posible descubrir las interfaces de red y sus propiedades:

  • nombre de la interfaz
  • alias de la interfaz
  • dirección MAC de la interfaz
  • tipo de interfaz
  • velocidad del enlace
  • valor dúplex más reciente o actual de la interfaz
  • estado operativo configurado y RFC2863
  • presencia de enlace físico
  • número de veces que el enlace ha pasado a estado activo o inactivo, y el número total de veces que el estado del enlace ha cambiado
  • tráfico entrante y saliente

Para ello, puede usar una combinación de:

  • el item net.if.get de agent como item maestro
  • una regla de descubrimiento de bajo nivel dependiente
  • prototipos de item dependientes

Configuración

Item maestro

Cree un item de Zabbix agent usando la siguiente clave:

net.if.get[enp.*]

Establezca Tipo de información en Texto para datos JSON potencialmente grandes.

El historial puede configurarse en No almacenar ya que se utiliza solo como item maestro. Se puede configurar un intervalo de actualización relativamente corto, como 1m, para garantizar una sondeo frecuente de datos.

El item descubre interfaces de red cuyos nombres coinciden con enp.* y devuelve su configuración y estadísticas.

Los datos devueltos por este item contendrán información similar a la siguiente para las interfaces de red:

{
  "config": [
    {
      "name": "enp0s3",
      "mac": "08:00:27:9a:8f:bb",
      "type": "physical",
      "speed": 1000,
      "duplex": "full",
      "administrative_state": "up",
      "operational_state": "up",
      "carrier": 1
    }
  ],
"values": [
    {
      "name": "enp0s3",
      "mac": "08:00:27:9a:8f:bb",
      "carrier": 1,
      "carrier_changes": 2,
      "carrier_up_count": 1,
      "carrier_down_count": 1,
      "in": {
        "bytes": 98241651,
        "packets": 72754,
        "errors": 0,
        "dropped": 0,
        "overruns": 0,
        "frame": 0,
        "compressed": 0,
        "multicast": 17
      },
    "out": {
        "bytes": 1299650,
        "packets": 11380,
        "errors": 0,
        "dropped": 0,
        "overruns": 0,
        "collisions": 0,
        "carrier": 0,
        "compressed": 0
      }
    }
  ]
}
Regla LLD dependiente

Cree una regla de descubrimiento de bajo nivel como tipo Dependent item:

Como master item, seleccione el item net.if.get creado.

En la pestaña Preprocessing, agregue:

  • Un paso JSONPath con el parámetro $.config.
  • Un paso Discard unchanged with heartbeat con un heartbeat suficientemente grande, por ejemplo, 1h, para evitar ejecuciones innecesarias de LLD. Esto permite que el master item se consulte con frecuencia mientras el descubrimiento de bajo nivel se ejecuta solo cuando config cambia o cuando expira el período de heartbeat.

En la pestaña LLD macros, defina macros personalizadas con sus expresiones JSONPath correspondientes.

Por ejemplo, al usar net.if.get[enp.*], se pueden usar las siguientes expresiones JSONPath:

{#IFNAME} - $.name

Prototipo de item dependiente

Cree un prototipo de item de tipo Item dependiente en la regla LLD. Seleccione el item net.if.get creado como el item maestro para este prototipo.

Observe el uso de macros personalizadas en el nombre y la clave del prototipo de item. En este ejemplo, la clave es personalizada y definida por el usuario.

  • Nombre: Interfaz {#IFNAME}: estado operativo
  • Clave: net.if.oper.state[{#IFNAME}]

Como tipo de información, use Texto.

En la pestaña Preprocesamiento del prototipo de item, seleccione JSONPath y use la siguiente expresión JSONPath como parámetro:

$.config[?(@.name=='{#IFNAME}')].operational_state.first()

Se pueden crear prototipos de item adicionales de la misma manera, por ejemplo:

  • Nombre: Interfaz {#IFNAME}: cambios de portadora
  • Clave: net.if.carrier.changes[{#IFNAME}]
  • Preprocesamiento: JSONPath - $.values[?(@.name=='{#IFNAME}')].carrier_changes.first()
  • Nombre: Interfaz {#IFNAME}: velocidad
  • Clave: net.if.speed[{#IFNAME}]
  • Preprocesamiento: JSONPath - $.config[?(@.name=='{#IFNAME}')].speed.first()

Cuando comienza el descubrimiento, se creará un item por cada interfaz de red.