add mongo and elastic health check

This commit is contained in:
meysamhadeli 2022-06-17 15:11:43 +04:30
parent 23be453624
commit b626a59fbf
3 changed files with 156 additions and 3 deletions

View File

@ -135,6 +135,11 @@ Run this app in docker using the [docker-compose.yaml](./deployments/docker-comp
```bash
docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d
```
Also we have a seprate docker file for up and running [infrastructure](./deployments/docker-compose/infrastracture.yaml) independently.
```bash
docker-compose -f ./deployments/docker-compose/infrastracture.yaml up -d
```
### Documentation Apis

View File

@ -0,0 +1,141 @@
version: "3.3"
services:
#######################################################
# Rabbitmq
#######################################################
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
restart: unless-stopped
ports:
- 5672:5672
- 15672:15672
networks:
- booking
#######################################################
# SqlServer
#######################################################
db:
container_name: sqldb
image: mcr.microsoft.com/mssql/server:2017-latest
restart: unless-stopped
ports:
- "1433:1433"
environment:
SA_PASSWORD: "@Aa123456"
ACCEPT_EULA: "Y"
networks:
- booking
#######################################################
# Jaeger
#######################################################
jaeger:
image: jaegertracing/all-in-one
container_name: jaeger
restart: unless-stopped
networks:
- booking
ports:
- 5775:5775/udp
- 5778:5778
- 6831:6831/udp
- 6832:6832/udp
- 9411:9411
- 14268:14268
- 16686:16686
#######################################################
# EventStoreDB
#######################################################
eventstore.db:
image: eventstore/eventstore:21.2.0-buster-slim
restart: on-failure
environment:
- EVENTSTORE_CLUSTER_SIZE=1
- EVENTSTORE_RUN_PROJECTIONS=All
- EVENTSTORE_START_STANDARD_PROJECTIONS=true
- EVENTSTORE_EXT_TCP_PORT=1010
- EVENTSTORE_EXT_HTTP_PORT=2113
- EVENTSTORE_INSECURE=true
- EVENTSTORE_ENABLE_EXTERNAL_TCP=true
- EVENTSTORE_ENABLE_ATOM_PUB_OVER_HTTP=true
ports:
- '1010:1113'
- '2113:2113'
networks:
- booking
#######################################################
# Mongo
#######################################################
mongo:
image: mongo
container_name: mongo
restart: unless-stopped
# environment:
# - MONGO_INITDB_ROOT_USERNAME=root
# - MONGO_INITDB_ROOT_PASSWORD=secret
networks:
- booking
ports:
- 27017:27017
volumes:
- mongo:/data/db
#######################################################
# Elastic Search
#######################################################
elasticsearch:
container_name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.9.2
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:
- booking
#######################################################
# Kibana
#######################################################
kibana:
container_name: kibana
image: docker.elastic.co/kibana/kibana:7.9.2
ports:
- 5601:5601
depends_on:
- elasticsearch
environment:
- ELASTICSEARCH_URL=http://localhost:9200
networks:
- booking
networks:
booking:
name: booking
volumes:
db-data:
external: false
mongo:
driver: local
elasticsearch-data:

View File

@ -1,6 +1,9 @@
using BuildingBlocks.EFCore;
using BuildingBlocks.Logging;
using BuildingBlocks.MassTransit;
using BuildingBlocks.Mongo;
using BuildingBlocks.Web;
using DotNetCore.CAP.MongoDB;
using HealthChecks.UI.Client;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
@ -14,18 +17,22 @@ public static class Extensions
{
public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services)
{
var appOptions = services.GetOptions<AppOptions>("AppOptions");
var sqlOptions = services.GetOptions<SqlOptions>("ConnectionStrings");
var rabbitMqOptions = services.GetOptions<RabbitMqOptions>("RabbitMq");
var mongoOptions = services.GetOptions<MongoOptions>("MongoOptions");
var logOptions = services.GetOptions<LogOptions>("LogOptions");
services.AddHealthChecks()
.AddSqlServer(sqlOptions.DefaultConnection)
.AddRabbitMQ(rabbitConnectionString:
$"amqp://{rabbitMqOptions.UserName}:{rabbitMqOptions.Password}@{rabbitMqOptions.HostName}");
.AddMongoDb(mongoOptions.ConnectionString)
.AddRabbitMQ(rabbitConnectionString: $"amqp://{rabbitMqOptions.UserName}:{rabbitMqOptions.Password}@{rabbitMqOptions.HostName}")
.AddElasticsearch(logOptions.ElasticUri);
services.AddHealthChecksUI(setup =>
{
setup.SetEvaluationTimeInSeconds(60); // time in seconds between check
setup.AddHealthCheckEndpoint("Basic Health Check", "/healthz");
setup.AddHealthCheckEndpoint($"Basic Health Check - {appOptions.Name}", "/healthz");
}).AddInMemoryStorage();
return services;