记录访问日志可以起到非常重要的作用,它不仅记录了API的使用情况,更可以反映API各种相关数据;通过分析日志可以得到API不同时间的负载情况,访问效率和流量分布,更进一步还能分析出用户的操作历史和行为这是非常有价值的。由于性能问题Bumblebee默认并不直接写入这些日志,而是通过插件的方式来加载处理。Bumblebee.Logs是组件的日志扩展插件,它支持写入数据和文件两种方式,使用者可以根据自己的需求来开启(由于这两个插件会完全写入所有请求日志,如果应用并发量大时启用需要注意).如果需要更高效的日志处理(如nosql、mq等)或更丰富的日志内容则需要使用者扩展引入。

引用插件

Bumblebee中使用JWT需要引用两个插件,分别是Bumblebee.ConfigurationBumblebee.Logs。加载启动后就可以通过管理工具进行插件配置.

            g = new Gateway();g.HttpOptions(o =>                {o.Port = 80;o.LogToConsole = true;o.LogLevel = BeetleX.EventArgs.LogType.Error;                });g.Open();g.LoadPlugin(typeof(Bumblebee.Configuration.Management).Assembly,typeof(Bumblebee.Logs.FileLog).Assembly               );

如果不想自己编写代码可以下载编译的运行包 Bumblebee1.0.6这个版本已经加入了Bumblebee.Logs

插件管理

运行程序后进行配置管理工具的插件管理页面,可以看到日志插件,默认是未启用(由于日志写入需要大量的IO操作,在大并发的情况可能会引起IO负载过重,需根据自己情况来启用;如果当前插件在性能上不能满足需求,则需要自己扩展插件)。

日志组件提供两个插件,分别是写入本地文件和写入数据库

写入文件

当开始写入文件日志插件时,会在request_logs中写入日志文件,日志格式如下:

2019/10/3 20:15:33  9418d4d1ffef4c28ad93929321026045_158    ::ffff:192.168.2.18 GET /   /json   192.168.2.25:9090   200 12019/10/3 20:15:33   9418d4d1ffef4c28ad93929321026045_159    ::ffff:192.168.2.18 GET /   /json   192.168.2.31:9090   200 12019/10/3 20:15:33   9418d4d1ffef4c28ad93929321026045_161    ::ffff:192.168.2.18 GET /   /json   192.168.2.27:9090   200 12019/10/3 20:15:33   9418d4d1ffef4c28ad93929321026045_163    ::ffff:192.168.2.18 GET /   /json   192.168.2.26:9090   200 12019/10/3 20:15:33   9418d4d1ffef4c28ad93929321026045_165    ::ffff:192.168.2.18 GET /   /json   192.168.2.32:9090   200 22019/10/3 20:15:33   9418d4d1ffef4c28ad93929321026045_167    ::ffff:192.168.2.18 GET /   /json   192.168.2.28:9090   200 1

主要写入的内容是:时间,ID,客户端IP,请求类型,路径,处理的服务,状态和处理时间(单位ms)。

写入数据库

插件提供日志写入数据库功能,分别支持:MSSQL,MYSQL和PGSQL三种数据库;在插件启用之前先把数据库信息配置好。

  • QueueSize 缓存队列大小,为了提高写入性能组件通过批量的方式写入,在写入之前会缓存到队列中。

  • DBType数据库类型,分别为:MSSQL,MYSQL和PGSQL

  • ConnectionString数据库连接字符串

  • Table 存储日志的表名称

MYSQL日志结构

