首页 > 编程语言 >ASP .NET Core 集成 Loki 记录日志

ASP .NET Core 集成 Loki 记录日志

时间:2022-11-15 13:23:16浏览次数:81  
标签:Core ASP promtail Loki yaml loki 日志 config

简介

Grafana Loki 是一个水平可扩展,高可用性,多租户的日志聚合系统,由Grafana团队设计和开发,基于Apatch 2.0开源。其有三部分组成:

  • Loki 是主服务器,负责存储日志和处理查询。对标ELK中的ElasticSearch。
  • Promtail 是代理,负责收集日志并将其发送给loki。对标ELK中的Logstash。本文中目前没有用到此工具
  • Grafana提供用户界面。对标ELK中的Kibana。

相关地址:

部署

#新建配置目录
mkdir  -p /dockerdata/loki

#下载配置文件(根据最新版本)
wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/cmd/loki/loki-local-config.yaml -O /dockerdata/loki/loki-config.yaml

wget https://raw.githubusercontent.com/grafana/loki/v2.6.1/clients/cmd/promtail/promtail-docker-config.yaml  -O /dockerdata/loki/promtail-config.yaml

#Run Loki
docker run --name loki -d -p 3100:3100 -v /dockerdata/loki:/mnt/config   grafana/loki  -config.file=/mnt/config/loki-config.yaml

#修改promtail配置文件Loki地址,修改clients - url 的IP地址
#vi /dockerdata/loki/promtail-config.yaml

#Run Promtail
#docker run --name promtail -d -v /dockerdata/loki:/mnt/config -v /dockerdata/loki/promtailLog:/var/log  grafana/promtail  -config.file=/mnt/config/promtail-config.yaml

测试站点

Curl -I  http://192.168.1.5:3100

Serilog 写入Loki日志

Neget安装以下Neget

Serilog.AspNetCore
Serilog.Sinks.Grafana.Loki

Program.cs添加Loki配置

using Serilog;
using Serilog.Events;
using Serilog.Sinks.Grafana.Loki;

var builder = WebApplication.CreateBuilder(args);


builder.Services.AddControllers();

builder.Host.UseSerilog((hostingContext, loggerConfiguration) =>
{
    //添加Label
    List<LokiLabel> labels = new List<LokiLabel>();
    labels.Add(new LokiLabel { Key = "App", Value = "testproject" });

    loggerConfiguration
    .Enrich.FromLogContext()
    .WriteTo.Console()
    .WriteTo.Debug()
   //过滤Net Core系统日志
   .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)

   //日志中包含项目信息
   .Enrich.WithProperty("app", hostingContext.HostingEnvironment.ApplicationName)

   //Loki地址配置信息
   .WriteTo.GrafanaLoki("http://192.168.1.5:3100", labels);
});

var app = builder.Build();

app.UseAuthorization();

//添加中间件简化请求日志记录
app.UseSerilogRequestLogging();

app.MapControllers();

app.Run();

控制台写入日志

using Microsoft.AspNetCore.Mvc;

namespace WebApplication1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger) => _logger = logger;

        [HttpGet]
        public string Get()
        {
            _logger.LogInformation("我爱中国");
            _logger.LogInformation(Guid.NewGuid().ToString());
            return Guid.NewGuid().ToString();
        }
    }
}

Grafana添加Loki

Grafana部署参考这篇博客

添加Loki数据源

填入Loki地址然后保存

Explore中选择添加的Loki数据源查询日志

Grafana查询日志

输入{App="testproject"}查询日志

标签:Core,ASP,promtail,Loki,yaml,loki,日志,config
From: https://www.cnblogs.com/RainFate/p/16891917.html

相关文章