一千萬個為什麽

搜索

在Zabbix中從結構化文件中獲取項目值



Zabbix內置的用於監視系統參數的內容相當豐富,但偶爾有些東西看起來並不重要,例如有多少個臟緩存頁面。

例如,在典型的Linux系統上考慮/proc/meminfo

Inactive(file):  1348288 kB
Unevictable:       18876 kB
Mlocked:           18876 kB
SwapTotal:       8388604 kB
SwapFree:        8388604 kB
Dirty:             39620 kB
Writeback:           948 kB
AnonPages:       6184596 kB
Mapped:          5319216 kB
Shmem:            427020 kB
Slab:             741476 kB
SReclaimable:     633088 kB
SUnreclaim:       108388 kB
KernelStack:       14528 kB
PageTables:       118816 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16575460 kB
Committed_AS:   19184632 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:     9692684 kB
DirectMap2M:     7049216 kB

我想要的是來自 Dirty 行的39620。通過 sedgrep 的組合,這將會像 export field = Dirty一樣簡單; grep -e“$ field:”/ proc/meminfo | sed -e“s/^ $ field:\ + \([0-9] \)\ +。* $/\ 1 /”;非常坦率的。

我可以用UserParameter完成此操作:

UserParameter=proc.meminfo[*], grep -e "$1:" /proc/meminfo | sed -e "s/^$1: \+\([0-9]\)\+.*$/\1/"

然後使用項目鍵 proc.meminfo [Dirty] 訪問該值。

盡管如此,我希望不要使用UserParameter作為UserParameter,因為UserParameter要求我為每個節點部署額外的配置,並且該進程還會消耗系統熵。兩者都是我通常喜歡避免的事情。

轉載註明原文: 在Zabbix中從結構化文件中獲取項目值

一共有 1 個回答:

如果您的Zabbix代理是2.2或更高版本,則可以使用 Zabbix代理item vfs.file.regexp 像這樣:

vfs.file.regexp[/proc/meminfo,^Dirty.*([0-9]+),,,,\1]