文章目录
目录
一、为什么采用ElasticSearch+Kibana+Serilog?
前言
因目前项目上使用的基于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如图所示:
访问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。
总结
统一的日志中心针对多服务、多应用、集群等复杂环境的兼容性、可靠性都不错,也值得推荐,对于单体应用或是较为单一的系统就可能不太需要了,可根据具体情况自行选择。