Bumblebee微服务网关之访问日志处理
記錄訪問日志可以起到非常重要的作用,它不僅記錄了API的使用情況,更可以反映API各種相關數據;通過分析日志可以得到API不同時間的負載情況,訪問效率和流量分布,更進一步還能分析出用戶的操作歷史和行為這是非常有價值的。由于性能問題Bumblebee默認并不直接寫入這些日志,而是通過插件的方式來加載處理。Bumblebee.Logs是組件的日志擴展插件,它支持寫入數據和文件兩種方式,使用者可以根據自己的需求來開啟(由于這兩個插件會完全寫入所有請求日志,如果應用并發量大時啟用需要注意).如果需要更高效的日志處理(如nosql、mq等)或更豐富的日志內容則需要使用者擴展引入。
引用插件
Bumblebee中使用JWT需要引用兩個插件,分別是Bumblebee.Configuration和Bumblebee.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 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三種數據庫;在插件啟用之前先把數據庫信息配置好。
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微服务网关之访问日志处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【 .NET Core 3.0 】框架之
- 下一篇: Bumblebee微服务网关之并发限制