很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

2026-03-30 15:211阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1393个文字,预计阅读时间需要6分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

前言+日志功能几乎是所有程序或系统必备的一个功能。本文通过使用Loki+Grafana来实现日志记录与可视化查询。

1.Serilog简介

Serilog是ASP.NET Core的一个插件,能够简化日志记录。

前言

日志功能是几乎所有程序或系统都必备的一个功能。该文章通过使用Loki+Grafana来实现日志记录与可视化查询。

1.Serilog简介

Serilog 是 ASP.NET Core 的一个插件,能够简化日志记录。Serilog 有各类可用的接收器,例如,有纯文本、SQL 和 ElasticSearch 接收器等等。

2.Grafana简介

Grafana 是一个开源的监控数据分析和可视化套件。最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域。Grafana 可以帮助你查询、可视化、告警、分析你所在意的指标和数据。可以与整个团队共享,有助于培养团队的数据驱动文化。

3.Loki是什么

Loki日志系统是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。它被设计得非常轻量高效且易于操作,使用标签来作为索引,而不是对全文进行检索,即通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。

一、Serilog对接Grafana轻量级日志可视化服务

ELK和PLG的比较

  • Elasticsearch中的数据作为非结构化JSON对象存储在磁盘上,Loki以二进制的形式存储。
  • Elasticsearch采用全文索引,倒排索引的切分和共享的成本较高。Loki仅索引元数据,比如标签。
  • 和Prometheus无缝集成。

ELK和PLG对应关系

ELK组件 PLG组件 功能 ElasticSearch Loki 主服务器,负责存储日志和处理查询 Logstash promtail 代理,负责收集日志并将其发送给主服务器 Kibana Grafana 用于查询和显示日志

本文只是简单介绍使用,具体复杂用法参考官网

官网配置参考:grafana.com/docs/loki/latest/configuration/

1.Grafana部署

1、下载Grafana安装包 Grafana官网:grafana.com/grafana/download?platform=windows

2、安装grafana 解压之后打开bin文件夹运行 grafana-server.exe后打开localhost:3000 即可跳转到登陆页面。初始用户名和密码都是admin 网页页面如下

登陆以后,就可以看到grafana的主页面了

2.Loki部署

1、下载Loki Loki官网:github.com/grafana/loki/releases

2、安装Loki 进入到解压后的Loki文件夹下,可以看到Loki的运行程序,此处我们在该目录下,新加一个配置文件config.yaml

auth_enabled: false server: github.com/grafana/loki/releases

2、安装promtail 进入到解压后的promtail文件夹下,可以看到promtail的运行程序,此处我们在该目录下,新加一个配置文件config.yaml

server: localhost:3100/loki/api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: mylogs __path__: C:\Users\Happy\devTools\Loki\LokiDemo\logs\*.log"

启动promtail服务

.\promtail-windows-amd64.exe --config.file=config.yaml

4.测试.NET Core写入日志效果

引用serilog包,有关引用的包详情

appsettings.json配置文件

{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Grafana.Loki" ], "MinimumLevel": { "Default": "Debug", "Override": { "Microsoft": "Warning", "System": "Warning" } }, "Enrich": [ "WithThreadId" ], "WriteTo": [ { "Name": "Console", "Args": { "outputTemplate": "{NewLine}Date:{Timestamp:yyyy-MM-dd HH:mm:ss.fff}{NewLine}LogLevel:{Level}{NewLine}Class:{SourceContext}{NewLine}Message:{Message}{NewLine}{Exception}" } }, { "Name": "GrafanaLoki", "Args": { "uri": "localhost:3100", "labels": [ { "key": "wesky", "value": "WeskyLog" } ], "propertiesAsLabels": [ "app" ] } } ] } }

Program.cs

using Serilog; using Serilog.Sinks.Grafana.Loki; using System; namespace LokiDemo { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Host .ConfigureLogging((_, loggingBuilder) => loggingBuilder.ClearProviders()) .UseSerilog((ctx, cfg) => cfg.ReadFrom.Configuration(ctx.Configuration)); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseAuthorization(); app.MapControllers(); app.Run(); } } }

新增一个控制器,用来做日志写入测试。构造函数注入日志服务,并进行输出四个不同类型的日志

using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace LokiDemo.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class TestController : ControllerBase { ILogger<TestController> _logger; public TestController(ILogger<TestController> logger) { _logger = logger; } [HttpPost] public IActionResult TestLokiLog(string par) { _logger.LogInformation($"这是一条基本信息。接收到接口参数:{par}"); _logger.LogError("这是一条异常测试信息……"); _logger.LogDebug("这是Debug日志信息……"); return Ok(par); } } }

运行程序,在swagger内调用一下。访问成功以后,可以看到控制台已有日志输出。

5.测试查询日志

打开grafana,左下角选择 数据源(Data sources) 选择Loki数据源,并输入Loki部署的地址(此处是本地地址,如果需要修改部署地址和端口,可以Loki配置文件内修改)。 配置地址完毕以后,选择保持和测试,提示成功即可。 然后转到Explore菜单栏,可以对查询功能进行预设。 在搜索栏里面,选择标签信息 也可以通过Json形式进行查看 也可以做关键字查询

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

总结

源码的地址:download.csdn.net/download/aa2528877987/87320133

本文共计1393个文字,预计阅读时间需要6分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

前言+日志功能几乎是所有程序或系统必备的一个功能。本文通过使用Loki+Grafana来实现日志记录与可视化查询。

