最近错误日志输出了一个信息: uriSessionMapFullCount is full 查看代码发现是 WebAppStat.java#getURIStat() 方法输出的, 原因可能是URI 日志的个数超过了默认的1000条。
能不能增加某个配置, 使得REST风格的多个请求的统计信息合并为一条。 例如:
/someApp/api/userinfo/1 /someApp/api/userinfo/2 /someApp/api/userinfo/3 /someApp/api/userinfo/...
原提问者GitHub用户renfufei
对于RESTful风格的URI进行监控信息合并是一个很好的实践,可以提高监控系统的可用性和可靠性。这种方法可以将具有相同语义的URI的监控信息合并在一起,从而减少监控信息的冗余,并且可以更好地了解应用程序的运行状况。
以下是一些可能的实现方法:
根据URI模式进行合并
可以根据URI的模式进行合并,例如,将所有以"/users/"开头的URI的监控信息合并在一起。这种方法可以将具有相同语义的URI的监控信息合并在一起,并且可以根据URI的模式来定制合并策略。
使用标签进行合并
可以为每个URI设置标签,例如,将所有与用户相关的URI设置为"user"标签。这种方法可以将具有相同标签的URI的监控信息合并在一起,并且可以根据标签来定制合并策略。
使用动态配置进行合并
可以使用动态配置来进行URI监控信息的合并。例如,可以在配置文件中设置一个正则表达式,用于匹配需要合并的URI。这种方法可以根据应用程序的实际需求来定制合并策略。
对于你的需求,你可以通过自定义拦截器或过滤器来实现RESTful风格的URI监控信息合并。
首先,你可以创建一个自定义的拦截器或过滤器,用于统计URI的请求信息。
在拦截器或过滤器中,你可以使用一个Map来保存请求的URI及其统计信息。每次请求到达时,你可以根据URI将请求信息添加到Map中,或者更新已有的统计信息。
然后,你可以通过定时任务或者监听器,定期输出合并后的统计信息。你可以在特定的时间间隔内合并相同URI的请求信息,生成一条合并后的统计信息。
在输出合并后的统计信息时,你可以按照你希望的格式输出,例如将多个请求合并为一条,或者按照一定的规则进行合并。
最后,你可以将这个拦截器或过滤器注册到你的Spring Boot应用中,并配置相关的参数,如请求路径、统计信息的保存时间等。
需要注意的是,合并统计信息可能会导致一些细节的丢失,因此你需要在合并时权衡信息的准确性和统计的实时性。
希望这些信息能够对你有所帮助,如果你有任何进一步的问题,请随时提问。
看了一下源码,感觉可以在获取监控结果时,根据相关配置/模式对结果信息进行合并。至于前面的整个流程,都不用修改。
原回答者GitHub用户renfufei
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。