Windows服务发现:从路径提取可执行文件用于监控项原型
在Zabbix中提取服务可执行文件名用于Perfmon监控
可以通过预处理规则或者监控项原型内的宏替换两种方式,把{#SERVICE.PATH}的完整路径转换成仅.exe文件名,具体操作如下:
方法一:修改服务发现规则的预处理(全局生效)
- 进入Zabbix前端,找到对应模板下的
discovery.service自动发现规则(路径:配置 → 模板 → 目标模板 → 自动发现) - 在「预处理」模块添加一条规则:
- 类型选择「正则表达式替换」
- 正则表达式填入:
^.*\\([^\\]+\\.exe)$ - 替换为填入:
\1 - 目标宏选择
{#SERVICE.PATH}
- 保存后,后续发现的服务中
{#SERVICE.PATH}就只会返回spoolsv.exe这类文件名,而非完整路径。
方法二:在监控项原型内单独处理(仅当前监控项生效)
如果不想修改全局发现规则,直接在监控项原型的键值里处理宏:
- CPU使用率监控项的键值修改为:
perf_counter[\\Process({#SERVICE.PATH}:^.*\\([^\\]+\\.exe)$:\1)\\% Processor Time] - 内存使用率监控项的键值修改为:
perf_counter[\\Process({#SERVICE.PATH}:^.*\\([^\\]+\\.exe)$:\1)\\Private Bytes]
正则表达式说明
^.*\\ 匹配从路径开头到最后一个反斜杠的所有内容;([^\\]+\\.exe) 捕获最后一个反斜杠后的完整文件名(包含.exe后缀);\1 引用捕获到的文件名部分,从而替换掉整个完整路径。
内容的提问来源于stack exchange,提问作者Daniel4711
相关产品推荐
相关产品推荐

