文章目录

  • 前言
    • 1.Serilog简介
    • 2.Grafana简介
    • 3.Loki是什么
  • 一、Serilog对接Grafana轻量级日志可视化服务
    • 1.Grafana部署
    • 2.Loki部署
    • 3.promtail部署
    • 4.测试.NET Core写入日志效果
    • 5.测试查询日志
  • 总结

前言

日志功能是几乎所有程序或系统都必备的一个功能。该文章通过使用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 用于查询和显示日志

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

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

1.Grafana部署

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

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

网页页面如下

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

2.Loki部署

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

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

auth_enabled: falseserver:http_listen_port: 3100ingester:lifecycler:address: 127.0.0.1ring:kvstore:store: inmemoryreplication_factor: 1final_sleep: 0schunk_idle_period: 5mchunk_retain_period: 30smax_transfer_retries: 0schema_config:configs:- from: 2022-12-06store: boltdbobject_store: filesystemschema: v11index:prefix: index_period: 168hstorage_config:boltdb:directory: /tmp/loki/indexfilesystem:directory: /tmp/loki/chunkslimits_config:enforce_metric_name: falsereject_old_samples: truereject_old_samples_max_age: 168hchunk_store_config:max_look_back_period: 0stable_manager:retention_deletes_enabled: falseretention_period: 0s

启动Loki服务

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

3.promtail部署

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

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

server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://localhost:3100/loki/api/v1/pushscrape_configs:
- job_name: systemstatic_configs:- targets:- localhostlabels: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": "http://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 https://aka.ms/aspnetcore/swashbucklebuilder.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形式进行查看

也可以做关键字查询

总结

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

【愚公系列】2022年12月 .NET CORE工具案例-PLG轻量级日志可视化服务相关推荐

  1. 【愚公系列】2022年12月 .NET CORE工具案例-滑块验证码和拼图验证功能实现

    文章目录 前言 1.滑块验证码的定义 2.滑块验证码的安全性分析 3.滑块验证码的第三方服务 一.滑动验证码和拼图验证功能实现 1.逻辑分析 2.新建项目 3.配置缓存 4.配置跨域 5.后端源码 6 ...

  2. 【愚公系列】2022年12月 .NET CORE工具案例-多语言离线翻译系统

    文章目录 前言 1.在线翻译 2.离线翻译 一.多语言离线翻译系统 1.开发环境 2.准备离线翻译包 3.准备python代码 4.调试翻译结果 5.Python翻译服务对接到.NET Core 前言 ...

  3. 【愚公系列】2022年12月 .NET CORE工具案例-.NET Core使用QrCodeGenerator进行二维码生成

    文章目录 前言 一..NET Core使用QrCodeGenerator进行二维码生成 1.安装nuget程序包 2.二维码生成 2.1 基本生成 2.2 设置前景和背景颜色 2.3 生成 PNG 格 ...

  4. 【愚公系列】2022年12月 .NET CORE工具案例-性能监控工具WatchDog的使用

    文章目录 前言 一.性能监控工具WatchDog的使用 1.安装包 2.添加引用 3.配置 WatchDog 中间件 4.运行程序 4.1 登录页面 4.2 查看 Http 请求和响应 4.3 查看异 ...

  5. 【愚公系列】2022年12月 .NET CORE工具案例-使用MailKit使用IMAP协议进行邮件读取

    文章目录 前言 1.MailKit简介 2.MailKit功能 3.IMAP协议 一.使用MailKit进行邮件处理 1.安装MailKit程序包 2.读取操作文件代码 前言 1.MailKit简介 ...

  6. 【愚公系列】2022年11月 .NET CORE工具案例-.NET 7中的WebTransport通信

    文章目录 前言 1.技术背景 2.QUIC相关概念 3.HTTP/3.0 一.WebTransport 1.WebTransport概念 2.WebTransport在js中的使用 3.WebTran ...

  7. 【愚公系列】2023年02月 .NET CORE工具案例-Lunar日历转换

    文章目录 前言 一.Lunar日历转换 1.安装包 2.相关代码 3.运行 二.用途 1.年历 2.月历 3.佛历 4.道历 5.上班摸鱼 前言 真正的日历产生,大约在一千一百多年前的唐顺宗永贞元年, ...

  8. 【愚公系列】2023年02月 .NET CORE工具案例-办公文档神器Toxy的使用

    文章目录 前言 一.办公文档神器Toxy的使用 1.安装对应的包 2.Word文档操作 2.1 普通文档解析 2.2 表格文档解析 3.Excel文件操作 4.PDF文档操作 5.图片文件操作 总结 ...

  9. 【愚公系列】2023年01月 .NET CORE工具案例-基于SqlSugar的多库多表融合查询

    文章目录 前言 一.基于SqlSugar的多库多表融合查询 1.安装包 2.订单表 3.添加连接 3.1 初始化添加 3.2 动态添加 4.查询 4.1 子表对主表(一对一)查询 4.2 主表对子表( ...

最新文章

  1. python小游戏系列井字棋,儿时的回忆
  2. truffle详细使用教程
  3. JavaScript基础---语言基础(1)
  4. 【学术相关】李沐:如何把近十页的论文读成半页
  5. HID接口设备-固件要求
  6. Ubuntu 14.04中修复默认启用HDMI后没有声音的问题
  7. php intval0.57100,应用NuSoap构建新型的基于PHP的Web服务
  8. 离散数学计算机专业论文,【计算机专业《离散数学》教学研究】计算机专业离散数学...
  9. 高级操作系统——XV6内存管理
  10. jrtplib的使用
  11. 如何使用win10自带的录屏工具录制视频
  12. MacTeX的使用心得
  13. 计算机课小组主题作业,计算机应用课程小组学习法的实践
  14. 姓氏 (C++)简单贪心
  15. 基于QlExpress实现薪资计算
  16. 大白兔启动盘做好后重做系统
  17. 2016年浙江财经大学信工学院程序设计竞赛题解
  18. qq邮箱发送,mail from address must be same as authorization user
  19. 计算机网络学习9:可靠传输
  20. [goa]golang微服务框架学习(二)-- 代码自动生成

热门文章

  1. 如何看懂设计师给到的设计图?
  2. 如何做一个基于微信求职招聘小程序毕业设计毕设作品
  3. 《Python语言程序设计》——函数习题练习
  4. mysql server nchar_SQL Server NChar数据类型
  5. RSA Conference 2019 APJ宣布创智赢家(R)式创新计划入围者和早期阶段初创公司展览中极具前景的初创公司
  6. vue 穿梭框 组件
  7. 图书管理员计算机知识,图书管理员应具备的素质
  8. ResNeXt网络解析
  9. 关于文件访问无权限,无法枚举容器内对象,访问被拒绝等问题的傻瓜式解决办法,超级简单,小白必看!
  10. r语言degseq2_DESeq2转录组差异表达分析实例