From 06e07914e17cc1ac97770d8661f08faf286a70d2 Mon Sep 17 00:00:00 2001 From: jmanuelcorral Date: Tue, 19 Mar 2019 15:57:47 +0100 Subject: [PATCH] First version with Kibana/ElasticSearch & Logstash, needs refactor --- docker-compose.elk.yml | 48 +++++++++++++++++++ docker-compose.yml | 35 ++++++++++++++ elk/elasticsearch/Dockerfile | 5 ++ elk/elasticsearch/config/elasticsearch.yml | 16 +++++++ elk/kibana/Dockerfile | 5 ++ elk/kibana/config/kibana.yml | 7 +++ elk/logstash/Dockerfile | 6 +++ elk/logstash/config/logstash.yml | 6 +++ elk/logstash/pipeline/logstash.conf | 22 +++++++++ k8s/helm/deploy-all-istio.ps1 | 1 + k8s/helm/elk/installelk.ps1 | 1 + .../Basket/Basket.API/Basket.API.csproj | 1 + src/Services/Basket/Basket.API/Program.cs | 3 +- .../Basket/Basket.API/appsettings.json | 1 + .../Catalog/Catalog.API/Catalog.API.csproj | 1 + src/Services/Catalog/Catalog.API/Program.cs | 3 +- .../Properties/launchSettings.json | 3 +- .../Catalog/Catalog.API/appsettings.json | 1 + .../Identity/Identity.API/Identity.API.csproj | 1 + src/Services/Identity/Identity.API/Program.cs | 3 +- .../Identity/Identity.API/appsettings.json | 1 + .../Locations.API/Locations.API.csproj | 1 + .../Location/Locations.API/Program.cs | 3 +- .../Location/Locations.API/appsettings.json | 1 + .../Marketing.API/Marketing.API.csproj | 1 + .../Marketing/Marketing.API/Program.cs | 3 +- .../Marketing/Marketing.API/appsettings.json | 1 + .../Ordering/Ordering.API/Ordering.API.csproj | 1 + src/Services/Ordering/Ordering.API/Program.cs | 5 +- .../Ordering/Ordering.API/appsettings.json | 1 + .../Ordering.BackgroundTasks.csproj | 1 + .../Ordering.BackgroundTasks/Program.cs | 3 +- .../Ordering.BackgroundTasks/appsettings.json | 1 + .../Ordering.SignalrHub.csproj | 1 + .../Ordering/Ordering.SignalrHub/Program.cs | 3 +- .../Ordering.SignalrHub/appsettings.json | 1 + .../Payment/Payment.API/Payment.API.csproj | 1 + src/Services/Payment/Payment.API/Program.cs | 3 +- .../Payment/Payment.API/appsettings.json | 1 + src/Web/WebMVC/Program.cs | 5 +- src/Web/WebMVC/WebMVC.csproj | 1 + src/Web/WebMVC/appsettings.json | 1 + src/Web/WebStatus/Program.cs | 5 +- src/Web/WebStatus/WebStatus.csproj | 1 + src/Web/WebStatus/appsettings.json | 4 +- 45 files changed, 203 insertions(+), 16 deletions(-) create mode 100644 docker-compose.elk.yml create mode 100644 elk/elasticsearch/Dockerfile create mode 100644 elk/elasticsearch/config/elasticsearch.yml create mode 100644 elk/kibana/Dockerfile create mode 100644 elk/kibana/config/kibana.yml create mode 100644 elk/logstash/Dockerfile create mode 100644 elk/logstash/config/logstash.yml create mode 100644 elk/logstash/pipeline/logstash.conf create mode 100644 k8s/helm/elk/installelk.ps1 diff --git a/docker-compose.elk.yml b/docker-compose.elk.yml new file mode 100644 index 000000000..a1112b0e2 --- /dev/null +++ b/docker-compose.elk.yml @@ -0,0 +1,48 @@ +version: '3.4' + +services: + + elasticsearch: + build: + context: elk/elasticsearch/ + volumes: + - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro + ports: + - "9200:9200" + - "9300:9300" + environment: + ES_JAVA_OPTS: "-Xmx256m -Xms256m" + networks: + - elk + + logstash: + build: + context: elk/logstash/ + volumes: + - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro + - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro + ports: + - "8080:8080" + environment: + LS_JAVA_OPTS: "-Xmx256m -Xms256m" + networks: + - elk + depends_on: + - elasticsearch + + kibana: + build: + context: elk/kibana/ + volumes: + - ./elk/kibana/config/:/usr/share/kibana/config:ro + ports: + - "5601:5601" + networks: + - elk + depends_on: + - elasticsearch + +networks: + + elk: + driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml index 55d5b10e6..d0cda5b7a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,41 @@ version: '3.4' services: + + elasticsearch: + build: + context: elk/elasticsearch/ + volumes: + - ./elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro + ports: + - "9200:9200" + - "9300:9300" + environment: + ES_JAVA_OPTS: "-Xmx256m -Xms256m" + + logstash: + build: + context: elk/logstash/ + volumes: + - ./elk/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro + - ./elk/logstash/pipeline:/usr/share/logstash/pipeline:ro + ports: + - "8080:8080" + environment: + LS_JAVA_OPTS: "-Xmx256m -Xms256m" + depends_on: + - elasticsearch + + kibana: + build: + context: elk/kibana/ + volumes: + - ./elk/kibana/config/:/usr/share/kibana/config:ro + ports: + - "5601:5601" + depends_on: + - elasticsearch + seq: image: datalust/seq:latest diff --git a/elk/elasticsearch/Dockerfile b/elk/elasticsearch/Dockerfile new file mode 100644 index 000000000..0ad46d887 --- /dev/null +++ b/elk/elasticsearch/Dockerfile @@ -0,0 +1,5 @@ +# https://github.com/elastic/elasticsearch-docker +FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.0.0 + +# Add your elasticsearch plugins setup here +# Example: RUN elasticsearch-plugin install analysis-icu diff --git a/elk/elasticsearch/config/elasticsearch.yml b/elk/elasticsearch/config/elasticsearch.yml new file mode 100644 index 000000000..e97577084 --- /dev/null +++ b/elk/elasticsearch/config/elasticsearch.yml @@ -0,0 +1,16 @@ +--- +## Default Elasticsearch configuration from elasticsearch-docker. +## from https://github.com/elastic/elasticsearch-docker/blob/master/build/elasticsearch/elasticsearch.yml +# +cluster.name: "docker-cluster" +network.host: 0.0.0.0 + +# minimum_master_nodes need to be explicitly set when bound on a public IP +# set to 1 to allow single node clusters +# Details: https://github.com/elastic/elasticsearch/pull/17288 +discovery.zen.minimum_master_nodes: 1 + +## Use single node discovery in order to disable production mode and avoid bootstrap checks +## see https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html +# +discovery.type: single-node diff --git a/elk/kibana/Dockerfile b/elk/kibana/Dockerfile new file mode 100644 index 000000000..1785734aa --- /dev/null +++ b/elk/kibana/Dockerfile @@ -0,0 +1,5 @@ +# https://github.com/elastic/kibana-docker +FROM docker.elastic.co/kibana/kibana-oss:6.0.0 + +# Add your kibana plugins setup here +# Example: RUN kibana-plugin install diff --git a/elk/kibana/config/kibana.yml b/elk/kibana/config/kibana.yml new file mode 100644 index 000000000..4b34a1606 --- /dev/null +++ b/elk/kibana/config/kibana.yml @@ -0,0 +1,7 @@ +--- +## Default Kibana configuration from kibana-docker. +## from https://github.com/elastic/kibana-docker/blob/master/build/kibana/config/kibana.yml +# +server.name: kibana +server.host: "0" +elasticsearch.url: http://elasticsearch:9200 diff --git a/elk/logstash/Dockerfile b/elk/logstash/Dockerfile new file mode 100644 index 000000000..d8bb475a5 --- /dev/null +++ b/elk/logstash/Dockerfile @@ -0,0 +1,6 @@ +# https://github.com/elastic/logstash-docker +FROM docker.elastic.co/logstash/logstash-oss:6.0.0 + +# Add your logstash plugins setup here +# Example: RUN logstash-plugin install logstash-filter-json +RUN logstash-plugin install logstash-input-http \ No newline at end of file diff --git a/elk/logstash/config/logstash.yml b/elk/logstash/config/logstash.yml new file mode 100644 index 000000000..d4f28f778 --- /dev/null +++ b/elk/logstash/config/logstash.yml @@ -0,0 +1,6 @@ +--- +## Default Logstash configuration from logstash-docker. +## from https://github.com/elastic/logstash-docker/blob/master/build/logstash/config/logstash-oss.yml +# +http.host: "0.0.0.0" +path.config: /usr/share/logstash/pipeline \ No newline at end of file diff --git a/elk/logstash/pipeline/logstash.conf b/elk/logstash/pipeline/logstash.conf new file mode 100644 index 000000000..b38a681d7 --- /dev/null +++ b/elk/logstash/pipeline/logstash.conf @@ -0,0 +1,22 @@ +input { + http { + #default host 0.0.0.0:8080 + codec => json + } +} + +## Add your filters / logstash plugins configuration here +filter { + split { + field => "events" + target => "e" + remove_field => "events" + } +} + +output { + elasticsearch { + hosts => "elasticsearch:9200" + index=>"eshops-%{+xxxx.ww}" + } +} diff --git a/k8s/helm/deploy-all-istio.ps1 b/k8s/helm/deploy-all-istio.ps1 index 6ee8a9572..5e05c6dbb 100644 --- a/k8s/helm/deploy-all-istio.ps1 +++ b/k8s/helm/deploy-all-istio.ps1 @@ -57,6 +57,7 @@ kubectl apply -f ./istio/gateway.yml if ($useLocalk8s -eq $true) { $dns="localhost" + $externalDns="localhost" } else { Write-Host "Resolving DNS to Gateway public IP" -ForegroundColor Green diff --git a/k8s/helm/elk/installelk.ps1 b/k8s/helm/elk/installelk.ps1 new file mode 100644 index 000000000..3a77dae59 --- /dev/null +++ b/k8s/helm/elk/installelk.ps1 @@ -0,0 +1 @@ +helm install --name elk stable/elastic-stack --namespace elk \ No newline at end of file diff --git a/src/Services/Basket/Basket.API/Basket.API.csproj b/src/Services/Basket/Basket.API/Basket.API.csproj index 087fdca66..826ac6697 100644 --- a/src/Services/Basket/Basket.API/Basket.API.csproj +++ b/src/Services/Basket/Basket.API/Basket.API.csproj @@ -33,6 +33,7 @@ + diff --git a/src/Services/Basket/Basket.API/Program.cs b/src/Services/Basket/Basket.API/Program.cs index 893a52400..40cc0eebc 100644 --- a/src/Services/Basket/Basket.API/Program.cs +++ b/src/Services/Basket/Basket.API/Program.cs @@ -57,13 +57,14 @@ namespace Microsoft.eShopOnContainers.Services.Basket.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Basket/Basket.API/appsettings.json b/src/Services/Basket/Basket.API/appsettings.json index 33f1c299f..babea8454 100644 --- a/src/Services/Basket/Basket.API/appsettings.json +++ b/src/Services/Basket/Basket.API/appsettings.json @@ -1,6 +1,7 @@ { "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Catalog/Catalog.API/Catalog.API.csproj b/src/Services/Catalog/Catalog.API/Catalog.API.csproj index 983cc291a..4737af7e3 100644 --- a/src/Services/Catalog/Catalog.API/Catalog.API.csproj +++ b/src/Services/Catalog/Catalog.API/Catalog.API.csproj @@ -53,6 +53,7 @@ + diff --git a/src/Services/Catalog/Catalog.API/Program.cs b/src/Services/Catalog/Catalog.API/Program.cs index c75b56c39..39b071c46 100644 --- a/src/Services/Catalog/Catalog.API/Program.cs +++ b/src/Services/Catalog/Catalog.API/Program.cs @@ -71,13 +71,14 @@ namespace Microsoft.eShopOnContainers.Services.Catalog.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Catalog/Catalog.API/Properties/launchSettings.json b/src/Services/Catalog/Catalog.API/Properties/launchSettings.json index 8f2cde4db..3aaed933a 100644 --- a/src/Services/Catalog/Catalog.API/Properties/launchSettings.json +++ b/src/Services/Catalog/Catalog.API/Properties/launchSettings.json @@ -16,7 +16,8 @@ "ConnectionString": "server=localhost,5433;Database=Microsoft.eShopOnContainers.Services.CatalogDb;User Id=sa;Password=Pass@word", "ASPNETCORE_ENVIRONMENT": "Development", "EventBusConnection": "localhost", - "Serilog:SeqServerUrl": "http://locahost:5340" + "Serilog:SeqServerUrl": "http://locahost:5340", + "Serilog:LogstashgUrl":"http://locahost:8080", } }, "Microsoft.eShopOnContainers.Services.Catalog.API": { diff --git a/src/Services/Catalog/Catalog.API/appsettings.json b/src/Services/Catalog/Catalog.API/appsettings.json index b26f63bff..ede3744dc 100644 --- a/src/Services/Catalog/Catalog.API/appsettings.json +++ b/src/Services/Catalog/Catalog.API/appsettings.json @@ -4,6 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Identity/Identity.API/Identity.API.csproj b/src/Services/Identity/Identity.API/Identity.API.csproj index fd5f1474e..43922d948 100644 --- a/src/Services/Identity/Identity.API/Identity.API.csproj +++ b/src/Services/Identity/Identity.API/Identity.API.csproj @@ -34,6 +34,7 @@ + diff --git a/src/Services/Identity/Identity.API/Program.cs b/src/Services/Identity/Identity.API/Program.cs index 8204a1ebf..784f63a1e 100644 --- a/src/Services/Identity/Identity.API/Program.cs +++ b/src/Services/Identity/Identity.API/Program.cs @@ -76,13 +76,14 @@ namespace Microsoft.eShopOnContainers.Services.Identity.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://localhost:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Identity/Identity.API/appsettings.json b/src/Services/Identity/Identity.API/appsettings.json index 74d8e826c..bcb9ce3f7 100644 --- a/src/Services/Identity/Identity.API/appsettings.json +++ b/src/Services/Identity/Identity.API/appsettings.json @@ -7,6 +7,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Location/Locations.API/Locations.API.csproj b/src/Services/Location/Locations.API/Locations.API.csproj index 9784c1f4d..090ee7c1d 100644 --- a/src/Services/Location/Locations.API/Locations.API.csproj +++ b/src/Services/Location/Locations.API/Locations.API.csproj @@ -29,6 +29,7 @@ + diff --git a/src/Services/Location/Locations.API/Program.cs b/src/Services/Location/Locations.API/Program.cs index c13df985f..acadf4a39 100644 --- a/src/Services/Location/Locations.API/Program.cs +++ b/src/Services/Location/Locations.API/Program.cs @@ -54,13 +54,14 @@ namespace Microsoft.eShopOnContainers.Services.Locations.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Location/Locations.API/appsettings.json b/src/Services/Location/Locations.API/appsettings.json index 43fe53873..8cca61af2 100644 --- a/src/Services/Location/Locations.API/appsettings.json +++ b/src/Services/Location/Locations.API/appsettings.json @@ -4,6 +4,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Marketing/Marketing.API/Marketing.API.csproj b/src/Services/Marketing/Marketing.API/Marketing.API.csproj index 373bcb0a6..2c64d84d9 100644 --- a/src/Services/Marketing/Marketing.API/Marketing.API.csproj +++ b/src/Services/Marketing/Marketing.API/Marketing.API.csproj @@ -45,6 +45,7 @@ + diff --git a/src/Services/Marketing/Marketing.API/Program.cs b/src/Services/Marketing/Marketing.API/Program.cs index ae26c9786..4d07e7e0f 100644 --- a/src/Services/Marketing/Marketing.API/Program.cs +++ b/src/Services/Marketing/Marketing.API/Program.cs @@ -66,13 +66,14 @@ private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Marketing/Marketing.API/appsettings.json b/src/Services/Marketing/Marketing.API/appsettings.json index c16978dce..7c015a8ca 100644 --- a/src/Services/Marketing/Marketing.API/appsettings.json +++ b/src/Services/Marketing/Marketing.API/appsettings.json @@ -1,6 +1,7 @@ { "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.API/Ordering.API.csproj b/src/Services/Ordering/Ordering.API/Ordering.API.csproj index b3fa6797e..6342e3585 100644 --- a/src/Services/Ordering/Ordering.API/Ordering.API.csproj +++ b/src/Services/Ordering/Ordering.API/Ordering.API.csproj @@ -52,6 +52,7 @@ + diff --git a/src/Services/Ordering/Ordering.API/Program.cs b/src/Services/Ordering/Ordering.API/Program.cs index 8fc18c8bb..a0b7dc40e 100644 --- a/src/Services/Ordering/Ordering.API/Program.cs +++ b/src/Services/Ordering/Ordering.API/Program.cs @@ -68,16 +68,17 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API .UseSerilog() .Build(); - private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) + private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Ordering/Ordering.API/appsettings.json b/src/Services/Ordering/Ordering.API/appsettings.json index 64b24a354..ea87d5b07 100644 --- a/src/Services/Ordering/Ordering.API/appsettings.json +++ b/src/Services/Ordering/Ordering.API/appsettings.json @@ -4,6 +4,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj index f0fc00b04..4e3b62de5 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Ordering.BackgroundTasks.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs index 8f8cf41e1..7a429742e 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs +++ b/src/Services/Ordering/Ordering.BackgroundTasks/Program.cs @@ -51,13 +51,14 @@ namespace Ordering.BackgroundTasks private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json index 3697c53a5..6f1e21d06 100644 --- a/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json +++ b/src/Services/Ordering/Ordering.BackgroundTasks/appsettings.json @@ -2,6 +2,7 @@ "ConnectionString": "Server=tcp:127.0.0.1,5433;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word;", "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj index a4dd8cc9d..1dae53261 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj +++ b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj @@ -30,6 +30,7 @@ + diff --git a/src/Services/Ordering/Ordering.SignalrHub/Program.cs b/src/Services/Ordering/Ordering.SignalrHub/Program.cs index fdb3f5f3a..76f131caa 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/Program.cs +++ b/src/Services/Ordering/Ordering.SignalrHub/Program.cs @@ -54,13 +54,14 @@ namespace Ordering.SignalrHub private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json index bd752de48..8360223cf 100644 --- a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json +++ b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json @@ -2,6 +2,7 @@ "IdentityUrl": "http://localhost:5105", "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Services/Payment/Payment.API/Payment.API.csproj b/src/Services/Payment/Payment.API/Payment.API.csproj index e912727e8..a62834170 100644 --- a/src/Services/Payment/Payment.API/Payment.API.csproj +++ b/src/Services/Payment/Payment.API/Payment.API.csproj @@ -24,6 +24,7 @@ + diff --git a/src/Services/Payment/Payment.API/Program.cs b/src/Services/Payment/Payment.API/Program.cs index 9b0aded5c..b03bee3da 100644 --- a/src/Services/Payment/Payment.API/Program.cs +++ b/src/Services/Payment/Payment.API/Program.cs @@ -54,13 +54,14 @@ namespace Payment.API private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Services/Payment/Payment.API/appsettings.json b/src/Services/Payment/Payment.API/appsettings.json index bf6157648..d7ec8301d 100644 --- a/src/Services/Payment/Payment.API/appsettings.json +++ b/src/Services/Payment/Payment.API/appsettings.json @@ -1,6 +1,7 @@ { "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebMVC/Program.cs b/src/Web/WebMVC/Program.cs index c329237ce..a80d0514b 100644 --- a/src/Web/WebMVC/Program.cs +++ b/src/Web/WebMVC/Program.cs @@ -49,16 +49,17 @@ namespace Microsoft.eShopOnContainers.WebMVC .UseSerilog() .Build(); - private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) + private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Web/WebMVC/WebMVC.csproj b/src/Web/WebMVC/WebMVC.csproj index 20ddc085b..3bfd9d0c8 100644 --- a/src/Web/WebMVC/WebMVC.csproj +++ b/src/Web/WebMVC/WebMVC.csproj @@ -41,6 +41,7 @@ + diff --git a/src/Web/WebMVC/appsettings.json b/src/Web/WebMVC/appsettings.json index 591964725..077fda891 100644 --- a/src/Web/WebMVC/appsettings.json +++ b/src/Web/WebMVC/appsettings.json @@ -13,6 +13,7 @@ "UseCustomizationData": false, "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { diff --git a/src/Web/WebStatus/Program.cs b/src/Web/WebStatus/Program.cs index d2de3ceae..45e802116 100644 --- a/src/Web/WebStatus/Program.cs +++ b/src/Web/WebStatus/Program.cs @@ -50,16 +50,17 @@ namespace WebStatus .UseSerilog() .Build(); - private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) + private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration) { var seqServerUrl = configuration["Serilog:SeqServerUrl"]; - + var logstashUrl = configuration["Serilog:LogstashgUrl"]; return new LoggerConfiguration() .MinimumLevel.Verbose() .Enrich.WithProperty("ApplicationContext", AppName) .Enrich.FromLogContext() .WriteTo.Console() .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) + .WriteTo.Http(string.IsNullOrWhiteSpace(logstashUrl) ? "http://logstash:8080" : logstashUrl) .ReadFrom.Configuration(configuration) .CreateLogger(); } diff --git a/src/Web/WebStatus/WebStatus.csproj b/src/Web/WebStatus/WebStatus.csproj index e898a3a2e..0cd8328de 100644 --- a/src/Web/WebStatus/WebStatus.csproj +++ b/src/Web/WebStatus/WebStatus.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Web/WebStatus/appsettings.json b/src/Web/WebStatus/appsettings.json index e2aadbc9e..82331d00b 100644 --- a/src/Web/WebStatus/appsettings.json +++ b/src/Web/WebStatus/appsettings.json @@ -72,6 +72,7 @@ ], "Serilog": { "SeqServerUrl": null, + "LogstashgUrl":null, "MinimumLevel": { "Default": "Information", "Override": { @@ -79,7 +80,7 @@ "Microsoft.eShopOnContainers": "Information", "System": "Warning" } - } + }, "Webhooks": [ { "Name": "", @@ -92,3 +93,4 @@ "MinimumSecondsBetweenFailureNotifications": 60 } } +}