.NET Core 基于 Grafana Loki 日志初体验
介紹
Loki: like Prometheus, but for logs.
Loki是一個輕量級的日志系統(tǒng),受到Prometheus項目的啟發(fā),由Grafana團隊設(shè)計和開發(fā),所以在Grafana中是原生支持的,具有可水平擴展,高度可用等特性,通過存儲壓縮的、非結(jié)構(gòu)化的日志以及僅索引元數(shù)據(jù),更加易于操作并且運行成本更低。
github: https://github.com/grafana/loki
組件
?promtail 是代理,負責收集日志并將其發(fā)送給Loki。?loki 是主服務(wù)器,負責存儲日志和處理查詢。?Grafana 用于查詢和顯示日志。
安裝
官方安裝文檔:https://grafana.com/docs/loki/latest/installation/
官網(wǎng)支持了幾種常見的安裝方式,我這里主要使用 Docker Compose 安裝。
docker-compose.yaml
version: "3"networks:loki:services:loki:image: grafana/loki:2.2.1ports:- "3100:3100"command: -config.file=/etc/loki/local-config.yamlnetworks:- lokipromtail:image: grafana/promtail:2.2.1volumes:- /var/log:/var/logcommand: -config.file=/etc/promtail/config.ymlnetworks:- lokigrafana:image: grafana/grafana:latestports:- "3000:3000"networks:- loki執(zhí)行下邊命令,下載docker-compose.yaml
wget https://raw.githubusercontent.com/grafana/loki/v2.2.0/production/docker-compose.yaml -O docker-compose.yaml啟動容器
docker-compose up -d啟動成功后,運行 docker ps,可以看到啟動了3個服務(wù),端口為3100的Grafana,端口為3000的loki服務(wù),還有promtail代理。
接下來,訪問 http://localhost:3000 到Grafana的頁面,首次登錄需要初始化賬號和密碼,然后找到左邊菜單的 Configuration -> Data Sources -> Add Data Source -> Loki,配置數(shù)據(jù)源,在url里填寫loki服務(wù)的地址即可,然后保存,然后可以到 Explore 頁面,查看數(shù)據(jù)。
在 .NET Core 中配置
這里主要用到了 Serilog 的Loki擴展,我新建了一個 webapi項目,名字叫LogDemo,然后需要通過Nuget安裝以下幾個組件。
?Serilog?Serilog.AspNetCore?Serilog.Sinks.Grafana.Loki
安裝完成以后,接著修改Program.cs 配置 Serilog。
public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>();}).UseSerilog((context, config) =>{config.Enrich.FromLogContext().Enrich.WithProperty("app", context.HostingEnvironment.ApplicationName).WriteTo.GrafanaLoki("http://localhost:3100").WriteTo.Console();});啟動項目后,刷新幾次頁面,再回到 Grafana 的Explore 頁面,輸出查詢條件?{app="LogDemo"},然后就可以查詢到webapi的日志。
總結(jié)
Grafana 原生支持,體驗也很好,和其他日志系統(tǒng)ELK相比,具有輕量級,高可用,高效率等特點,是一個非常優(yōu)秀的日志組件,本文簡單嘗試使用 Loki 日志系統(tǒng),更多的介紹和配置請參照官方文檔。
https://grafana.com/oss/loki/
總結(jié)
以上是生活随笔為你收集整理的.NET Core 基于 Grafana Loki 日志初体验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Polly的7种策略
- 下一篇: 通过Dapr实现一个简单的基于.net的
