Skip to content

Various health checks based on `Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck`

License

Notifications You must be signed in to change notification settings

dailydevops/healthchecks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HealthChecks

GitHub GitHub top language GitHub repo size GitHub Pipeline CI

CodeFactor codecov

What is this repository about?

This is a mono repository for several NuGet packages based on the Microsoft.Extensions.Diagnostics.HealthChecks package. The main goal of this repository is to provide a set of health checks for different services and frameworks, which are fully configurable either via code or configuration.

What is the difference between this repository and the AspNetCore.Diagnostics.HealthChecks repository?

The main difference is that we try to focus on providing packages that are fully configurable via code or configuration. This means that you can configure the health checks in your Program.cs file, or in your appsettings.json file, or in any other configuration provider. While we continue to focus on configurability, we always consider the possibility of performance optimization. In some cases, we provide the same healthcheck for a service with an alternative implementation. For example, we provide a healthcheck for MySql that is based on MySql.Data and one that is based on MySqlConnector. This allows you to choose the implementation that best suits your needs or fits your existing dependencies.

While we continue to focus on configurability, we always consider the possibility of performance optimization.

Method Mean Error StdDev Median Ratio RatioSD Allocated Alloc Ratio
AspNetCore.HealthChecks.SqlServer 722.9 μs 43.67 μs 127.38 μs 704.4 μs baseline 9.7 KB
NetEvolve.HealthChecks.SqlServer 592.6 μs 15.79 μs 43.49 μs 585.7 μs 1.23x faster 0.23x 5.2 KB 1.98x less

In addition, we try to support the latest LTS and STS versions of .NET (.NET Support Policy) as well as the latest preview version of .NET for at least 3 years, but we can't guarantee this. This depends on the support of related NuGet packages and the .NET platform itself. See the Supported .NET Version section for more details.

NuGet packages

The following table lists all currently available NuGet packages. For more details about the packages, please visit the corresponding NuGet page.

