Descoberta de sistemas de arquivos montados
Visão geral
É possível descobrir sistemas de arquivos montados e suas propriedades:
- nome do ponto de montagem
- tipo de sistema de arquivos
- tamanho do sistema de arquivos
- estatísticas de inode
- opções de montagem
Para isso, você pode usar uma combinação de:
- o item de agent
vfs.fs.getcomo item mestre - regra de descoberta de baixo nível dependente e protótipos de item
No modo full (padrão), as estatísticas do sistema de arquivos são retornadas somente se o usuário do Zabbix agent tiver permissão de travessia em todos os diretórios no caminho do ponto de montagem; caso contrário, o sistema de arquivos afetado será omitido da saída de vfs.fs.get.
Para que esses sistemas de arquivos sejam descobertos e relatados como não suportados, em vez de serem ignorados silenciosamente, use a descoberta no modo short.
Configuração
Item mestre
Crie um item do Zabbix agent usando a seguinte key:
vfs.fs.get

Defina o tipo de informação como "Text" para possíveis dados JSON grandes.
Os dados retornados por este item conterão algo como o seguinte para um sistema de arquivos montado:
[
{
"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"
}
]
Regra LLD dependente
Crie uma regra de descoberta de baixo nível como tipo Dependent item:

Como item mestre, selecione o item vfs.fs.get que criamos.
Na aba LLD macros, defina macros personalizadas com o JSONPath correspondente:

Na aba Filters, você pode adicionar uma expressão regular que filtre apenas sistemas de arquivos read-write:

Protótipo de item dependente
Crie um protótipo de item com o tipo "Dependent item" nesta regra de LLD.
Como item mestre para este protótipo, selecione o item vfs.fs.get que criamos.

Observe o uso de macros personalizadas no nome e na chave do protótipo de item:
- Name: Free disk space on {#FSNAME}, type: {#FSTYPE}
- Key: Free[{#FSNAME}]
Como tipo de informação, use:
- Numeric (unsigned) para métricas como 'free', 'total', 'used'
- Numeric (float) para métricas como 'pfree', 'pused' (percentage)
Na aba Preprocessing do protótipo de item, selecione JSONPath e use a seguinte expressão JSONPath como parâmetro:
$.[?(@.fsname=='{#FSNAME}')].bytes.free.first()

Quando a descoberta começar, um item por cada ponto de montagem será criado. Este item retornará o número de bytes livres para o ponto de montagem informado.
Descoberta no modo curto
Como alternativa a uma regra de descoberta dependente, você pode criar uma regra de descoberta do tipo Zabbix agent com a chave:
vfs.fs.get[short]
No modo short, o item retorna a lista de sistemas de arquivos montados sem as estatísticas de espaço em disco e de inodes, por exemplo:
[
{
"fsname": "/",
"fstype": "ext4",
"options": "rw,noatime,errors=remount-ro"
},
{
"fsname": "/home",
"fstype": "xfs",
"options": "rw,relatime,attr2,inode64,noquota"
}
]
Como o agent não consulta os próprios sistemas de arquivos, a descoberta não aciona a montagem automática e não sofre atrasos causados por sistemas de arquivos de rede que não respondem. Ela também pode ser executada com menos frequência do que a coleta de dados, por exemplo, uma vez por hora.
Na aba Macros de LLD, defina macros personalizadas com o JSONPath correspondente, por exemplo, {#FSNAME} - $.fsname e {#FSTYPE} - $.fstype.
Em seguida, crie um protótipo de item do tipo Zabbix agent que retorne as estatísticas de um sistema de arquivos descoberto:
- Chave:
vfs.fs.get[full,{#FSNAME}] - Tipo de informação: Texto
- Pré-processamento: JSONPath
$[0]
Use esse protótipo de item como o item mestre para protótipos de itens dependentes, por exemplo, com o JSONPath $.bytes.free para obter o número de bytes livres.
Se o agent não conseguir obter estatísticas de um sistema de arquivos descoberto (por exemplo, devido à falta de permissões), vfs.fs.get[full,{#FSNAME}] retornará uma matriz vazia, a etapa de pré-processamento $[0] falhará e o item ficará sem suporte. Dessa forma, o problema ficará visível, em vez de o sistema de arquivos ser ignorado silenciosamente.
Observe que essa configuração executa uma verificação separada do agent para cada sistema de arquivos descoberto.
Essa abordagem é usada pelos templates de SO fornecidos com o Zabbix e requer o Zabbix agent 8.0 ou posterior.