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


记录访问日志可以起到非常重要的作用,它不仅记录了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负载过重,需根据自己情况来启用;如果当前插件在性能上不能满足需求,则需要自己扩展插件)。

640?wx_fmt=png

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

写入文件

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

2019/10/3 20:15:33	9418d4d1ffef4c28ad93929321026045_158	::ffff:192.168.2.18	GET	/	/json	192.168.2.25:9090	200	1
2019/10/3 20:15:33 9418d4d1ffef4c28ad93929321026045_159 ::ffff:192.168.2.18 GET / /json 192.168.2.31:9090 200 1
2019/10/3 20:15:33 9418d4d1ffef4c28ad93929321026045_161 ::ffff:192.168.2.18 GET / /json 192.168.2.27:9090 200 1
2019/10/3 20:15:33 9418d4d1ffef4c28ad93929321026045_163 ::ffff:192.168.2.18 GET / /json 192.168.2.26:9090 200 1
2019/10/3 20:15:33 9418d4d1ffef4c28ad93929321026045_165 ::ffff:192.168.2.18 GET / /json 192.168.2.32:9090 200 2
2019/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三种数据库;在插件启用之前先把数据库信息配置好。

640?wx_fmt=png

  • 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;

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

640?wx_fmt=png

写入记录

640?wx_fmt=png

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


关注公众号

640?wx_fmt=jpeg

 https://github.com/IKende/ 

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值