14 Rilevamento dei dispositivi a blocchi

Panoramica

È possibile individuare i dispositivi a blocchi e le loro proprietà:

  • nome e tipo del dispositivo a blocchi
  • identificatori del dispositivo e proprietà come percorso, modello, numero di serie, WWN e dimensioni dei blocchi
  • informazioni sulle partizioni
  • statistiche del dispositivo a blocchi

Per farlo, è possibile utilizzare una combinazione di:

  • l'item vfs.dev.get come item master
  • una regola di discovery a basso livello dipendente
  • prototipi di item dipendenti

Configurazione

Master item

Creare un item di Zabbix agent usando la seguente chiave:

vfs.dev.get[device_stats,.*]

Impostare il tipo di informazione su Text per eventuali dati JSON di grandi dimensioni.

La cronologia può essere disabilitata per questo item, poiché viene utilizzato solo come master item. È possibile configurare un intervallo di aggiornamento relativamente breve, ad esempio 1m, per interrogare i dati frequentemente.

I dati restituiti da questo item conterranno qualcosa di simile al seguente per un dispositivo a blocchi:

{
  "config": [
    {
      "name": "sda",
      "devid": "ata-ST1000LM024_HN-M101MBB_S2R8NX0J123456",
      "type": "disk",
      "size_bytes": 1000204886016
    },
    {
      "name": "sda1",
      "devid": "ata-ST1000LM024_HN-M101MBB_S2R8NX0J123456-part1",
      "type": "partition",
      "size_bytes": 536870912
    }
  ],
  "values": [
    {
      "name": "sda",
      "stats": {
        "reads_completed": 1284,
        "writes_completed": 312,
        "bytes_read": 104857600,
        "bytes_written": 16777216,
        "io_time_ms": 204
      }
    },
    {
      "name": "sda1",
      "stats": {
        "reads_completed": 12,
        "writes_completed": 3,
        "bytes_read": 1048576,
        "bytes_written": 262144,
        "io_time_ms": 8
      }
    }
  ]
}

L'array config contiene l'inventario e i metadati dei dispositivi a blocchi, che in genere cambiano di rado. L'array values contiene le statistiche dei dispositivi a blocchi, che vengono aggiornate a ogni interrogazione.

Regola LLD dipendente

Crea una regola di discovery a basso livello come tipo Dependent item:

Come item master seleziona l'item vfs.dev.get che abbiamo creato.

Nella scheda Preprocessing aggiungi un passaggio JSONPath con il parametro $.config. Per evitare esecuzioni LLD non necessarie, aggiungi un passaggio Discard unchanged with heartbeat con un heartbeat sufficientemente grande, ad esempio 1h. Questo consente di interrogare frequentemente l'item master mentre la discovery a basso livello viene eseguita solo quando config cambia o quando scade il periodo di heartbeat:

Nella scheda LLD macros definisci macro personalizzate con il corrispondente JSONPath.

Ad esempio, quando si usa vfs.dev.get[device_stats,.*], è possibile usare le seguenti espressioni JSONPath:

{#DEVNAME} - $.name

Nella scheda Filters puoi aggiungere un'espressione regolare che filtra solo i dispositivi disco.

Prototipo di item dipendente

Crea un prototipo di item con tipo Item dipendente in questa regola LLD. Come item master per questi prototipi seleziona l'item vfs.dev.get che abbiamo creato.

Nota l'uso di macro personalizzate nel nome e nella chiave del prototipo di item. La chiave in questo esempio è personalizzata e definita dall'utente.

  • Nome: Dimensione del dispositivo a blocchi {#DEVNAME}
  • Chiave: dev.block.size[{#DEVNAME}]

Come tipo di informazione, usa Numerico (senza segno).

Nella scheda Preprocessing del prototipo di item seleziona JSONPath e usa la seguente espressione JSONPath come parametro:

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

Ulteriori prototipi di item possono essere creati nello stesso modo, ad esempio:

  • Nome: Byte letti su {#DEVNAME}
  • Chiave: dev.block.read_bytes[{#DEVNAME}]
  • Preprocessing: JSONPath $.values[?(@.name=='{#DEVNAME}')].stats.bytes_read.first()
  • Nome: Tempo di I/O su {#DEVNAME}
  • Chiave: dev.block.io_time_ms[{#DEVNAME}]
  • Preprocessing: JSONPath $.values[?(@.name=='{#DEVNAME}')].stats.io_time_ms.first()

Quando inizia la discovery, verrà creato un item per ogni dispositivo a blocchi.