如何在生产环境中收集Symfony 5.4+Shopware 6.4的缓存指标?
无需自定义代码的缓存指标收集方案
1. 利用Redis内置统计(推荐,零侵入)
如果你的Shopware 6.4使用Redis作为缓存后端(Shopware生产环境默认推荐配置),Redis本身会自动记录缓存命中(keyspace_hits)和未命中(keyspace_misses)的统计数据,完全不需要修改任何代码:
- 直接执行
redis-cli INFO stats命令就能查看这些原始指标 - 可通过Prometheus+Grafana这类监控工具定期采集Redis的这些指标,再通过公式
keyspace_hits/(keyspace_hits+keyspace_misses)计算命中率 - 这种方式性能开销可以忽略不计,完全不影响生产环境运行
2. 启用Symfony Cache组件的统计功能
Symfony 5.4的Cache组件内置统计能力,只需通过配置开启,无需编写代码:
- 在
config/packages/cache.yaml中为目标缓存池开启统计:
framework: cache: pools: cache.app: options: enable_stats: true cache.system: options: enable_stats: true
- 配置Monolog日志记录缓存事件:在
config/packages/monolog.yaml中添加专属日志处理器:
monolog: handlers: cache_stats: type: stream path: '%kernel.logs_dir%/cache_stats.log' level: info channels: ['cache']
- 后续缓存的命中、未命中事件会自动写入
cache_stats.log,可通过ELK Stack等日志分析工具提取并分析这些数据
3. 使用Shopware 6官方监控集成
Shopware 6.4支持通过官方插件集成Prometheus监控,无需自定义代码:
- 安装Shopware官方提供的Prometheus插件(部分版本可能预装)
- 完成插件配置后,它会自动将缓存命中/未命中等指标暴露到Prometheus采集端点
- 结合Grafana即可快速实现缓存指标的可视化监控
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

