.Net 6 WebAPI-ElasticSearch 및 Kibana 소개 -
17687 단어 dotnetelasticsearchapidocker
우리는 이 문장에서 무엇을 토론했다
GitHub에서 원본 코드 링크를 찾을 수 있습니다
https://github.com/mohamadlawand087/Net6-ELK
신축성 검색이란?
Elasticsearch는 분포식, 소스 오픈 검색 및 분석 엔진입니다. Elasticsearch는 대량의 데이터를 신속하고 실시간으로 저장하고 검색하며 분석하며 밀리초 안에 답을 되돌려줍니다.
유연한 검색 활용도
키바나
Kibana는 Elasticsearch 그룹에 모인 로그 데이터를 탐색하고 시각화하며 계기판을 구축할 수 있는 시각화된 인터페이스 도구입니다.
키바나의 핵심 기능은 데이터 조회와 분석이다.또한 Kibana의 시각화 기능은 다른 방식으로 데이터를 시각화할 수 있도록 합니다
키바나가 있으면 빅데이터는 쉽게 이해할 수 있고 동적 계기판을 신속하게 구축하고 공유하여 Elasticsearch 조회의 변화를 실시간으로 나타낼 수 있다.
ElasticSearch를 사용해야 하는 이유
간편한 검색: ElasticSearch에는 Apache Lucene 기반의 내장된 전문 검색 엔진이 있습니다.Lucene은 다른 데이터베이스에 비해 조회가 용이합니다.비기술자라도 흔히 볼 수 있는 조회를 작성할 수 있다.
공짜: 얼마 안 남았어요.기본 기능은 기본적으로 무료입니다.만약에 키바나의 안전과 경보 기능이 필요하다면 키바나의 비즈니스 X-pack 구독을 구매하거나 소스 오픈 대안을 설치할 수 있습니다.
RESTful API: ElasticSearch에는 RESTful API가 있습니다.질의 결과가 JSON 형식으로 반환되므로 결과가 쉽게 처리됩니다.RESTful API를 통해 데이터를 조회하고 삽입하면 모든 프로그래밍 언어를 사용하여 ElasticSearch를 쉽게 처리할 수 있습니다.
큰 뿔 사슴을 사용하는 회사
인코딩 시간
docker 파일을 만듭니다
version: '3.1'
services:
elasticsearch:
container_name: els
image: docker.elastic.co/elasticsearch/elasticsearch:7.16.1
ports:
- 9200:9200
volumes:
- elasticsearch-data:/usr/share/elasticsearch/data
environment:
- xpack.monitoring.enabled=true
- xpack.watcher.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
networks:
- elastic
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:7.16.1
ports:
- 5601:5601
depends_on:
- els
environment:
- ELASTICSEARCH_URL=http://localhost:9200
networks:
- elastic
networks:
elastic:
driver: bridge
volumes:
elasticsearch-data:
명령을 집행하다docker-compose up -d
실행 중인지 확인하려면 다음 URL을 방문하십시오현재 웹 응용 프로그램을 만듭니다
dotnet new webapi --no-https -n DotnetELK
패키지 설치dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Enrichers.Environment
dotnet add package Serilog.Sinks.Debug
dotnet add package Serilog.Sinks.Elasticsearch
dotnet add package Serilog.Exceptions
dotnet restore
응용 프로그램 설정을 업데이트합니다.json{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Information",
"System": "Warning"
}
}
},
"ElasticConfiguration": {
"Uri": "http://localhost:9200"
},
"AllowedHosts": "*"
}
우리는 우리의 프로그램을 업데이트해야 한다.대테러 엘리트using System.Reflection;
using Serilog;
using Serilog.Sinks.Elasticsearch;
var builder = WebApplication.CreateBuilder(args);
ConfigureLogging();
builder.Host.UseSerilog();
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
void ConfigureLogging()
{
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile(
$"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json",
optional: true)
.Build();
Log.Logger = new LoggerConfiguration()
.Enrich.FromLogContext()
.Enrich.WithExceptionDetails()
.WriteTo.Debug()
.WriteTo.Console()
.WriteTo.Elasticsearch(ConfigureElasticSink(configuration, environment))
.Enrich.WithProperty("Environment", environment)
.ReadFrom.Configuration(configuration)
.CreateLogger();
}
ElasticsearchSinkOptions ConfigureElasticSink(IConfigurationRoot configuration, string environment)
{
return new ElasticsearchSinkOptions(new Uri(configuration["ElasticConfiguration:Uri"]))
{
AutoRegisterTemplate = true,
IndexFormat = $"{Assembly.GetExecutingAssembly().GetName().Name.ToLower().Replace(".", "-")}-{environment?.ToLower().Replace(".", "-")}-{DateTime.UtcNow:yyyy-MM}"
};
}
지금 저희가 프로그램을 실행하고 있어요.dotnet run
통합 추가[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
_logger.LogInformation("WeatherForecastController Get - this is a nice message to test the logs", DateTime.UtcNow);
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
현재 우리는 검색 상자에 다음과 같은 내용을 입력해서 그것을 검색할 수 있다message: "WeatherForecastController Get"
이제 컨트롤러 내부에서 오류를 테스트하도록 하겠습니다.try
{
throw new Exception("Testing exceptions - ML");
}
catch (Exception ex)
{
_logger.LogError(ex, "An unknown error occurred on the Index action of the HomeController");
}
Reference
이 문제에 관하여(.Net 6 WebAPI-ElasticSearch 및 Kibana 소개 -), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/moe23/net-6-webapi-intro-to-elasticsearch-kibana-step-by-step-p9l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)