Commit Graph

130 Commits

Author SHA1 Message Date
Ryan Nowak 18145880fa Improved logging for health checks
- Add logging of description/data
- Add logging for aggregate begin/end
2018-09-24 10:29:23 -07:00
Ryan Nowak 4259b65c16
Use options for registering health checks (#479)
* Use options for registering health checks

This change pivots to use options for registering health checks. We get
a few pretty nice things out of this, and it unblocks some of our
requirements.

Now all registration methods support the application developer
configuring the name, failure-status, and tags for each health check.
This is a requirment, that we weren't really satisfying - which is what
led to this redesign. In support of this health checks now return pass/fail,
and the service is responsible for assigning the status.

----

Health check authors that need configuration data (connection string as
an example) now have three ways to do this depending on their
requirements.
1. Create an instance and register that (easiest)
2. Use Type Activation and pass parameters (middle)
3. Use named options (richest)

We expect most health checks to need/want some kind of configuration -
which 1) works pretty well to solve. However many other health checks
will need DI + configuration. It was also a gap that we didn't have a
good way to use named options, when it's such a good fit for our
scenarios.

Added new registration methods for type activation that allow you to
pass parameters for 2).

Added a context type that allows the running health check access to its
registration for 3).

----

Redesigned and renamed how status gets reported. Health checks return
pass/fail result, but the overall HealthReport includes entries of a
different type. This seems fine because there isn't really a way to
consume a HealthCheckResult directly - the service is the only consumer.

----

Added support for tags. This was easy to add now that we have a separate
registration type, and it's quite handy for building filters (see
sample).

