Commit Graph

351 Commits

Author SHA1 Message Date
Ryan Nowak 071a49e4da
Merge branch 'master' into merge/release/2.2-to-master 2018-09-24 11:12:00 -07:00
Ryan Nowak 204ff0a785 Set cache headers in health check middleware 2018-09-24 10:43:57 -07:00
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 db826f13ed
Merge pull request #484 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-09-20 12:18:26 -07:00
Ryan Nowak 8fb6c2a50a Allow cancellation to propagate 2018-09-20 11:04:35 -07:00
Ryan Nowak 787283ec2f
Merge branch 'master' into merge/release/2.2-to-master 2018-09-19 18:23:12 -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 bf31749e9f
Merge pull request #475 from dotnet-maestro-bot/merge/release/2.2-to-master
[automated] Merge branch 'release/2.2' => 'master'
2018-08-30 17:06:50 -07:00
Ryan Nowak 525fbf495b Fix #468 - all UseHealthChecks without a path 2018-08-30 15:33:49 -07:00
Ryan Nowak 0001581ffc
Merge branch 'master' into merge/release/2.2-to-master 2018-08-30 11:25:57 -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
Arthur Vickers 6b09fa4e86
Merge pull request #431 from andrewjsaid/dev
Show correct missing key name in NoContextType error message
2018-08-08 10:28:15 -07:00
Ryan Nowak 2c792ce116 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:56:13 -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
Andrew J Said af89bb661a Clarify error message as request in pull request review 2018-07-18 12:24:22 +01:00
Ryan Brandenburg 191d2651fc Set 2.1 baselines 2018-06-14 10:02:33 -07:00
Ajay Bhargav Baaskaran 77200410d6 Updated Razor views 2018-03-22 19:17:31 -07:00
Ryan Brandenburg 424c0b0209 Set 2.0 baselines 2018-03-20 11:50:45 -07:00
Nate McMaster ad1c9d7137
Merge branch 'release/2.1' into dev 2018-03-02 14:02:11 -08:00
Ryan Brandenburg 00b0329059 No more ExperimentalProjectVersionPrefix 2018-02-15 16:00:08 -08:00
Ryan Brandenburg f1e63e0f9e Use ExperimentalPackageVersion 2018-02-15 11:44:08 -08:00
Henk Mollema e353005562 Use correct ArgumentNullException parameter name (#436) 2018-02-05 08:37:23 -08:00
Andrew Peters 0ec3dedc88 Fixes null ref in DatabaseErrorPageMiddleware.
Fix aspnet/Home#2820 - UseDatabaseErrorPage throws NullReferenceException when ef exception occur in background task
Fix aspnet/EntityFrameworkCore#9599 - Insert entity in non existing table throws NullException

Added null checks to async local access in event callback.

Related to aspnet/Home#2825
2018-01-26 10:28:28 -08:00
andrewjsaid b3531b23b8 Show correct missing key name in NoContextType error message 2018-01-09 15:34:07 +01:00
Nate McMaster 7ac0e06abf Pin tool and package versions to make builds more repeatable 2017-10-31 19:37:33 -07:00
Jass Bagga 88db534e42
UseExceptionHandler throws if ExceptionHandlingPath not set (#417) 2017-10-27 15:34:34 -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
Jass Bagga d22bb2c908 Add logger extensions with event ids (#405)
Addresses #393
2017-09-15 14:26:47 -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 23948c5544 Update VersionPrefix 2017-07-26 16:37:40 -07:00
Ryan Brandenburg 81544958b8 DiagnosticSource to 4.4.1 2017-07-03 15:02:01 -07:00
Pranav K ab8cb5e2c9 Preapre for StackTrace.Sources changes 2017-06-22 11:18:56 -07:00
Pranav K 4e044a1e30 Remove usage of TaskCache 2017-06-08 13:45:50 -07:00
Arthur Vickers 4b5d6903ea React to EF change 2017-06-01 09:04:55 -07:00
Andrew Peters 2258eeae39 Database Error Page: Remove ILogger-based interception.
- Made EF calls async
- Removed a slow, repeated DB existence check.
2017-05-30 15:50:19 -07:00
Andrew Peters 1b6993fb91 Database Error Page: Prep for removal of ILogger-based interception.
- Removed EF ApiCheck tests; not required for middleware.
- Removed JB annotations and Check usage; align with other Diagnostics Pages projects.
- Fixed code redundancies.
2017-05-30 12:55:50 -07:00
Arthur Vickers 8e618cb6f4 React to EF namespace change. 2017-05-23 17:39:21 -07:00
Pranav K ec2faf5594 Target netstandard2.0 2017-05-23 15:27:47 -07:00
Arthur Vickers 44610a44ac Update database error page to react to EF logging changes. 2017-05-15 16:19:15 -07:00
Pavel Krymets eedcca1be9 Remove unnecessary package references (#378) 2017-05-10 11:29:57 -07:00
John Luo 8b411493e9 Migration 2017-05-05 19:03:25 -07:00
Pranav K 30306fc4f4 Change TFM to netcoreapp2.0 2017-05-04 22:15:24 -07:00
BrennanConroy 1018f41f15 Missed some obsolete logging calls 2017-05-02 15:23:21 -07:00
BrennanConroy 04dbf42264 React to Logging API changes 2017-04-27 16:22:25 -07:00
Smit Patel 8c2409404d Update API Check related files
React to aspnet/BuildTools#238
2017-04-25 08:18:22 -07:00
Pranav K fb12815786 Remove System.Reflection.Metadata 2017-04-21 18:10:45 -07:00