1.Serilog简介

Serilog是ASP.NET Core的一个插件,能够简化日志记录。

前言

日志功能是几乎所有程序或系统都必备的一个功能。该文章通过使用Loki+Grafana来实现日志记录与可视化查询。

1.Serilog简介

Serilog 是 ASP.NET Core 的一个插件,能够简化日志记录。Serilog 有各类可用的接收器,例如,有纯文本、SQL 和 ElasticSearch 接收器等等。

2.Grafana简介

Grafana 是一个开源的监控数据分析和可视化套件。最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域。Grafana 可以帮助你查询、可视化、告警、分析你所在意的指标和数据。可以与整个团队共享,有助于培养团队的数据驱动文化。

3.Loki是什么

Loki日志系统是受Prometheus启发由Grafana Labs团队开源的水平可扩展,高度可用的多租户日志聚合系统。它被设计得非常轻量高效且易于操作,使用标签来作为索引,而不是对全文进行检索,即通过这些标签既可以查询日志的内容也可以查询到监控的数据签,极大地降低了日志索引的存储。

一、Serilog对接Grafana轻量级日志可视化服务

ELK和PLG的比较

  • Elasticsearch中的数据作为非结构化JSON对象存储在磁盘上,Loki以二进制的形式存储。
  • Elasticsearch采用全文索引,倒排索引的切分和共享的成本较高。Loki仅索引元数据,比如标签。
  • 和Prometheus无缝集成。

ELK和PLG对应关系

ELK组件 PLG组件 功能 ElasticSearch Loki 主服务器,负责存储日志和处理查询 Logstash promtail 代理,负责收集日志并将其发送给主服务器 Kibana Grafana 用于查询和显示日志

本文只是简单介绍使用,具体复杂用法参考官网

官网配置参考:grafana.com/docs/loki/latest/configuration/

1.Grafana部署

1、下载Grafana安装包 Grafana官网:grafana.com/grafana/download?platform=windows

2、安装grafana 解压之后打开bin文件夹运行 grafana-server.exe后打开localhost:3000 即可跳转到登陆页面。初始用户名和密码都是admin 网页页面如下

登陆以后,就可以看到grafana的主页面了

2.Loki部署

1、下载Loki Loki官网:github.com/grafana/loki/releases

2、安装Loki 进入到解压后的Loki文件夹下,可以看到Loki的运行程序,此处我们在该目录下,新加一个配置文件config.yaml

auth_enabled: false server: github.com/grafana/loki/releases

2、安装promtail 进入到解压后的promtail文件夹下,可以看到promtail的运行程序,此处我们在该目录下,新加一个配置文件config.yaml

server: localhost:3100/loki/api/v1/push scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: mylogs __path__: C:\Users\Happy\devTools\Loki\LokiDemo\logs\*.log"

启动promtail服务

.\promtail-windows-amd64.exe --config.file=config.yaml

4.测试.NET Core写入日志效果

引用serilog包,有关引用的包详情

appsettings.json配置文件

{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.Grafana.Loki" ], "MinimumLevel": { "Default": "Debug", "Override": { "Microsoft": "Warning", "System": "Warning" } }, "Enrich": [ "WithThreadId" ], "WriteTo": [ { "Name": "Console", "Args": { "outputTemplate": "{NewLine}Date:{Timestamp:yyyy-MM-dd HH:mm:ss.fff}{NewLine}LogLevel:{Level}{NewLine}Class:{SourceContext}{NewLine}Message:{Message}{NewLine}{Exception}" } }, { "Name": "GrafanaLoki", "Args": { "uri": "localhost:3100", "labels": [ { "key": "wesky", "value": "WeskyLog" } ], "propertiesAsLabels": [ "app" ] } } ] } }

Program.cs

using Serilog; using Serilog.Sinks.Grafana.Loki; using System; namespace LokiDemo { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Host .ConfigureLogging((_, loggingBuilder) => loggingBuilder.ClearProviders()) .UseSerilog((ctx, cfg) => cfg.ReadFrom.Configuration(ctx.Configuration)); builder.Services.AddControllers(); // Learn more about configuring Swagger/OpenAPI at aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseAuthorization(); app.MapControllers(); app.Run(); } } }

新增一个控制器,用来做日志写入测试。构造函数注入日志服务,并进行输出四个不同类型的日志

using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace LokiDemo.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class TestController : ControllerBase { ILogger<TestController> _logger; public TestController(ILogger<TestController> logger) { _logger = logger; } [HttpPost] public IActionResult TestLokiLog(string par) { _logger.LogInformation($"这是一条基本信息。接收到接口参数:{par}"); _logger.LogError("这是一条异常测试信息……"); _logger.LogDebug("这是Debug日志信息……"); return Ok(par); } } }

运行程序,在swagger内调用一下。访问成功以后,可以看到控制台已有日志输出。

5.测试查询日志

打开grafana,左下角选择 数据源(Data sources) 选择Loki数据源,并输入Loki部署的地址(此处是本地地址,如果需要修改部署地址和端口,可以Loki配置文件内修改)。 配置地址完毕以后,选择保持和测试,提示成功即可。 然后转到Explore菜单栏,可以对查询功能进行预设。 在搜索栏里面,选择标签信息 也可以通过Json形式进行查看 也可以做关键字查询

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

总结

源码的地址:download.csdn.net/download/aa2528877987/87320133