Package Name NuGet Link
NetEvolve.HealthChecks
Contains general application HealthChecks.
NuGet Downloads
NetEvolve.HealthChecks.AbstractionsDEPRECATED
Contains abstract implementations for the NetEvolve.HealthChecks.
NuGet Downloads
NetEvolve.HealthChecks.Apache.ActiveMq
Contains HealthChecks for Apache ActiveMq, based on the NuGet package Apache.NMS.ActiveMQ.
NuGet Downloads
NetEvolve.HealthChecks.Apache.Kafka
Contains HealthChecks for Apache Kafka, based on the NuGet package Confluent.Kafka.
NuGet Downloads
NetEvolve.HealthChecks.Apache.Pulsar
Contains HealthChecks for Pulsar, based on the nuget package DotPulsar.
NuGet Downloads
NetEvolve.HealthChecks.ArangoDb
Contains HealthChecks for ArangoDb, based on the nuget package ArangoDBNetStandard.
NuGet Downloads
NetEvolve.HealthChecks.AWS
Contains HealthChecks for various AWS services.
NuGet Downloads
NetEvolve.HealthChecks.AWS.DynamoDB
Contains HealthChecks for AWS DynamoDB.
NuGet Downloads
NetEvolve.HealthChecks.AWS.EC2
Contains HealthChecks for AWS Elastic Compute Cloud (EC2).
NuGet Downloads
NetEvolve.HealthChecks.AWS.S3
Contains HealthChecks for AWS Simple Storage Service (S3).
NuGet Downloads
NetEvolve.HealthChecks.AWS.SNS
Contains HealthChecks for AWS Simple Notification Service (SNS).
NuGet Downloads
NetEvolve.HealthChecks.AWS.SQS
Contains HealthChecks for AWS Simple Queue Service (SQS).
NuGet Downloads
NetEvolve.HealthChecks.Azure
Contains HealthChecks for various Azure services.
NuGet Downloads
NetEvolve.HealthChecks.Azure.ApplicationInsights
Contains HealthChecks for Azure Application Insights.
NuGet Downloads
NetEvolve.HealthChecks.Azure.Blobs
Contains HealthChecks for Azure Blob Storage.
NuGet Downloads
NetEvolve.HealthChecks.Azure.EventHubs
Contains HealthChecks for Azure Event Hubs.
NuGet Downloads
NetEvolve.HealthChecks.Azure.Kusto
Contains HealthChecks for Azure Kusto.
NuGet Downloads
NetEvolve.HealthChecks.Azure.Queues
Contains HealthChecks for Azure Queue Storage.
NuGet Downloads
NetEvolve.HealthChecks.Azure.Search
Contains HealthChecks for Azure AI Search.
NuGet Downloads
NetEvolve.HealthChecks.Azure.ServiceBus
Contains HealthChecks for Azure Service Bus.
NuGet Downloads
NetEvolve.HealthChecks.Azure.Tables
Contains HealthChecks for Azure Table Storage.
NuGet Downloads
NetEvolve.HealthChecks.Cassandra
Contains HealthChecks for Cassandra, based on the nuget package CassandraCSharpDriver.
NuGet Downloads
NetEvolve.HealthChecks.ClickHouse
Contains HealthChecks for ClickHouse, based on the nuget package ClickHouse.Client.
NuGet Downloads
NetEvolve.HealthChecks.CockroachDb
Contains HealthChecks for CockroachDb, based on the nuget package Npgsql.
NuGet Downloads
NetEvolve.HealthChecks.Consul
Contains HealthChecks for HashiCorp Consul, based on the nuget package Consul.
NuGet Downloads
NetEvolve.HealthChecks.Couchbase
Contains HealthChecks for Couchbase, based on the nuget package CouchbaseNetClient.
NuGet Downloads
NetEvolve.HealthChecks.CouchDb
Contains HealthChecks for CouchDb, based on the nuget package MyCouch.
NuGet Downloads
NetEvolve.HealthChecks.Dapr
Contains HealthChecks for Dapr, based on the nuget package Dapr.Client.
NuGet Downloads
NetEvolve.HealthChecks.DB2
Contains HealthChecks for Db2, based on the nuget packages Net.IBM.Data.Db2 (Windows), Net.IBM.Data.Db2-lnx (Linux) and Net.IBM.Data.Db2-osx (OSX).
NuGet Downloads
NetEvolve.HealthChecks.DuckDB
Contains HealthChecks for DuckDB, based on the nuget package DuckDB.NET.Data.
NuGet Downloads
NetEvolve.HealthChecks.Elasticsearch
Contains HealthChecks for Elasticsearch, based on the nuget package Elastic.Clients.Elasticsearch.
NuGet Downloads
NetEvolve.HealthChecks.EventStoreDbDEPRECATED
Contains HealthChecks for EventStoreDb, based on the nuget package EventStore.Client.Grpc.Streams.
NuGet Downloads
NetEvolve.HealthChecks.Firebird
Contains HealthChecks for Firebird, based on the nuget package FirebirdSql.Data.FirebirdClient.
NuGet Downloads
NetEvolve.HealthChecks.Garnet
Contains HealthChecks for Microsoft Garnet, based on the NuGet package Microsoft.Garnet.
NuGet Downloads
NetEvolve.HealthChecks.GCP
Contains HealthChecks for various GCP services.
NuGet Downloads
NetEvolve.HealthChecks.GCP.BigQuery
Contains HealthChecks for Google Cloud Platform BigQuery, based on the nuget package Google.Cloud.BigQuery.V2.
NuGet Downloads
NetEvolve.HealthChecks.GCP.Bigtable
Contains HealthChecks for Google Cloud Platform Bigtable, based on the nuget package Google.Cloud.Bigtable.Admin.V2.
NuGet Downloads
NetEvolve.HealthChecks.GCP.Firestore
Contains HealthChecks for Google Cloud Platform Firestore, based on the nuget package Google.Cloud.Firestore.
NuGet Downloads
NetEvolve.HealthChecks.GCP.PubSub
Contains HealthChecks for Google Cloud Platform Pub/Sub, based on the nuget package Google.Cloud.PubSub.V1.
NuGet Downloads
NetEvolve.HealthChecks.Http
Contains HealthChecks for HTTP endpoints, based on the HttpClient.
NuGet Downloads
NetEvolve.HealthChecks.InfluxDB
Contains HealthChecks for InfluxDB, based on the nuget package InfluxDB.Client.
NuGet Downloads
NetEvolve.HealthChecks.JanusGraph
Contains HealthChecks for JanusGraph, based on the nuget package JanusGraph.Net.
NuGet Downloads
NetEvolve.HealthChecks.Keycloak
Contains HealthChecks for the Keycloak service, based on the nuget package Keycloak.Net.Core.
NuGet Downloads
NetEvolve.HealthChecks.Kubernetes
Contains HealthChecks for Kubernetes, based on the nuget package KubernetesClient.
NuGet Downloads
NetEvolve.HealthChecks.KurrentDb
Contains HealthChecks for KurrentDb, based on the nuget package KurrentDB.Client.
NuGet Downloads
NetEvolve.HealthChecks.LiteDB
Contains HealthChecks for litedb, based on the nuget package LiteDB.
NuGet Downloads
NetEvolve.HealthChecks.MariaDb
Contains HealthChecks for MariaDb, based on the nuget package MySqlConnector.
NuGet Downloads
NetEvolve.HealthChecks.Meilisearch
Contains HealthChecks for Meilisearch, based on the nuget package MeiliSearch.
NuGet Downloads
NetEvolve.HealthChecks.Milvus
Contains HealthChecks for Milvus, based on the nuget package Milvus.Client.
NuGet Downloads
NetEvolve.HealthChecks.Minio
Contains HealthChecks for Minio, based on the nuget package Minio.
NuGet Downloads
NetEvolve.HealthChecks.MongoDb
Contains HealthChecks for MongoDb, based on the nuget package MongoDB.Driver.
NuGet Downloads
NetEvolve.HealthChecks.Mosquitto
Contains HealthChecks for Mosquitto, based on the nuget package MQTTnet.
NuGet Downloads
NetEvolve.HealthChecks.MySql
Contains HealthChecks for MySql, based on the nuget package MySql.Data.
NuGet Downloads
NetEvolve.HealthChecks.MySql.Connector
Contains HealthChecks for MySql, based on the nuget package MySqlConnector.
NuGet Downloads
NetEvolve.HealthChecks.MySql.Devart
Contains HealthChecks for MySql, based on the nuget package Devart.Data.MySql.
NuGet Downloads
NetEvolve.HealthChecks.NATS
Contains HealthChecks for NATS, based on the nuget package NATS.Client.
NuGet Downloads
NetEvolve.HealthChecks.Neo4j
Contains HealthChecks for Neo4j, based on the nuget package Neo4j.Driver.
NuGet Downloads
NetEvolve.HealthChecks.Npgsql
Contains HealthChecks for PostgreSQL, based on the nuget package Npgsql.
NuGet Downloads
NetEvolve.HealthChecks.Npgsql.Devart
Contains HealthChecks for PostgreSQL, based on the nuget package Devart.Data.PostgreSql.
NuGet Downloads
NetEvolve.HealthChecks.Odbc
Contains HealthChecks for ODBC data sources, based on the nuget package System.Data.Odbc.
NuGet Downloads
NetEvolve.HealthChecks.Ollama
Contains HealthChecks for Ollama, based on the NuGet package OllamaSharp.
NuGet Downloads
NetEvolve.HealthChecks.OpenSearch
Contains HealthChecks for OpenSearch, based on the nuget package OpenSearch.Client.
NuGet Downloads
NetEvolve.HealthChecks.Oracle
Contains HealthChecks for Oracle Databases, based on the nuget package Oracle.ManagedDataAccess.Core.
NuGet Downloads
NetEvolve.HealthChecks.Oracle.Devart
Contains HealthChecks for Oracle Databases, based on the nuget package Devart.Data.Oracle.
NuGet Downloads
NetEvolve.HealthChecks.Qdrant
Contains HealthChecks for Qdrant Vector database, based on the nuget package Qdrant.Client.
NuGet Downloads
NetEvolve.HealthChecks.RabbitMQ
Contains HealthChecks for RabbitMQ, based on the nuget package RabbitMQ.Client.
NuGet Downloads
NetEvolve.HealthChecks.RavenDb
Contains HealthChecks for RavenDb, based on the nuget package RavenDB.Client.
NuGet Downloads
NetEvolve.HealthChecks.Redis
Contains HealthChecks for Redis, based on the NuGet package StackExchange.Redis.
NuGet Downloads
NetEvolve.HealthChecks.Redpanda
Contains HealthChecks for Redpanda, based on the NuGet package Confluent.Kafka. This is a temporary measure; if a dedicated Redpanda client is provided in the future, we will use it immediately.
NuGet Downloads
NetEvolve.HealthChecks.SqlEdgeDEPRECATED
Contains HealthChecks for SqlEdge, based on the nuget package Microsoft.Data.SqlClient.
NuGet Downloads
NetEvolve.HealthChecks.SQLite
Contains HealthChecks for SQLite, based on the nuget package Microsoft.Data.Sqlite.
NuGet Downloads
NetEvolve.HealthChecks.SQLite.Devart
Contains HealthChecks for SQLite, based on the nuget package Devart.Data.SQLite.
NuGet Downloads
NetEvolve.HealthChecks.SQLite.Legacy
Contains HealthChecks for SQLite, based on the nuget package System.Data.Sqlite.
NuGet Downloads
NetEvolve.HealthChecks.SqlServer
Contains HealthChecks for Microsoft SqlServer, based on the nuget package Microsoft.Data.SqlClient.
NuGet Downloads
NetEvolve.HealthChecks.SqlServer.Devart
Contains HealthChecks for Microsoft SqlServer, based on the nuget package Devart.Data.SqlServer.
NuGet Downloads
NetEvolve.HealthChecks.SqlServer.Legacy
Contains HealthChecks for Microsoft SqlServer, based on the nuget package System.Data.SqlClient.
NuGet Downloads

