基於騰訊雲Serverless的HTTP服務探活函式
阿新 • • 發佈:2021-06-12
本文基於 Golang 開發了一款簡單易用的撥測雲函式,入口函式與騰訊雲 Serverless SDK 繫結。與目前騰訊雲中預設的撥測函式不同的是, url-tester-func 支援非 200 響應碼作為預期值且通知機制由郵件變更為了 Telegram Bot 。使用者藉助騰訊雲提供的免費 Serverless 呼叫配額即可搭建一套簡單的 HTTP 介面探活服務。
專案地址
使用
-
首先需要根據騰訊雲文件建立 Serverless 函式的配置檔案, 可參照如下示例配合文件進行配置: serverless.yaml
-
本地安裝 Golang 並構建專案:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
-
程式依賴騰訊雲中的全域性變數配置來獲取目標 URL 集合配置和 Telegram API 配置,在騰訊雲的管理平臺中按如下格式設定即可:
- config: [{"URL": "<目標 URL 1>","ExpectedStatusCode": 200},{"URL": "<目標 URL 2>","ExpectedStatusCode": 403}]
- token: <Telegram 機器人的 API Token ,在建立機器人時 BotFather 會直接以訊息形式返回>
- chatID: <訊息傳送的目標聊天(群),必須已經與 Telegram 機器人繫結,可參照 Telegram 文件從其 updates 介面中獲取>
-
在騰訊雲上新建一個 Serverless 函式,隨後上傳包含
serverless.yaml
和構建後函式的檔案至騰訊雲平臺,建立並啟用定時器觸發器後程序即可正常執行。當目標服務按預期正常響應時程式將在每次執行後返回成功 JSON 結果,否則程式將藉由繫結的 Telegram Bot 傳送如下格式的訊息至目標聊天中,訊息內容將包含撥測失敗的錯誤內容:
Failed to test URL https://foo.foo due to error Get "https://foo.foo": dial tcp: lookup foo.foo on 10.10.10.10:53: read udp 10.10.10.10:5180->10.10.10.10:53: i/o timeout