- Published on
ASP.NET Core Health Checks 失敗時使用 Slack 通知
之前有寫過一篇文章 ASP.NET Core MVC - 2.2 Health Checks,怎麼使用 2.2 的新功能 Health Check,現在要來加上 check 失敗時使用 Slack 通知
建立 Slack 的 Incoming Webhooks
先到自己的 Incoming Webhooks APP 頁面,網址是 https://你的slack名.slack.com/apps/A0F7XDUAZ-incoming-webhooks
可以按左邊的 Add Configuration
建立一個新的設定,然後把 WebHook URL 記下來,等一下會使用到
增加 Slack 設定
在原本 HealthChecks 的下面多一個 Webhooks 的設定,詳細的設定內容可以參考官方的範本,在這裡的設定都是以官方的範本為主
Uri
是在前一個步驟拿到的 Webhook URLPayload
是失敗時送給 slack 的訊息RestoredPayload
是回狀態回覆時送給 slack 的訊息
{
"HealthChecks-UI": {
"HealthChecks": [
{
"Name": "Cash Check",
"Uri": "http://localhost:5000/checkui"
}
],
"Webhooks": [
{
"Name": "Slack",
"Uri": "https://hooks.slack.com/services/",
"Payload": "",
"RestoredPayload": ""
}
],
"EvaluationTimeOnSeconds": 10
}
}
Statup 設定
Startup 的設定跟一篇一樣
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddHealthChecksUI()
.AddHealthChecks()
.AddNpgSql(Configuration.GetConnectionString("DefaultConnection"));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseHealthChecks("/checkui", new HealthCheckOptions
{
Predicate = _ => true,
ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
app.UseHealthChecksUI(options =>
{
options.UIPath = "/CashCheck";
});
app.UseMvc();
}
UI 的 Webhooks
如果設定檔沒有寫錯的話,在 UI 的 Webhooks 可以看到剛才寫在設定檔的內容
測試
如果 Check 失敗時就會收到訊息
狀態回復時也會收到訊息