Bumblebee微服务网关之访问日志处理
記錄訪問日志可以起到非常重要的作用,它不僅記錄了API的使用情況,更可以反映API各種相關(guān)數(shù)據(jù);通過分析日志可以得到API不同時(shí)間的負(fù)載情況,訪問效率和流量分布,更進(jìn)一步還能分析出用戶的操作歷史和行為這是非常有價(jià)值的。由于性能問題Bumblebee默認(rèn)并不直接寫入這些日志,而是通過插件的方式來加載處理。Bumblebee.Logs是組件的日志擴(kuò)展插件,它支持寫入數(shù)據(jù)和文件兩種方式,使用者可以根據(jù)自己的需求來開啟(由于這兩個(gè)插件會完全寫入所有請求日志,如果應(yīng)用并發(fā)量大時(shí)啟用需要注意).如果需要更高效的日志處理(如nosql、mq等)或更豐富的日志內(nèi)容則需要使用者擴(kuò)展引入。
引用插件
Bumblebee中使用JWT需要引用兩個(gè)插件,分別是Bumblebee.Configuration和Bumblebee.Logs。加載啟動后就可以通過管理工具進(jìn)行插件配置.
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
);
如果不想自己編寫代碼可以下載編譯的運(yùn)行包?Bumblebee1.0.6這個(gè)版本已經(jīng)加入了Bumblebee.Logs
插件管理
運(yùn)行程序后進(jìn)行配置管理工具的插件管理頁面,可以看到日志插件,默認(rèn)是未啟用(由于日志寫入需要大量的IO操作,在大并發(fā)的情況可能會引起IO負(fù)載過重,需根據(jù)自己情況來啟用;如果當(dāng)前插件在性能上不能滿足需求,則需要自己擴(kuò)展插件)。
日志組件提供兩個(gè)插件,分別是寫入本地文件和寫入數(shù)據(jù)庫
寫入文件
當(dāng)開始寫入文件日志插件時(shí),會在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
主要寫入的內(nèi)容是:時(shí)間,ID,客戶端IP,請求類型,路徑,處理的服務(wù),狀態(tài)和處理時(shí)間(單位ms)。
寫入數(shù)據(jù)庫
插件提供日志寫入數(shù)據(jù)庫功能,分別支持:MSSQL,MYSQL和PGSQL三種數(shù)據(jù)庫;在插件啟用之前先把數(shù)據(jù)庫信息配置好。
QueueSize?緩存隊(duì)列大小,為了提高寫入性能組件通過批量的方式寫入,在寫入之前會緩存到隊(duì)列中。
DBType數(shù)據(jù)庫類型,分別為:MSSQL,MYSQL和PGSQL
ConnectionString數(shù)據(jù)庫連接字符串
Table?存儲日志的表名稱
MYSQL日志結(jié)構(gòu)
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;
數(shù)據(jù)庫配置完成后就可以啟用插件,啟用后相關(guān)訪問就會寫入到對應(yīng)的數(shù)據(jù)庫上
寫入記錄
默認(rèn)提供插件記錄的數(shù)有限,如果你想更更豐富的數(shù)據(jù),如header,querystring等更詳細(xì)信息可以自定義相關(guān)插件來實(shí)現(xiàn)。
關(guān)注公眾號
?https://github.com/IKende/?
高性能的服務(wù)通訊框架?Beetlex(http,rpc,gateway的詳細(xì)實(shí)現(xiàn))
總結(jié)
以上是生活随笔為你收集整理的Bumblebee微服务网关之访问日志处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【 .NET Core 3.0 】框架之
- 下一篇: Bumblebee微服务网关之并发限制