如何配置Geneos以列出UNIX文件夹中含昨日日期的所有文件
解决Geneos FKM/FTM插件仅列出第一个匹配文件的问题
我之前在使用Geneos监控UNIX服务器文件时,也碰到过FKM/FTM用通配符只返回第一个匹配项的情况,下面是几个亲测有效的配置方案,帮你列出含昨日日期的所有目标文件:
方案1:用Shell脚本+FKM命令模式替代直接通配符
FKM直接用通配符(比如/location/*)时确实只会抓取第一个匹配文件,所以我们可以写个简单的shell脚本,主动过滤并输出所有符合条件的文件,再让FKM执行这个脚本:
- 创建一个脚本文件(比如
/usr/local/geneos/scripts/yesterday_files.sh),内容如下:
#!/bin/bash # 生成昨日日期,格式根据你的文件名调整,比如YYYYMMDD、YYYY-MM-DD等 YESTERDAY=$(date -d "yesterday" +%Y%m%d) # 列出目标文件夹中包含昨日日期的所有文件(不包含子目录) ls /your/target/location/*$YESTERDAY* # 如果需要包含子目录,换成find命令: # find /your/target/location -type f -name "*$YESTERDAY*"
- 给脚本添加执行权限:
chmod +x /usr/local/geneos/scripts/yesterday_files.sh - 在Geneos FKM采样器的配置中:
- 将Command设置为脚本路径:
/usr/local/geneos/scripts/yesterday_files.sh - 开启Line Based Parsing,并配置输出解析规则,把每一行输出识别为一个文件条目(比如直接捕获整行作为文件名)
- 将Command设置为脚本路径:
这样FKM每次采样时,就会执行脚本并返回所有匹配昨日日期的文件。
方案2:使用FTM插件的目录扫描+正则过滤
如果更倾向于用FTM插件,可以通过目录扫描模式结合动态正则过滤来实现:
- 在FTM采样器配置中:
- 设置Directory为目标文件夹路径:
/your/target/location - 关闭Include Subdirectories(如果不需要监控子目录的话)
- 在File Filter中使用正则表达式匹配文件名中的昨日日期。比如你的文件名是
report_2024-05-20.txt格式,正则可以写成:
(注意:部分Geneos版本支持直接在配置中嵌入shell命令,若不支持,可以提前通过环境变量传递昨日日期,或者用静态正则结合每日调度更新配置).*$(date -d yesterday +%Y-%m-%d).*
- 设置Directory为目标文件夹路径:
- 配置FTM的Output Fields,确保每个匹配的文件都能单独显示在dataview中
注意事项
- 确保Geneos的运行用户对目标文件夹有读取权限,否则脚本或FTM扫描会失败
- 日期格式要和文件名中的日期完全匹配,比如文件名用
20240520就不要生成2024-05-20的日期变量 - 如果需要监控文件的其他属性(比如大小、修改时间),可以在脚本或FTM配置中额外添加对应逻辑
内容的提问来源于stack exchange,提问作者user3142257
相关产品推荐
相关产品推荐

