例如,考虑一下
/proc/meminfo
在典型的Linux系统上: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
我想要的是39420,来自
Dirty
行。使用sed
和grep
的组合,这将像export field=Dirty; grep -e "$field:" /proc/meminfo | sed -e "s/^$field: \+\([0-9]\)\+.*$//"
一样简单; 我可以使用UserParameter进行此操作:
UserParameter=proc.meminfo[*], grep -e ":" /proc/meminfo | sed -e "s/^: \+\([0-9]\)\+.*$//"
,然后使用项键
proc.meminfo[Dirty]
访问该值。我不想为此使用UserParameter,因为UserParameter要求我向每个节点部署其他配置,并且进程生成会消耗系统熵。两者都是我通常都希望避免的事情。
#1 楼
如果您的Zabbix代理是2.2或更高版本,则可以使用Zabbix代理项vfs.file.regexp
,如下所示:vfs.file.regexp[/proc/meminfo,^Dirty.*([0-9]+),,,,]
如果您的Zabbix是3.4或更高版本,则可以使用主项收集数据Blob(可能是
vfs.file.contents
),然后使用项目值预处理提取并解析所需值。