Elasticsearch,Kibana,dotnet核心和docker

托比亚斯·莫·托斯滕森

我已将自己的dotnet核心应用程序设置为使用SeriLog哪个日志记录到ElasticSearch Sink当在本地运行dotnet core应用程序时ElasticSearchKibana我有两个单独的容器,可以将应用程序中的内容记录到Elastic中,并且还可以在中看到这些日志消息Kibana

当我将dotnet核心应用程序包含在docker-compose.yml文件中时,导航到该应用程序所在的端点,我希望它会将多条消息记录到Elasticsearch,但不会。我怀疑我的应用程序Elasticsearch在被容器化时不理解如何进行通信我的docker-compose.yml样子是这样的:

版本:“ 3.0”

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:

chtr.server 是从我的Docker集线器中拉出我的图像。

appsettings.json我的dotnet核心应用程序中:

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

Startup.cs文件中像这样创建Logger的位置

  var elasticSearch = Configuration["ElasticConfiguration:Uri"];
  Log.Logger = new LoggerConfiguration().Enrich.FromLogContext().WriteTo.Elasticsearch(new ElasticsearchSinkOptions(
                   new Uri(elasticSearch)) { AutoRegisterTemplate = true }).CreateLogger();

就像我在这篇文章开头所说的那样;当我在容器中运行Kibana并且Elasticsearch在本地运行我的应用程序时,它可以工作,但是当所有三个应用程序都在容器中时,它不能运行

有什么建议?

Mselmi Ali |

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

Appsettings.Development.json:

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

您可以在此处找到完整的示例,其中显示了如何设置Serilog,Seq,elasticsearch和kibana以在Docker容器解决方案下一起工作。

在docker下使用serilog seq和弹性搜索进行结构化日志记录

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章