微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.@R_528_4045@ion()
    .MinimumLevel.Override("Microsoft", LogEventLevel.@R_528_4045@ion)
    .Enrich.WithProperty("Application", configuration["ElasticSearch:Application"])
    .Enrich.FromLogContext()
    .Writeto.File("Logs/logs.txt")
    .Writeto.Elasticsearch(
      new ElasticsearchSinkOptions(new Uri(elasticUri))
           {
              MinimumLogEventLevel = LogEventLevel.@R_528_4045@ion,
              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.@R_404[email protected].disableSandBox=true -e elasticsearch.ssl.verificationMode=null --publish 5601:5601 kibana:7.13.1

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

4.Kibana的简单使用

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

访问5601如图所示:


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

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

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

字段选择 @timestamp即可

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

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

 

总结

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

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