Package naming explanation

The package names are based on the following naming schema - NetEvolve.HealthChecks.<ServiceGroup?>.<ServiceName>.<ServiceVersion?>

Explanation of the naming schema:

  • NetEvolve is the name of the organization that maintains this repository.
  • HealthChecks indicates that this package contains health checks for various services.
  • <ServiceGroup?> is an optional part that groups related services together. It helps to categorize the health checks based on the service provider or technology.
  • <ServiceName> is the name of the service for which the health check is provided. It specifies the actual service that the health check is targeting.
  • <ServiceVersion?> is an optional suffix that identifies a specific implementation or version of the client library used to connect to the service. This is useful when there are multiple client libraries available for the same service, each with different implementations or approaches.

ServiceGroup and ServiceName

The ServiceGroup is optional and is used to group related services. For example, all azure platform services are grouped under Azure. The ServiceName is the name of the service for which the health check is provided. For example, SqlServer or MySql.

The following table lists all planned and used groups. We will add more groups maybe in the future, if the demand is there.

  • Apache
  • AWS
  • Azure
  • GCP

ServiceVersion

The ServiceVersion in the package naming schema NetEvolve.HealthChecks.<ServiceGroup?>.<ServiceName>.<ServiceVersion?> refers to an optional suffix that identifies a specific implementation or version of the client library used to connect to the service.

