Abp Vnext 搭建 ELK日志记录

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana
安装 Elasticsearch Kibana 的方法我前面文章有写

Abp中加入Logstash

 Serilog.AspNetCore  
 Serilog.Formatting.Elasticsearch  
 Serilog.Sinks.Async 
 Serilog.Sinks.Elasticsearch
 public class Program
{
    public async static Task<int> Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
#if DEBUG
            .MinimumLevel.Debug()
#else
            .MinimumLevel.Information()
#endif
            .Enrich.FromLogContext()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
            .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("Elasticsearch端口"))
             {

                 AutoRegisterTemplate = true,
                 EmitEventFailure = EmitEventFailureHandling.WriteToSelfLog |
                                       EmitEventFailureHandling.WriteToFailureSink |
                                       EmitEventFailureHandling.RaiseCallback,         
                 ModifyConnectionSettings =
                            conn =>
                            {
                                conn.ServerCertificateValidationCallback((source, certificate, chain, sslPolicyErrors) => true);
                                conn.BasicAuthentication("账号", "密码");

                                return conn;
                            }
             })
            .WriteTo.Console()
            .WriteTo.Async(c => c.File($@"{AppContext.BaseDirectory}Log/log.log"))
            .WriteTo.Async(c => c.Console())
            .CreateLogger();
            // 也可以修改默认日志 和控制台打印 

        try
        {
            Log.Information("Starting CloudMgt.HttpApi.Host.");
            var builder = WebApplication.CreateBuilder(args);
            builder.Host.AddAppSettingsSecretsJson()
                .UseAutofac()
                .UseSerilog();
            await builder.AddApplicationAsync<CloudMgtHttpApiHostModule>();
            var app = builder.Build();
            await app.InitializeApplicationAsync();
            await app.RunAsync();
            return 0;
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly!");
            return 1;
        }
        finally
        {
            Log.CloseAndFlush();
        }
    }
}

Kibana 查看日志

kibana新建索引 logstash-*
Abp Vnext 搭建 ELK日志记录_第1张图片
然后点击下一步即可 我这边是已经创建完毕了
查看日志
Abp Vnext 搭建 ELK日志记录_第2张图片
这样咱们就完成ELK 的初步搭建和 后续学习 ES ,因为一个好的架构是采用到合适的技术栈才有用,采用ELK理由
1 在Docker 中部署应用查看起日志起来比较麻烦 因为是多个API 端口会导致排查线上问题很慢
2 ELK也是比较成熟的方案
3 后续需要考虑到的问题 ELK 日志服务需要单独部署出来
4 对于 ES 准备采用独立服务器的模式
学习总结 :追求好的架构的情况下 要保证系统的稳定性和健壮性 这个的考虑是要优先级高于一些所谓高大上技术的,下一步进军WPF。

你可能感兴趣的:(elk,elasticsearch,大数据)