- Notifications
You must be signed in to change notification settings - Fork2
Advanced HealthChecks for ASP.NET Core Applications
License
a-patel/LiteXHealthChecks
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
LiteXHealthChecks is very small yet powerful and high-performance library used to check the status of a component in the application, such as a backend service, database or some internal state.
- SqlServer
- MySql
- PostgreSql
- MariaDB
- MongoDB
- DynamoDB
- CosmosDB
- Amazon S3
- Azure KeyVault
- Azure ServiceBus
- Azure Blob Storage
- Azure Queue Storage
- Redis
- Easy to use
- Very light weight
- Latest SDKs
- .NETStandard 2.0
Choose one kinds of sms provider type that you needs and install it viaNuget.To install LiteXHealthChecks, run the following command in thePackage Manager Console
PM>Install-Package LiteX.HealthChecks.AmazonS3PM>Install-Package LiteX.HealthChecks.AzureKeyVaultPM>Install-Package LiteX.HealthChecks.AzureServiceBusPM>Install-Package LiteX.HealthChecks.AzureStorage.BlobPM>Install-Package LiteX.HealthChecks.AzureStorage.FilePM>Install-Package LiteX.HealthChecks.AzureStorage.QueuePM>Install-Package LiteX.HealthChecks.CosmosDBPM>Install-Package LiteX.HealthChecks.MongoDBPM>Install-Package LiteX.HealthChecks.MySqlPM>Install-Package LiteX.HealthChecks.MariaDBPM>Install-Package LiteX.HealthChecks.PostgreSqlPM>Install-Package LiteX.HealthChecks.DynamoDBPM>Install-Package LiteX.HealthChecks.RedisPM>Install-Package LiteX.HealthChecks.SqlServer
Different types of services have their own way to config.Here are samples that show you how to config.
{"Data":{"ConnectionStrings":{"AzureKeyVault":"--REPLACE WITH YOUR CONNECTION STRING--","AzureServiceBus":"--REPLACE WITH YOUR CONNECTION STRING--","AzureBlobStorage":"--REPLACE WITH YOUR CONNECTION STRING--","AzureFileStorage":"--REPLACE WITH YOUR CONNECTION STRING--","AzureQueueStorage":"--REPLACE WITH YOUR CONNECTION STRING--","CosmosDB":"--REPLACE WITH YOUR CONNECTION STRING--","MongoDB":"--REPLACE WITH YOUR CONNECTION STRING--","MySql":"--REPLACE WITH YOUR CONNECTION STRING--","MariaDB":"--REPLACE WITH YOUR CONNECTION STRING--","PostgreSql":"--REPLACE WITH YOUR CONNECTION STRING--","DynamoDB":"--REPLACE WITH YOUR CONNECTION STRING--","Redis":"--REPLACE WITH YOUR CONNECTION STRING--","SqlServer":"--REPLACE WITH YOUR CONNECTION STRING--"}},"AmazonS3":{"AccessKey":"--REPLACE WITH YOUR AccessKey--","SecretKey":"--REPLACE WITH YOUR SecretKey--","BucketName":"--REPLACE WITH YOUR BucketName--"},"DynamoDB":{"AccessKey":"--REPLACE WITH YOUR AccessKey--","SecretKey":"--REPLACE WITH YOUR SecretKey--",//"RegionEndpoint": "--REPLACE WITH YOUR RegionEndpoint--" // USE 'Amazon.RegionEndpoint.CNNorth1' in configuration code}}
publicclassStartup{publicIConfigurationConfiguration{get;}publicStartup(IConfigurationconfiguration){Configuration=configuration;}publicvoidConfigureServices(IServiceCollectionservices){ #region Amazon S3// 1: Use default configurationservices.AddHealthChecks().AddAmazonS3(options=>{options.AccessKey=Configuration["AmazonS3:AccessKey"];options.SecretKey=Configuration["AmazonS3:SecretKey"];options.BucketName=Configuration["AmazonS3:BucketName"];},name:"amazon-s3");// OR// 2: With all optional configurationservices.AddHealthChecks().AddAmazonS3(options=>{options.AccessKey=Configuration["AmazonS3:AccessKey"];options.SecretKey=Configuration["AmazonS3:SecretKey"];options.BucketName=Configuration["AmazonS3:BucketName"];},name:"amazon-s3",failureStatus:HealthStatus.Degraded,tags:newstring[]{"amazon-s3","aws-s3","s3","amazon-s3"}); #endregion #region Azure KeyVault// 1: Use default configurationservices.AddHealthChecks().AddAzureKeyVault(options=>{options.UseKeyVaultUrl(Configuration["AzureKeyVault:KeyVaultUrl"]).AddSecret("my-secret").UseClientSecrets(Configuration["AzureKeyVault:ClientId"],Configuration["AzureKeyVault:ClientSecret"]);},name:"azure-keyvault");// OR// 2: With all optional configurationservices.AddHealthChecks().AddAzureKeyVault(options=>{options.UseKeyVaultUrl(Configuration["AzureKeyVault:KeyVaultUrl"]).UseClientSecrets("client","secret");},name:"azure-keyvault",failureStatus:HealthStatus.Degraded,tags:newstring[]{"azure","keyvault","key-vault","azure-keyvault"}); #endregion #region Azure ServiceBus// 1: Use default configurationservices.AddHealthChecks().AddAzureServiceBusQueue(Configuration["Data:ConnectionStrings:AzureServiceBus"],"queue1");// OR// 2: With all optional configurationservices.AddHealthChecks().AddAzureServiceBusQueue(connectionString:Configuration["Data:ConnectionStrings:AzureServiceBus"],queueName:"queue1",name:"azure-servicebus-queue",failureStatus:HealthStatus.Degraded,tags:newstring[]{"azure","servicebus","queue","azure-servicebus-queue"});// 1: Use default configurationservices.AddHealthChecks().AddAzureServiceBusTopic(Configuration["Data:ConnectionStrings:AzureServiceBus"],"topic1");// OR// 2: With all optional configurationservices.AddHealthChecks().AddAzureServiceBusTopic(connectionString:Configuration["Data:ConnectionStrings:AzureServiceBus"],topicName:"topic1",name:"azure-servicebus-topic",failureStatus:HealthStatus.Degraded,tags:newstring[]{"azure","servicebus","topic","azure-servicebus-topic"}); #endregion #region Azure Blob Storage// 1: Use default configurationservices.AddHealthChecks().AddAzureBlobStorage(Configuration["Data:ConnectionStrings:AzureBlobStorage"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddAzureBlobStorage(connectionString:Configuration["Data:ConnectionStrings:AzureBlobStorage"],name:"azure-blob-storage",failureStatus:HealthStatus.Degraded,tags:newstring[]{"azure","storage","blob","azure-blob-storage"}); #endregion #region Azure File Storage #endregion #region Azure Queue Storage// 1: Use default configurationservices.AddHealthChecks().AddAzureQueueStorage(Configuration["Data:ConnectionStrings:AzureQueueStorage"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddAzureQueueStorage(connectionString:Configuration["Data:ConnectionStrings:AzureQueueStorage"],name:"azure-queue-storage",failureStatus:HealthStatus.Degraded,tags:newstring[]{"azure","storage","queue","azure-queue-storage"}); #endregion #region CosmosDB// 1: Use default configurationservices.AddHealthChecks().AddCosmosDB(Configuration["Data:ConnectionStrings:CosmosDB"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddCosmosDB(connectionString:Configuration["Data:ConnectionStrings:CosmosDB"],name:"cosmosdb",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","nosql","cosmosdb"}); #endregion #region MongoDB// 1: Use default configurationservices.AddHealthChecks().AddMongoDb(Configuration["Data:ConnectionStrings:MongoDb"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddMongoDb(connectionString:Configuration["Data:ConnectionStrings:MongoDb"],name:"mongodb",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","nosql","mongodb"});// OR// 2: With all optional configurationservices.AddHealthChecks().AddMongoDb(connectionString:Configuration["Data:ConnectionStrings:MongoDb"],databaseName:"config",name:"mongodb",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","nosql","mongodb"}); #endregion #region MySql// 1: Use default configurationservices.AddHealthChecks().AddMySql(Configuration["Data:ConnectionStrings:MySql"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddMySql(connectionString:Configuration["Data:ConnectionStrings:MySql"],name:"mysql",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","sql","mysql"}); #endregion #region MariaDB// 1: Use default configurationservices.AddHealthChecks().AddMariaDB(Configuration["Data:ConnectionStrings:MariaDB"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddMariaDB(connectionString:Configuration["Data:ConnectionStrings:MariaDB"],name:"mariadb",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","sql","mariadb"}); #endregion #region PostgreSql// 1: Use default configurationservices.AddHealthChecks().AddPostgreSql(Configuration["Data:ConnectionStrings:PostgreSql"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddPostgreSql(connectionString:Configuration["Data:ConnectionStrings:PostgreSql"],name:"postgresql",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","sql","postgresql"}); #endregion #region DynamoDB// 1: Use default configurationservices.AddHealthChecks().AddDynamoDB(options=>{options.AccessKey=Configuration["DynamoDB:AccessKey"];options.SecretKey=Configuration["DynamoDB:SecretKey"];options.RegionEndpoint=Amazon.RegionEndpoint.CNNorth1;},name:"dynamodb");// OR// 2: With all optional configurationservices.AddHealthChecks().AddDynamoDB(options=>{options.AccessKey=Configuration["DynamoDB:AccessKey"];options.SecretKey=Configuration["DynamoDB:SecretKey"];options.RegionEndpoint=Amazon.RegionEndpoint.CNNorth1;},name:"dynamodb",failureStatus:HealthStatus.Degraded,tags:newstring[]{"nosql","dynamodb","aws-dynamodb","amazon-dynamodb"}); #endregion #region Redis// 1: Use default configurationservices.AddHealthChecks().AddRedis(Configuration["Data:ConnectionStrings:Redis"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddRedis(connectionString:Configuration["Data:ConnectionStrings:Redis"],name:"redis",failureStatus:HealthStatus.Degraded,tags:newstring[]{"cache","redis","redisserver"}); #endregion #region SqlServer// 1: Use default configurationservices.AddHealthChecks().AddSqlServer(Configuration["Data:ConnectionStrings:SqlServer"]);// OR// 2: With all optional configurationservices.AddHealthChecks().AddSqlServer(connectionString:Configuration["Data:ConnectionStrings:SqlServer"],sqlQuery:"SELECT 1;",name:"sql-server",failureStatus:HealthStatus.Unhealthy,tags:newstring[]{"db","sql","sqlserver"}); #endregion #region All in oneservices.AddHealthChecks().AddSqlServer(connectionString:Configuration["Data:ConnectionStrings:Sample"]).AddCheck<RandomHealthCheck>("random").AddAzureServiceBusQueue("Endpoint=sb://MYBUS.servicebus.windows.net/;SharedAccessKeyName=policy;","que1").AddAzureServiceBusTopic("Endpoint=sb://unaidemo.servicebus.windows.net/;SharedAccessKeyName=olicy;","to1"); #endregionservices.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);}publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv){app.UseHealthChecks("/health");app.UseMvcWithDefaultRoute();}}
- Many health check for other services
- .NET Standard 2.1 support
- .NET 5.0 support
Feel free to request an issue on github if you find bugs or request a new feature. Your valuable feedback is much appreciated to better improve this project. If you find this useful, please give it a star to show your support for this project.
Reach out to me at one of the following places!
- Email ✉️ at
toaashishpatel@gmail.com - NuGet 📦 at
@iamaashishpatel
- Ashish Patel -A-Patel
| Website | Medium | NuGet | GitHub | Microsoft | Tumblr | ||||
|---|---|---|---|---|---|---|---|---|---|
If you find this project useful — or just feeling generous, consider buying me a beer or a coffee. Cheers! 🍻 ☕
| PayPal | BMC | Patreon |
|---|---|---|
![]() | ![]() | ![]() |
This project is licensed under the MIT License - see theLICENSE file for details.
About
Advanced HealthChecks for ASP.NET Core Applications
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.


