我想要实现的是与其他泊坞窗(elasticsearch和kibana)进行dockerize我的RestApi并在kibana中显示日志输出。但是我得到的是No results found :(
在kibana中。一切正常,没有错误发生。
如果不使用dockerize的RestApi工具,一切也将正常运行,并且日志输出将显示在kibana中。
我做错了什么,希望您能看到它是什么。
对编程还是个新手,真的很想学习。 很快就可以找到解决方案。感谢您的帮助。
到目前为止我所拥有的:
docker-compose.yml
version: '3'
services:
RestApi:
build:
context: C:\foo\RestApi
dockerfile: Dockerfile
image: docker.restapi
container_name: RestApi
links:
- "elasticsearch"
ports:
- "9000:80"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
container_name: elasticsearch
expose:
- "9200"
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:6.2.4
container_name: kibana
links:
- "elasticsearch"
ports:
- "5601:5601"
Dockerfile
FROM microsoft/dotnet:2.0-sdk
COPY pub/ /root/
WORKDIR /root/
ENV ASPNETCORE_URLS="http://*:80"
EXPOSE 80/tcp
ENTRYPOINT ["dotnet", "RestAPI.dll"]
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Information",
"System": "Information",
"Microsoft": "Information"
}
},
"ElasticConfiguration": {
"Uri": "http://localhost:9200/"
},
"Version": "1.0"
}
Startup.cs
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Logging;
using Serilog;
using Serilog.Sinks.Elasticsearch;
using System;
namespace RestAPI
{
public class Startup
{
public Startup(IConfiguration configuration, IHostingEnvironment hostingEnvironment)
{
var configurationBuilder = new ConfigurationBuilder()
.SetBasePath(hostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostingEnvironment.EnvironmentName}.json", reloadOnChange: true, optional: true)
.AddEnvironmentVariables();
Configuration = configurationBuilder.Build();
var elasticUri = Configuration["ElasticConfiguration:Uri"];
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(elasticUri))
{
AutoRegisterTemplate = true,
})
.CreateLogger();
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<AppConfig>(Configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddSerilog();
app.UseMvc();
}
}
}