ElasticSearch+Kibana+Serilog快速搭建统一的日志中心

文章目录

目录

前言

一、为什么采用ElasticSearch+Kibana+Serilog?

二、搭建步骤

1.引入所需Nuget包

2.在Startup中加入以下代码

3.在appsetting中增加以下配置

3.搭建ElasticSearch+Kibana

4.Kibana的简单使用

总结


 

前言

因目前项目上使用的基于ABP框架的微服务架构,另使用Docker Swarm搭建的整个服务集群,应用服务、集群节点、Docker容器等多服务、多种类型的日志信息,目的是将整个系统的日志汇总,并可统一进行查看、搜索、筛选等。

 

一、为什么采用ElasticSearch+Kibana+Serilog?

1.Serilog是支持直接向ElasticSearch推送日志信息的,使用习惯及添加方式都更比较符合原有的开发习惯及目前已使用的Abp框架

2.ElasticSearch 效率高、搜索快、稳定性高,也是abp.io的示例推荐使用

3.Kibana 可视化日志工具,可支持多种类型、多种形式展示

二、搭建步骤

1.引入所需Nuget包

Serilog

Serilog.Sinks.Elasticsearch

Serilog.Extensions.Logging

2.在Startup中加入以下代码

 在Startup构造函数添加以下代码:


var elasticUri = configuration["ElasticSearch:Url"];
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
    .Enrich.WithProperty("Application", configuration["ElasticSearch:Application"])
    .Enrich.FromLogContext()
    .WriteTo.File("Logs/logs.txt")
    .WriteTo.Elasticsearch(
      new ElasticsearchSinkOptions(new Uri(elasticUri))
           {
              MinimumLogEventLevel = LogEventLevel.Information,
              AutoRegisterTemplate = true,
              //注意:需要与ElasticSearch的版本保持一致
              AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
              IndexFormat = configuration["ElasticSearch:IndexFormat"]
            })
           .CreateLogger();

在Configure方法中添加以下代码:

loggerFactory.AddSerilog();

3.在appsetting中增加以下配置

  "ElasticSearch": {
    "Url": "http://192.168.199.93:9200/",//ElasticSearch服务的地址
    "Application": "EvacuateService",//当前应用的名称
    "IndexFormat": "rungo.evacuate-{0:yyyy.MM}" //索引
  }

3.搭建ElasticSearch+Kibana

采用的是7.13.1版本的ElasticSearch和Kibana,需要注意的是ES和Kibana的版本号需尽量保持一致。建议使用Docker进行搭建,比较方便省事。

创建elasticsearch网络:

docker network create -d overlay elasticsearch

创建ElasticSearch服务:

docker service create --name elk7 --network elasticsearch -e TZ=Asia/Shanghai -e "discovery.type=single-node"  -p 9200:9200 -p 9300:9300 elasticsearch:7.13.1

创建Kibana服务:

docker service create --name kibana --network elasticsearch -e TZ=Asia/Shanghai -e  ELASTICSEARCH_URL=http://192.168.199.93:9200 -e ELASTICSEARCH_HOSTS=http://192.168.199.93:9200 \
-e xpack.reporting.capture.browser.chromium.disableSandbox=true -e elasticsearch.ssl.verificationMode=null --publish 5601:5601 kibana:7.13.1

在创建kibana是可能会遇到有些插件支持的情况,可自行百度禁用即可

4.Kibana的简单使用

搭建成果后访问9200如图所示:

ElasticSearch+Kibana+Serilog快速搭建统一的日志中心

访问5601如图所示:

ElasticSearch+Kibana+Serilog快速搭建统一的日志中心


需先配置需要查找的索引才能有数据可以展示

左侧菜单-Management-Stack Management-Kibana-Index Patterns(注意如果是6.x或是5.x版本会少很多东西,不过都会有Kibana的Index Patterns配置功能,使用方式是一样的)

ElasticSearch+Kibana+Serilog快速搭建统一的日志中心

配置的Index Pattern主要根据之前在应用中的appsetting中的IndexFormat的格式有关,建议连通之后可先将应用跑一下往ES中推一些日志数据,再配置Index Pattern。

ElasticSearch+Kibana+Serilog快速搭建统一的日志中心

字段选择 @timestamp即可

ElasticSearch+Kibana+Serilog快速搭建统一的日志中心

配置完成后到Analytics-Discover中查看信息

ElasticSearch+Kibana+Serilog快速搭建统一的日志中心

有其余要求可自定义,还可以使用Filebeat等其余工具将容器、数据库日志、操作系统日志、监控等信息收集并发送到ES。

 

总结

统一的日志中心针对多服务、多应用、集群等复杂环境的兼容性、可靠性都不错,也值得推荐,对于单体应用或是较为单一的系统就可能不太需要了,可根据具体情况自行选择。

 

 

上一篇:Serilog一条记录被写入文件多次(c# netcore)


下一篇:浅入 ABP系列(3):增加日志组件、依赖注入服务