专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

java微服务日志处理的最合适方案是什么_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 16:39:34       共计:3598 浏览

java微服务日志处理的最合适方案是什么?

情况及需求描述:1.java spring boot开发的微服务有多个,每个微服务在4台云服务器上部署4个节点2.有1个网关,部署在一台服务器上,所有请求都通过网关进行转发和负载均衡3.需要对网关发起的每一请求都记录日志,例如请求的时间、ip、参数、耗时、返回结果等4.网关的访问日志需要保证安全持久化,即不能丢失,以便后期对账5.希望网关的访问日志的保存,能够具有一定的实时性,以便后台能够即时看到访问的变化、做数据分析等6.每个微服务、节点上的错误日志能够远程访问查看,而不是登录每一台与服务器去查日志文件7.一共有4台云服务器,2台阿里、2台华为,每台双核16g,数据库只有一个阿里的rds和redis

尝试方案1:在网关配置logback,将访问日志输出到logstash,再由logstash输出到elastic,最后kibana展示,即ELK方案问题:1.logstash的过滤器grok配置有点难,默认如果log.info(RequestModel)这样打日志,RequestModel中的信息会在logstash中单独以一个"message"字段进行保存,这对后面kibana写过滤表达式很难处理。后来采取java代码中"log.info("{} {} {}", request_uri, request_ip, request_param)"这种日志产生后,仅希望将这些request_*字段输出至logstash,多余的字段不要,可用grok过滤,但一些自定义的字段不太会处理,正则表达式也不怎么会用2.对elastic掌握还不是很深,之前有遇到过数据丢失的情况,由于这次需求要保证数据不能丢失,所以暂不太敢贸然使用尝试方案2:仍然在网关配置logback,但输出至db mysql,然后用logstash把数据导到elastic,最后kibana展示问题:仍然是关于仅保存自定义字段的需求,网上了解了一圈,默认是要3张表,肯定不是我要的;还有用继承重写方法的,但看起来仍然没有达到我要的要求。并且还有一个连接池的问题没有解决,就也没有研究下去。尝试方案3:网关处理好需要保存的日志信息后,直接调用dao层持久化到db mysql,然后用logstash把数据导到elastic,最后kibana展示问题:网关上的请求肯定是量很大的,考虑单独架设一个mysql服务,专门用来保存日志,也就是只有写操作,不去影响到业务db。保存的话,肯定不能单条写入,那就想到用队列,队列满一定条数后,批量写入,但这似乎又不能达到实时性的要求

所以想问,分布式服务的访问日志以及后台业务日志,究竟应该如何设计,使其具备一定实时性、持久化、可分析、可扩展、可视化等要求

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:为什么我连到简单题目都要想一整天_数据库 | ·下一条:去哪里学个技术好_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有