У меня установлено основное приложение dotnet для использования SeriLog
, которое регистрируется на ElasticSearch Sink
.При локальном запуске основного приложения dotnet с ElasticSearch
и Kibana
у меня есть два отдельных контейнера, я могу записывать данные из своего приложения в Elastic, и я также могу видеть эти сообщения журнала в Kibana
. * 1006.*
Когда я включаю свое основное приложение 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
- это мое изображение, извлекаемое из моего док-центра.
На appsettings.json
в моем основном приложении dotnet:
{
"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
и Elasticsearch
в контейнерах и мое приложение локально, но не когда все три приложения находятся в контейнерах.
Есть предложения?