This component is used when:

  1. Multiple Client Libraries: When there are multiple client libraries available for the same service, each with different implementations or approaches.
  2. Legacy vs Modern Implementations: To distinguish between older Legacy and newer implementations of a client library for the same service.

This naming convention allows developers to choose the specific client implementation that best matches their existing dependencies without having to change their application architecture. For example, if your application already uses MySqlConnector, you would choose the corresponding health check package that uses the same client library.

The ServiceVersion is particularly valuable in scenarios where:

  • Different client libraries have varying features, performance characteristics, or compatibility.
  • You need to maintain compatibility with specific versions of a service.

Examples in the Repository:

  1. SQL Server Client Libraries:

    • NetEvolve.HealthChecks.SqlServer - Uses the modern Microsoft.Data.SqlClient
    • NetEvolve.HealthChecks.SqlServer.Legacy - Uses the legacy System.Data.SqlClient
  2. MySQL Client Libraries:

    • NetEvolve.HealthChecks.MySql - Uses the implementation of MySql.Data
    • NetEvolve.HealthChecks.MySql.Connector - Uses the alternative implementation of MySqlConnector
  3. RabbitMQ Client Libraries:

    • NetEvolve.HealthChecks.RabbitMQ - Uses the latest version of RabbitMQ.Client
    • NetEvolve.HealthChecks.RabbitMQ.V6 - Uses the older version of RabbitMQ.Client (version 6.x)

Supported .NET version

We try to support the LTS and STS versions of .NET (.NET Support Policy), as well as the latest preview version of .NET. We will try to support each framework version for at least 3 years, but we can't guarantee it. This depends on the support of related NuGet packages and the .NET platform itself.

.NET Version Supported
.NET Standard ❌ No
.NET 7.0 or earlier versions ❌ No
.NET 8.0 ✅ Yes
.NET 9.0 ✅ Yes
.NET 10.0 ✅ Yes

Why did we choose this approach? Because we want to be able to take advantage of the latest language features of the .NET platform and the performance gains that come with them. We know that not all of our NuGet packages will gain performance from this, but this is our general strategy and nobody knows what the future will bring.

Where can I find more information about the end-of-life (EOL) date for the relevant components?

To get more information about the end-of-life (EOL) date for the relevant components, please visit the website of the creators of the components or try the website endoflife.date.

Why not .NET Standard?

With the .NET Standard Microsoft created a specification for APIs that are intended to be available on all .NET implementations. This was a great idea, but it also has some drawbacks. The main drawback is that the .NET Standard is a specification and not an implementation. This means that the real work is done by .NET implementations, such as .NET 5.0 and later versions. Which is why we decided us against the .NET Standard and for the concrete .NET implementations.

See The future of .NET Standard for more details.

About

Various health checks based on `Microsoft.Extensions.Diagnostics.HealthChecks.IHealthCheck`

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 11