* HARDER BETTER STRONGER FASTER
2018-09-19 14:48:34 -07:00
Ryan Nowak 3e4a3d0b90
Allow health checks to use any DI lifetime (#466)
* Allow health checks to use any DI lifetime

This change allows registered IHealthCheck implementations to use any DI
lifetime. This is necessary for scenarios like using EF which requires a
scope.

The works by having the health check service create a scope for each
time it queries health checks. This scope does not overlap or share
state with other scopes (the request scope) so there is no crosstalk
between processing going on per-request in ASP.NET Core and the health
check operation.

* PR feedback and some logging cleanup
2018-08-30 10:51:48 -07:00
Zhiliang 6cd4cf1a7a Fix typos in samples 2018-08-29 10:12:10 -07:00
martincostello fc7fa4f0f0 Fix sample typo
Fix typo in sample comment.
2018-08-28 15:41:18 -07:00
Ryan Nowak 8ec69456ca
Update CustomWriterStartup.cs
Fix a misleading comment in sample
2018-08-06 16:44:54 -07:00
Ryan Nowak d1cba1f55b Add Database health sample 2018-08-03 15:10:03 -07:00
Ryan Nowak ebafbcdae3 Add filtering by port
This adds UseHealthChecks overloads that configure the health checks
middleware to listen on a preconfigured port.

This is sugar for MapWhen, but it's important because a significant set
of users will want to use Health Checks in this way.
2018-08-03 14:37:27 -07:00
Ryan Nowak 4549b84cb5
Remove JSON output (#457)
* Remove JSON output and convert to sample

GlennC and I made the decisison to turn the JSON output into a sample
rather than something we support out of the box. We wouldn't tell
customers to definitely use it and we don't want to introduce more
coupling to JSON.NET.
2018-08-03 09:40:45 -07:00
Ryan Nowak 64124e9c85 Add filtering to Health Checks middleware
This allows each middleware to be configured with a specific set of
checks (by name). See the comments in the sample for how this is
frequently used.

This is also addresses aspnet/Home#2575 - or at least the part that we
plan to do. We think that any sort of built-in system of metadata or
tags is vast overkill, and doesn't really align with the primary usage
of health checks.

We're providing building blocks, and these can be put together to
build more complicated things like what's described in aspnet/Home#2575.
2018-08-01 19:07:58 -07:00
Ryan Nowak 47f427d5ac Updating Health Checks for 2.2
A bunch of small changes and updates for 2.2 focused at making our main
scenarios more streamlined and focused. Also adds samples for
extensibility we support so far.

A list of changes:

Clearing baselines for these projects. We didn't ship anything in 2.1 so
there should be nothing in the baselines.

--

The middleware now uses Map for path matching. This makes the actual
`HealthCheckMiddleware` more standalone. This will make it easy to use
with Dispatcher/Endpoint Routing in the future.

This also manifests by removing Path from HealthCheckOptions - the path
is an explicit argument to the UseHealthChecks middelware - this
streamlines the design for 3.0.

--

Added extensibility for customizing the status codes (aspnet/Home#2584)

--

Added extensibility for writing the textual output (aspnet/Home#2583)

--

Changed the default output to be `text/plain`. The most common use cases
for health checks don't include a detailed status.

The existing output format is still available as an option.
2018-08-01 18:49:44 -07:00
Ryan Brandenburg 519ca4adb0 Upgrade to netcoreapp22 2018-05-07 16:07:07 -07:00
Pranav K 3b4aaa523b Target netcoreapp2.1 in tests and samples 2017-11-10 19:43:28 -08:00
Nate McMaster 7ac0e06abf Pin tool and package versions to make builds more repeatable 2017-10-31 19:37:33 -07:00
Andrew Stanton-Nurse a30befae0f Add abstractions for Health Checks and a simple middleware and service to run them (#408) 2017-10-18 13:52:06 -07:00
Nate McMaster 479eb49ca9 Use PackageLineup to manage PackageReference versions 2017-08-29 09:41:54 -07:00
Nate McMaster 9634f7fd9c Use Directory.Build.props/targets 2017-08-29 09:30:22 -07:00
Ryan Brandenburg ee2487c207 Remove NETSTandard.Library.NETFramework 2017-07-07 10:23:54 -07:00
Pranav K ec2faf5594 Target netstandard2.0 2017-05-23 15:27:47 -07:00
Pavel Krymets eedcca1be9 Remove unnecessary package references (#378) 2017-05-10 11:29:57 -07:00
Pranav K 30306fc4f4 Change TFM to netcoreapp2.0 2017-05-04 22:15:24 -07:00
BrennanConroy 04dbf42264 React to Logging API changes 2017-04-27 16:22:25 -07:00
Kiran Challa 6ac219c710 updated 2017-03-23 16:25:51 -07:00
Kiran Challa 6f2a0702e3 Converted samples and test projects to run on netcoreapp2.0 2017-03-23 16:25:51 -07:00
Pranav K 237abd0b69 Change compilation targets.
* Remove net451 as a compilation target
* Upgrade to netcoreapp2.0
2017-03-22 13:50:35 -07:00
Nate McMaster e8db0cb43e Unify dependency versions to one file and remove workarounds 2017-03-15 13:25:35 -07:00
Nate McMaster 01d2c102fc Downgrade to stable packages 2017-02-14 21:54:02 -08:00
Nate McMaster 4c5739c852 Upgrade to VS 2017 2017-01-31 10:01:38 -08:00
Pranav K 4b77edfe7a Updating to 4.4 CoreFx packages 2016-12-14 14:47:28 -08:00
Pranav K 32cced78b8 Update dependency versions 2016-11-10 08:41:05 -08:00
Pranav K f4f1902808 Updating versions to 1.2.0-* 2016-11-09 14:17:12 -08:00
Pranav K a3e7481fcb Updating to netcoreapp1.1 2016-10-13 11:13:51 -07:00
Pranav K 9cecbc2cb1 Revert "Updating to netcoreapp1.1"
This reverts commit 65025d41a5.
2016-10-12 16:08:16 -07:00
Pranav K 65025d41a5 Updating to netcoreapp1.1 2016-10-12 13:45:05 -07:00
Pranav K d376a1fa75 Updating partner package versions 2016-09-29 10:52:34 -07:00
Nate McMaster 1a0d4a512d
Update sample usage of EF tools 2016-09-26 13:37:25 -07:00
Nate McMaster 76a8359ba3
React to aspnet/EntityFramework#6288 2016-08-11 16:03:47 -07:00
Doug Bunting 2b5358b394 One build to rule them all
- well, at least VS and command-line builds will share output
- part of aspnet/Coherence-Signed#277
2016-07-06 22:08:02 -07:00
Pranav K a2857238f9 Updating to dev versions 2016-06-16 10:17:44 -07:00
N. Taylor Mullen 6a577da3b2 Remove direct Microsoft.NETCore.Platforms dependency.
- Microsoft.NETCore.App now pulls this package in.

aspnet/Coherence-Signed#344
2016-06-13 15:29:48 -07:00
jacalvar dc1c9412ab Remove unncessary imports 2016-06-08 13:00:29 -07:00
Kiran Challa af19899927 [Fixes #279] Deleted RuntimeInfo middleware, sample and tests 2016-05-16 13:12:40 -07:00
Pranav K 0b393fbc04 Fix build warnings 2016-05-02 13:21:03 -07:00
BrennanConroy 8a74260217 Remove references to UseDefaultHostingConfiguration 2016-04-27 15:06:31 -07:00
Nate McMaster 856326080c
React to EF package renames
https://github.com/aspnet/EntityFramework/pull/5142
2016-04-26 16:45:20 -07:00
BrennanConroy e528d9ef91 Update web.config and add publish tool 2016-04-25 08:42:12 -07:00
Pavel Krymets 09ce98ec41 Bring Microsoft.NETCore.Platforms dependency back 2016-04-18 17:04:24 -07:00
Pavel Krymets 4432018ebe Migrate tests, tools and samples to portable 2016-04-15 09:34:48 -07:00
John Luo dfc2e71d7f Moving web.config and use ANCM 2016-04-11 10:08:14 -07:00
John Luo bb1b2695bf Reacting to Kestrel extensions 2016-03-30 16:37:07 -07:00