Elasticsearch,Kibana,dotnet核心和docker

时间:2019-05-15 13:28:19

标签: c# docker elasticsearch asp.net-core .net-core

我已将自己的dotnet核心应用程序设置为使用SeriLog登录到ElasticSearch Sink。当使用ElasticSearchKibana在本地运行dotnet核心应用程序时,我有两个单独的容器,我可以将应用程序中的内容记录到Elastic中,也可以在{{ 1}}。

当我在Kibana文件中包含我的dotnet核心应用程序时,导航到该应用程序所在的端点时,我希望它会将多条消息记录到docker-compose.yml中,但事实并非如此。我怀疑我的应用程序在容器化后不了解如何与Elasticsearch通信。我的Elasticsearch看起来像这样:

版本:“ 3.0”

docker-compose.yml

services: db: image: mysql:5.7 environment: MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_DATABASE: chtr MYSQL_USER: dbuser MYSQL_PASSWORD: dbuserpassword volumes: - dbdata:/var/lib/mysql - ./_MySQL_Init_Script:/docker-entrypoint-initdb.d restart: always elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 container_name: elasticsearch ports: - "9200:9200" volumes: - elasticsearch-data:/usr/share/elasticsearch/data kibana: image: docker.elastic.co/kibana/kibana:6.2.4 container_name: kibana ports: - "5601:5601" depends_on: - elasticsearch chtr.server: depends_on: - db - kibana image: trebias/chtr.server build: context: . ports: - "8080:80" - "56:5601" volumes: dbdata: elasticsearch-data: 是我的图像从Docker集线器中拉出。

在我的dotnet核心应用程序中转到chtr.server

appsettings.json

{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Information", "System": "Information", "Microsoft": "Information" } }, "ElasticConfiguration": { "Uri": "http://[::]:9200/" } } 文件中像这样创建Logger的位置:

Startup.cs

就像我在本文开头所说的那样;当我在容器中运行 var elasticSearch = Configuration["ElasticConfiguration:Uri"]; Log.Logger = new LoggerConfiguration().Enrich.FromLogContext().WriteTo.Elasticsearch(new ElasticsearchSinkOptions( new Uri(elasticSearch)) { AutoRegisterTemplate = true }).CreateLogger(); Kibana并在本地运行我的应用程序时,此方法有效,但是当所有三个应用程序都在容器中时,该方法无效。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

该服务在容器下运行,这就是为什么您应使用以下容器名称来编写日志的原因:

Appsettings.Development.json:

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Information",
      "System": "Information",
      "Microsoft": "Information"
    }
  },
  "ElasticConfiguration": {
    "Uri": "http://elasticsearch:9200/"
  }
}

您可以在此处找到一个完整的示例,该示例演示如何设置Serilog,Seq,elasticsearch和kibana以在Docker容器解决方案下协同工作。

structure logging with serilog seq and elastic search under docker