• .net core ELK


    使用ELK做日志记录,配置其实很简单。这里用的docker部署ELK。

    1、部署ELK.

    在dockerhub拉取ELK镜像。

    docker run -d -p 9200:9200 -p 5601:5601 nshou/elasticsearch-kibana

    部署完成后,通过网页测试kibana。比如服务器ip是192.168.1.99。我们访问http://192.168.1.99:5601会出现kibana页面。

    2、.net core 代码。这里不用logstash来记录日志,而是使用serilog来集成日志到ES。具体步骤如下:
    一、新建一个webapi项目,安装nuget包
    <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
    <PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.3" />
    <PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" />
    <PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
    <PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" />
    <PackageReference Include="Serilog.Sinks.Http" Version="4.2.1" />
    <PackageReference Include="Serilog.Sinks.ElasticSearch" Version="8.1.0-alpha0002" />

    二、打开Program.cs文件,添加黑色粗体代码。
     public class Program
        {
            public static void Main(string[] args)
            {
                var configuration = GetConfiguration();
                Log.Logger = CreateSerilogLogger(configuration);
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseStartup<Startup>()
                    .UseSerilog();
    
    
            private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
            {
                var seqServerUrl = configuration["Serilog:SeqServerUrl"];
                var esUrl = configuration["Serilog:EsUrl"];
                return new LoggerConfiguration()
                    .MinimumLevel.Verbose()
                    .MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
                    .MinimumLevel.Override("System", LogEventLevel.Warning)
                    .Enrich.FromLogContext()
                    .WriteTo.Console()
                    .WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(string.IsNullOrWhiteSpace(esUrl) ? "http://logstash:8080" : esUrl))
                    {
                        MinimumLogEventLevel = LogEventLevel.Information,
                        AutoRegisterTemplate = true,
                        IndexFormat = "project-{0:yyyy.MM.dd}"
                    })
                    .CreateLogger();
            }
    
            private static IConfiguration GetConfiguration()
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .AddEnvironmentVariables();
                return builder.Build();
            }
        }
    
    
    
    三、添加配置文件
    appsettings.json配置如下,同样是添加粗体部分的配置。EsUrl是elasticsearch接口url,用来写入日志数据。
    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "Serilog": {
        "SeqServerUrl": "",
        "EsUrl": "http://192.168.2.175:9200"
      },
      "AllowedHosts": "*"
    }
    
    
    
    四、api页面记录日志与普通的日志记录没有变化,如下图

    五、运行代码,访问api,写入日志。

    六、打开kibana,添加索引,查询日志。

     

     创建索引


    索引名字,用前面运行一次后的前缀名字,如果project-*

     后面索然自动生成规则选timestamp

    最终的主界面日志如下,可以看到我们前面在示例接口中记录的日志

  • 相关阅读:
    getRandomInt getRandomString
    git 换行符替换
    Versions maven plugin 修改版本
    spotless-maven-plugin java代码自动格式化mvn spotless:apply -fn
    eclipse.ini
    JVM架构和GC垃圾回收机制
    查看搜狗浏览器记住的密码
    TestGc finalize()
    Storm个人学习总结
    mongo嵌套查询
  • 原文地址:https://www.cnblogs.com/KQNLL/p/11888897.html
Copyright © 2020-2023  润新知