CREATE TABLE `_gateway_log` (`ID` varchar(50) NOT NULL,`CreateTime` datetime DEFAULT NULL,`RemoteIP` varchar(45) DEFAULT NULL,`Method` varchar(10) DEFAULT NULL,`Path` varchar(45) DEFAULT NULL,`Url` varchar(1024) DEFAULT NULL,`Server` varchar(45) DEFAULT NULL,`Code` int(11) DEFAULT NULL,`ProcessTime` int(11) DEFAULT NULL,PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

数据库配置完成后就可以启用插件,启用后相关访问就会写入到对应的数据库上

写入记录

默认提供插件记录的数有限,如果你想更更丰富的数据,如header,querystring等更详细信息可以自定义相关插件来实现。


关注公众号

https://github.com/IKende/

高性能的服务通讯框架 Beetlex(http,rpc,gateway的详细实现)

Bumblebee微服务网关之访问日志处理相关推荐

  1. Bumblebee微服务网关之负载策略

    作为一个微服务网关,提供不同负载策略配置是一项非常重要的主要功能:在这方向Bumblebee提供了非常好的支持.Bumblebee可以针对不同路径制定各自的负载策略,更重要的是这些调整都可以在网关运行 ...

  2. Bumblebee微服务网关之并发限制

    对于服务应用来说支持的并发越高越好,但很多时候资源有限,超负载的并发则会给整体应用带来更大的危险性(更何况有些并发来源是恶意的).作为微服务网关应该具有一定的挡洪作用,这样可以一定程度保障后台逻辑服务 ...

  3. Bumblebee微服务网关之请求统一验证

    对于微服务网关来说,统一请求验证是一个比较重要和常用的功能,通过网关验证后台服务就无须关注请求验证:对于多语言平台的服务而言制定验证方式和变更验证配置都是一件比较繁琐和工作量大的事情.Bumblebe ...

  4. Bumblebee微服务网关之consul服务发现

    网关需要维护相关负载的服务器,手动添加相对来说是一件比较麻烦的工作:为了解决这一问题组件扩展了一个基于consul服务发现插件,通过配置这个插件和启用后网关会自动从consul服务中获取服务并添加到网 ...

  5. Bumblebee微服务网关之Url重写

    为了提高Url访问的统一和友好性,一般访问的Url和服务定义的Url有所不同;为了解决这一问题Bumblebee提供Url重写功能;通过Url重写功能可以在转发前进行一个重写后再转发到后台服务. 引用 ...

  6. 个推微服务网关架构实践

    作者:个推应用平台基础架构高级研发工程师 阿飞 在微服务架构中,不同的微服务可以有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求.因此,在客 ...

  7. 微服务网关Ocelot

    微服务网关是微服务架构中的核心组件,它是客户端请求的门户,它是调用具体服务端的桥梁.下面我们将使用开源项目Ocelot(https://github.com/geffzhang/Ocelot)搭建一款 ...

  8. spring cloud gateway 网关_微服务网关Spring Cloud Gateway全搞定

    一.微服务网关Spring Cloud Gateway 1.1 导引 文中内容包含:微服务网关限流10万QPS.跨域.过滤器.令牌桶算法. 在构建微服务系统中,必不可少的技术就是网关了,从早期的Zuu ...

  9. 微服务实现不同登陆_微服务网关——实现篇

    在<微服务网关--需求篇 >中,我们讨论了微服务网关的需求:而在<微服务网关--设计篇 >中,我们讨论了微服务网关的设计.本文将对微服务网关进行实现. 对于网关的开发,完全自研 ...

最新文章

  1. 优化:梯度下降法、牛顿法、共轭梯度法
  2. 信息安全隐患日趋严重 专家呼吁政策监管仍待加强
  3. error: device not found - waiting for device -
  4. NOIP2008 双栈排序
  5. 前端学习(3212):解决类中的this问题
  6. 软件协会发布开源软件与商业软件知识产权报告
  7. 医疗数据分析——过高费用的异常检测
  8. 通俗易懂理解JAVA虚拟机
  9. Access数据库多表联合查询
  10. Word模板引擎使用指南
  11. Windows:电源计划:隐藏在深处的卓越性能,Get正确打开方式
  12. Ps2021软件安装Mac(含M1)、Windows版
  13. 一步一步实现STM32-FOTA系列教程之STM32-FLASH分区说明
  14. 错误:EACCES:权限被拒绝,访问“/usr/lib/node_modules”
  15. 乐动手环app下载安装_乐动健康安卓版
  16. WCF技术剖析之十四:泛型数据契约和集合数据契约(上篇)
  17. StorageEngine
  18. 北宋政坛翘楚,文坛领袖大串联
  19. 谁说QTP不能多线程 - 当Python遇上QTP
  20. 显卡超频稳定测试软件,显卡超频稳定性测试终极手段

热门文章

  1. 【MFC】MFC中调用系统软键盘的几种方法
  2. 不知道为什么IList.Contains()总是返回FALSE
  3. JSP数据库连接方式总结
  4. ZT:利用Google搜索功能来突破封锁下载
  5. vue mock模拟后台接口数据
  6. 使用ansible 批量分发SSH Key
  7. python:继承日志模块生成自定义日志
  8. 编写iptables脚本实现IP地址、端口过滤
  9. 【项目 报错】 项目启动,内存溢出 可能出现的各种报错
  10. 使用ADO.NET的参数集合来有效防止SQL注入漏洞