介绍

Loki: like Prometheus, but for logs.

Loki是一个轻量级的日志系统,受到Prometheus项目的启发,由Grafana团队设计和开发,所以在Grafana中是原生支持的,具有可水平扩展,高度可用等特性,通过存储压缩的、非结构化的日志以及仅索引元数据,更加易于操作并且运行成本更低。

github: https://github.com/grafana/loki

组件

  • promtail 是代理,负责收集日志并将其发送给Loki。
  • loki 是主服务器,负责存储日志和处理查询。
  • Grafana 用于查询和显示日志。

安装

官方安装文档:https://grafana.com/docs/loki/latest/installation/

官网支持了几种常见的安装方式,我这里主要使用 Docker Compose 安装。

docker-compose.yaml

version: "3"

networks:
loki: services:
loki:
image: grafana/loki:2.2.1
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki promtail:
image: grafana/promtail:2.2.1
volumes:
- /var/log:/var/log
command: -config.file=/etc/promtail/config.yml
networks:
- loki grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki

执行下边命令,下载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个服务,端口为3100的Grafana,端口为3000的loki服务,还有promtail代理。

接下来,访问 http://localhost:3000 到Grafana的页面,首次登录需要初始化账号和密码,然后找到左边菜单的 Configuration -> Data Sources -> Add Data Source -> Loki,配置数据源,在url里填写loki服务的地址即可,然后保存,然后可以到 Explore 页面,查看数据。

在 .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的日志。

总结

Grafana 原生支持,体验也很好,和其他日志系统ELK相比,具有轻量级,高可用,高效率等特点,是一个非常优秀的日志组件,本文简单尝试使用 Loki 日志系统,更多的介绍和配置请参照官方文档。

https://grafana.com/oss/loki/

最后欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享。

.NET Core 基于 Grafana Loki 日志初体验的更多相关文章

  1. .NET Core 微服务之grpc 初体验(干货)

    Grpc介绍 GitHub: https://github.com/grpc/grpc gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计 ...

  2. java IDE 中安装 lombok plugin 插件,并使用 @Slf4j 注解打印日志初体验

    lombok 插件介绍: IntelliJ IDEA官方插件页面:https://plugins.jetbrains.com/plugin/6317-lombok-plugin 使用lombok之后, ...

  3. .net core 2.1-----Sql Server数据库初体验

    刚开始接触asp.net core,在学习的过程中遇到了一些小问题,在这里记录一下! 在我们项目的开发过程中,肯定会和数据库打交道,所以我尝试了一下用asp.net core链接数据库,并读取表中的数 ...

  4. Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

    Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www ...

  5. Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验

    Net Core平台灵活简单的日志记录框架NLog初体验 前几天分享的"[Net Core集成Exceptionless分布式日志功能以及全局异常过滤][https://www.cnblog ...

  6. 【日志系统】Loki日志监控 - 入门初体验

    使用Grafana+Loki+Promtail入门级部署分布式日志系统(windows环境) 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放 ...

  7. ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

    早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...

  8. Consul在.Net Core中初体验

    Consul在.Net Core中初体验 简介 在阅读本文前我想您应该对微服务架构有一个基本的或者模糊的了解 Consul是一个服务管理软件,它其实有很多组件,包括服务发现配置共享键值对存储等 本文主 ...

  9. ASP.NET Core 6框架揭秘实例演示[01]: 编程初体验

    作为<ASP.NET Core 3框架揭秘>的升级版,<ASP.NET Core 6框架揭秘>提供了很多新的章节,同时对现有的内容进行大量的修改.虽然本书旨在对ASP.NET ...

随机推荐

  1. 对控制器类型“StudentController”的操作“Edit”的当前请求在下列操作方法之间不明确:

    "/"应用程序中的服务器错误. 对控制器类型"StudentController"的操作"Edit"的当前请求在下列操作方法之间不明确:类型 ...

  2. Python3+Pygame实现的射击游戏,很流畅,有音效

    之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...

  3. lms框架即将发布第一个版本了

    lms微服务框架介绍 LMS框架旨在帮助开发者在.net平台下,通过简单的配置和代码即可快速的使用微服务进行开发. LMS通过.net框架的主机托管应用,内部通过dotnetty/SpanNetty实 ...

  4. Android Studio 之 TextView基础

    •引言 在开始本节内容前,先要介绍下几个单位: dp(dip) : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关 一般我们为了支持 ...

  5. Elasticsearch 基础介绍

    # Elasticsearch简介 ## 基础概念 ​ Elasticsearch由Shay banon在2004年进行初步开发,并且在2010年2月发布第一个版本. ​ 此后Shay banon在2 ...

  6. 显示目录下的内容--ls

    ls               显示当前目录下的所有文件或者文件夹,但不包括 . 和 .. ls -a                  显示当前目录下的所有文件或者文件夹 ls -l        ...

  7. react项目运行安装依赖报错:Error: pngquant failed to build, make sure that libpng-dev is installed

    安装报错之后.但是安装libpng-dev.发现找不到.通过多方查找.准备重新安装pngquant.命令如下: npm install --save-dev pngquant安装成功并运行成功

  8. 学习笔记-ionic3 环境配置搭建到打包

    折腾了两周总算理清楚了,参考的链接如下: https://blog.csdn.net/zeternityyt/article/details/79655150  环境配置 https://segmen ...

  9. 201871030140-朱婷婷 实验三 结对项目—《D{0-1}KP 实例数据集算法实验平台》项目报告

    项目 内容 课程班级博客链接 2018级卓越班 这个作业要求链接 实验三 结对项目 我的课程学习目标 1.体验软件项目开发中的两人合作,练习结对编程:2.掌握GitHub协作开发程序的操作方法. 这个 ...

  10. 2020-BUAA-OO-面向对象设计与构造-第四单元总结&课程总结

    咱的OO结束辣! Part1: Unit4 Summary 本单元作业,我主要使用了适配器模式和访问者模式.总体上看,代码量和文件数量有所上升,但配合分包等措施后,文件结构清晰,各部分耦合度均较低.缺 ...