{"id":13824806,"url":"https://github.com/warden-stack/Warden","last_synced_at":"2025-07-08T19:33:07.894Z","repository":{"id":78964628,"uuid":"53166586","full_name":"warden-stack/Warden","owner":"warden-stack","description":"Define \"health checks\" for your applications, resources and infrastructure. Keep your Warden on the watch.","archived":true,"fork":false,"pushed_at":"2018-02-16T16:45:45.000Z","size":1462,"stargazers_count":614,"open_issues_count":14,"forks_count":66,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-06-08T21:33:57.358Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://getwarden.net","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/warden-stack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2016-03-04T21:27:23.000Z","updated_at":"2025-03-22T14:55:52.000Z","dependencies_parsed_at":null,"dependency_job_id":"ed65bfce-460e-48bb-b8b4-a3fbc954c8b0","html_url":"https://github.com/warden-stack/Warden","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/warden-stack/Warden","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warden-stack%2FWarden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warden-stack%2FWarden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warden-stack%2FWarden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warden-stack%2FWarden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/warden-stack","download_url":"https://codeload.github.com/warden-stack/Warden/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/warden-stack%2FWarden/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264334204,"owners_count":23592380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T09:01:09.696Z","updated_at":"2025-07-08T19:33:07.550Z","avatar_url":"https://github.com/warden-stack.png","language":"C#","readme":"![Warden](http://spetz.github.io/img/warden_logo.png)\n\n#### **OPEN SOURCE \u0026 CROSS-PLATFORM TOOL FOR SIMPLIFIED MONITORING**\n#### **[getwarden.net](http://getwarden.net)**\n\n[![Build status](https://ci.appveyor.com/api/projects/status/47l3ldatuj526tf5/branch/master?svg=true)](https://ci.appveyor.com/project/spetz/Warden/branch/master)\n\n\u003e Define \"health checks\" for your applications, resources and\n\u003e infrastructure. Keep your **Warden** on the watch.\n\n\n**What is Warden?**\n----------------\n\n**Warden** is a simple, **cross-platform** library, built to **solve the problem of monitoring the resources** such as the websites, API, databases, CPU etc. \n\nIt allows to quickly define the **[watchers](https://github.com/spetz/Warden/wiki/watcher)** responsible for performing checks on specific resources and **[integrations](https://github.com/spetz/Warden/wiki/integration)** to easily notify about any issues related to the possible downtime of your system. \n\nEach **[watcher](https://github.com/spetz/Warden/wiki/watcher)** might have its own custom **[interval](https://github.com/warden-stack/Warden/wiki/Interval)**. For example you may want to check e.g. the *API* availability every 500 milliseconds, while the *database* should respond only every 10 seconds and so on. Or you could just set the common one **[interval](https://github.com/warden-stack/Warden/wiki/Interval)** (5 seconds by default) for all of the **[watchers](https://github.com/spetz/Warden/wiki/watcher)**.\n\nOn top of that, you may use all of this information to collect the custom metrics thanks to the **[hooks](https://github.com/spetz/Warden/wiki/Hooks)**.\n\n\n**Roadmap**\n----------------\n\n- [x] Migrate fully to the .NET Core (NET Standard).\n- [x] Move all of the extensions (Wardens and Integrations) into the separate repositiories.\n- [ ] Apply new features.\n\n**What kind of monitoring is available?**\n----------------\n - **[Disk](https://github.com/warden-stack/Warden.Watchers.Disk)**\n - **[MongoDB](https://github.com/warden-stack/Warden.Watchers.MongoDB)**\n - **[MSSQL](https://github.com/warden-stack/Warden.Watchers.MSSQL)**\n - **[Performance](https://github.com/warden-stack/Warden.Watchers.Performance)**\n - **[Process](https://github.com/warden-stack/Warden.Watchers.Process)**\n - **[Redis](https://github.com/warden-stack/Warden.Watchers.Redis)**\n - **[Server](https://github.com/warden-stack/Warden.Watchers.Server)**\n - **[Web](https://github.com/warden-stack/Warden.Watchers.Web)**\n - **[SSL certificates (3rd party)](https://github.com/janpieterz/Warden.Watchers.SSL)**\n - **[Azure Storage (3rd party)](https://github.com/janpieterz/Warden.Watchers.AzureStorage)**\n - **[Azure Service Bus (3rd party)](https://github.com/janpieterz/Warden.Watchers.AzureServiceBus)**\n\n**What are the integrations with external services?**\n----------------\n - **[Cachet](https://github.com/warden-stack/Warden.Integrations.Cachet)**\n - **[HTTP API](https://github.com/warden-stack/Warden.Integrations.HTTP-API)**\n - **[MS SQL](https://github.com/warden-stack/Warden.Integrations.MSSQL)**\n - **[SendGrid](https://github.com/warden-stack/Warden.Integrations.SendGrid)**\n - **[Slack](https://github.com/warden-stack/Warden.Integrations.Slack)**\n - **[SMTP](https://github.com/warden-stack/Warden.Integrations.Smtp)**\n - **[Twilio](https://github.com/warden-stack/Warden.Integrations.Twilio)**\n - **[Seq (3rd party)](https://github.com/janpieterz/Warden.Integrations.Seq)**\n\n**How can I see what's happening with my system?**\n----------------\n\nYou can make use of the **[Web Panel](https://github.com/spetz/Warden/wiki/Web-Panel)** which provides the UI for organizing your monitoring workspace, dashboard with real-time statistics and the storage of the historical data. If you don't want to host it on your own, there's an online version available, running in the Azure cloud at **[panel.getwarden.net](http://panel.getwarden.net)** \n\n**Is there any documentation?**\n----------------\n\nYes, please navigate to the **[wiki](https://github.com/spetz/Warden/wiki)** page where you can find detailed information about configuring and running the **Warden**.\n\n**Installation**\n----------------\n\nAvailable as a **[NuGet package](https://www.nuget.org/packages/Warden/)**. \n```\ndotnet add package Warden\n```\n\n**Watchers** and **Integrations** are available as a separate _NuGet packages_ listed **[here](https://www.nuget.org/packages?q=warden)**.\n\n**Quick start**:\n----------------\n\nConfigure the **[Warden](https://github.com/spetz/Warden/wiki/Warden)** by adding the  **[watchers](https://github.com/spetz/Warden/wiki/Watcher)** and setting up the **[hooks](https://github.com/spetz/Warden/wiki/Hooks)** and **[integrations](https://github.com/spetz/Warden/wiki/Integration)**  to get notified about failures, successful checks, exceptions etc. - use that information e.g. in order to let your system administrator know when something goes wrong or to build your custom metrics.\n```csharp\nvar configuration = WardenConfiguration\n    .Create()\n    .AddWebWatcher(\"http://my-website.com\")\n    .AddMongoDbWatcher(\"mongodb://localhost:27017\", \"MyDatabase\", cfg =\u003e\n    {\n        cfg.WithQuery(\"Users\", \"{\\\"name\\\": \\\"admin\\\"}\")\n           .EnsureThat(users =\u003e users.Any(user =\u003e user.role == \"admin\"));\n    })\n    .IntegrateWithSendGrid(\"api-key\", \"noreply@system.com\", cfg =\u003e\n    {\n        cfg.WithDefaultSubject(\"Monitoring status\")\n           .WithDefaultReceivers(\"admin@system.com\");\n    })\n    .SetGlobalWatcherHooks(hooks =\u003e\n    {\n        hooks.OnStart(check =\u003e GlobalHookOnStart(check))\n             .OnCompleted(result =\u003e GlobalHookOnCompleted(result));\n    })\n    .SetAggregatedWatcherHooks((hooks, integrations) =\u003e\n    {\n        hooks.OnFirstFailureAsync(results =\u003e \n                integrations.SendGrid().SendEmailAsync(\"Monitoring errors have occured.\"))\n             .OnFirstSuccessAsync(results =\u003e \n                integrations.SendGrid().SendEmailAsync(\"Everything is up and running again!\"));\n    })\n    .SetHooks(hooks =\u003e\n    {\n        hooks.OnIterationCompleted(iteration =\u003e OnIterationCompleted(iteration))\n             .OnError(exception =\u003e Logger.Error(exception));\n    })\n    .Build();\n```\n\nStart the **Warden** and let him do his job - now **you have the full control** over your system monitoring!\n```csharp\nvar warden = WardenInstance.Create(configuration);\nawait warden.StartAsync();\n```\nPlease check out the **[examples](https://github.com/spetz/Warden/wiki/Examples)** by cloning the [repository](https://github.com/warden-stack/Warden.Examples).\n\n\n**Contribute**\n----------------\n\nWant to contribute? Please check the **[contribution guidelines](https://github.com/warden-stack/Warden/blob/master/CONTRIBUTING.md)**. ","funding_links":[],"categories":["C# #","Misc","杂项"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwarden-stack%2FWarden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwarden-stack%2FWarden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwarden-stack%2FWarden/lists"}