gpt4 book ai didi

c# - Elasticsearch、Kibana、dotnet 核心和 docker

转载 作者:行者123 更新时间:2023-12-02 18:19:56 25 4
gpt4 key购买 nike

我将我的 dotnet 核心应用程序设置为使用 SeriLog,它记录到 ElasticSearch Sink。当使用 ElasticSearchKibana 在本地运行我的 dotnet 核心应用程序时,我有两个独立的容器,我可以将我的应用程序中的内容记录到 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 hub 拉取的图像。

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

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

我在 Startup.cs 文件中这样创建记录器的地方:

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

就像我在这篇文章开头所说的;当我在容器中运行 KibanaElasticsearch 并在本地运行我的应用程序时它起作用,但当所有三个应用程序都在容器中时它不起作用。

有什么建议吗?

最佳答案

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

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

关于c# - Elasticsearch、Kibana、dotnet 核心和 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56150579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com