Wykrywanie zamontowanych systemów plików

Przegląd

Możliwe jest wykrywanie zamontowanych systemów plików i ich właściwości:

  • nazwa punktu montowania
  • typ systemu plików
  • rozmiar systemu plików
  • statystyki i-węzłów
  • opcje montowania

W tym celu można użyć kombinacji:

  • pozycji agenta vfs.fs.get jako pozycji nadrzędnej
  • zależnej reguły wykrywania niskopoziomowego i prototypów pozycji

W trybie full (domyślnym) statystyki systemu plików są zwracane tylko wtedy, gdy użytkownik agenta Zabbix ma uprawnienia do przechodzenia przez każdy katalog w ścieżce punktu montowania; w przeciwnym razie dany system plików jest pomijany w danych wyjściowych vfs.fs.get. Aby takie systemy plików były wykrywane i zgłaszane jako nieobsługiwane, zamiast cichego pomijania, użyj wykrywania w trybie short.

Konfiguracja

Pozycja nadrzędna

Utwórz pozycję agenta Zabbix, używając następującego klucza:

vfs.fs.get

Ustaw typ informacji na "Text" dla potencjalnie dużych danych JSON.

Dane zwracane przez tę pozycję będą zawierać coś podobnego do poniższego dla zamontowanego systemu plików:

[
  {
    "fsname": "/",
    "fstype": "ext4",
    "bytes": {
      "total": 249405239296,
      "free": 24069537792,
      "used": 212595294208,
      "pfree": 10.170306,
      "pused": 89.829694
    },
    "inodes": {
      "total": 15532032,
      "free": 12656665,
      "used": 2875367,
      "pfree": 81.487503,
      "pused": 18.512497
    },
    "options": "rw,noatime,errors=remount-ro"
  }
]
Zależna reguła LLD

Utwórz regułę wykrywania niskiego poziomu jako typ Dependent item:

Jako element nadrzędny wybierz utworzoną przez nas pozycję vfs.fs.get.

Na karcie LLD macros zdefiniuj niestandardowe makra z odpowiednim JSONPath:

Na karcie Filters możesz dodać wyrażenie regularne, które będzie filtrować tylko systemy plików read-write:

Prototyp pozycja zależnej

Utwórz prototyp pozycji typu "Dependent item" w tej regule LLD. Jako pozycję nadrzędną dla tego prototypu wybierz pozycję vfs.fs.get, którą utworzyliśmy.

Zwróć uwagę na użycie niestandardowych makr w nazwie i kluczu prototypu pozycji:

  • Name: Free disk space on {#FSNAME}, type: {#FSTYPE}
  • Key: Free[{#FSNAME}]

Jako typ informacji użyj:

  • Numeric (unsigned) dla metryk takich jak 'free', 'total', 'used'
  • Numeric (float) dla metryk takich jak 'pfree', 'pused' (procent)

W zakładce Preprocessing prototypu pozycji wybierz JSONPath i użyj następującego wyrażenia JSONPath jako parametru:

$.[?(@.fsname=='{#FSNAME}')].bytes.free.first()

Po rozpoczęciu wykrywania dla każdego punktu montowania zostanie utworzona jedna pozycja. Ta pozycja zwróci liczbę wolnych bajtów dla danego punktu montowania.

Wykrywanie w trybie krótkim

Alternatywnie do zależnej reguły wykrywania można utworzyć regułę wykrywania typu Zabbix agent z kluczem:

vfs.fs.get[short]

W trybie short pozycja zwraca listę zamontowanych systemów plików bez statystyk dotyczących miejsca na dysku i i-węzłów, na przykład:

[
  {
    "fsname": "/",
    "fstype": "ext4",
    "options": "rw,noatime,errors=remount-ro"
  },
  {
    "fsname": "/home",
    "fstype": "xfs",
    "options": "rw,relatime,attr2,inode64,noquota"
  }
]

Ponieważ agent nie odpytuje samych systemów plików, wykrywanie nie powoduje automatycznego montowania i nie jest opóźniane przez nieodpowiadające sieciowe systemy plików. Może również być uruchamiane rzadziej niż zbieranie danych, na przykład raz na godzinę.

Na karcie Makra LLD zdefiniuj niestandardowe makra wraz z odpowiednimi wyrażeniami JSONPath, na przykład {#FSNAME} - $.fsname i {#FSTYPE} - $.fstype.

Następnie utwórz prototyp pozycji typu Zabbix agent, który zwraca statystyki jednego wykrytego systemu plików:

  • Klucz: vfs.fs.get[full,{#FSNAME}]
  • Typ informacji: Tekst
  • Wstępne przetwarzanie: JSONPath $[0]

Użyj tego prototypu pozycji jako pozycji nadrzędnej dla zależnych prototypów pozycji, na przykład z wyrażeniem JSONPath $.bytes.free, aby uzyskać liczbę wolnych bajtów.

Jeśli agent nie może uzyskać statystyk wykrytego systemu plików (na przykład z powodu braku uprawnień), vfs.fs.get[full,{#FSNAME}] zwraca pustą tablicę, krok wstępnego przetwarzania $[0] kończy się niepowodzeniem, a pozycja otrzymuje status nieobsługiwanej. Dzięki temu problem jest widoczny, zamiast systemu plików po cichu pomijać. Należy pamiętać, że ta konfiguracja wykonuje osobne sprawdzenie agenta dla każdego wykrytego systemu plików.

To podejście jest używane przez szablony systemów operacyjnych dostarczane z Zabbix i wymaga Zabbix agent w wersji 8.0 lub nowszej.