成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

服務一掛就手忙腳亂?教你用 Amazon Lambda 打造 0 成本服務監控!

安全 應用安全
半夜兩點,項目掛了,用戶爆炸,老板狂打電話,而我還在被窩里做著發財夢。等我早上起來,滿群的“為啥服務又掛了”,我只能默默截圖:“xx云服務器昨晚 01:12 服務異常,目前已恢復。”?然后附上一句,不關我的事,別cure我~

半夜兩點,項目掛了,用戶爆炸,老板狂打電話,而我還在被窩里做著發財夢。等我早上起來,滿群的“為啥服務又掛了”,我只能默默截圖:

“xx云服務器昨晚 01:12 服務異常,目前已恢復。” 然后附上一句,不關我的事,別cure我~

當然,以上只是一個故事,但這種事故場景確實是真實存在的。有沒有辦法,不花錢、不中斷、無感知地自動監控服務狀態?當然有!

于是乎,我用 Amazon Lambda + 企業微信機器人,整了個不睡覺的“云保安”,全天候巡邏,一旦服務出事,立馬通知!

你問我為什么選 Amazon Lambda?人家永久免費,你說用不用??,指路鏈接(https://aws.amazon.com/cn/free?trk=1d5b0612-9214-4807-ab63-5a7c55dc9f0f&sc_channel=sm)

我想解決什么問題?

作為一個經常自己折騰項目的程序員,我有一些部署在云端的服務:

  • 有些是副業項目;
  • 有些是 demo / side project;
  • 還有些……已經沒人用了,但我還在維護 ??

我不想 24 小時盯著日志和監控,也不想為了幾個小項目再跑一套復雜的監控系統。

我只想做到一件事:

“如果某個服務掛了,我能第一時間知道。”

所以我想做一個「定時檢測 + 宕機報警」的系統,目標是:

  • 每隔 60 秒 ping 一次目標服務;
  • 服務正常就啥也不干;
  • 服務宕了就通過企業微信發個通知;
  • 全自動、無服務器、0 運維、最好不花錢。

為什么是 Amazon Lambda?

如果你不想部署一臺服務器全天候 ping 接口,那 Amazon Lambda 是你的最佳選擇:

優點

說明

無服務器

不用管部署,寫完代碼直接丟上去

定時觸發

搭配 EventBridge,可輕松設置每分鐘定時任務

免費額度

每月有 100 萬次調用免費額度,且永久免費,用不完,根本用不完

所以,我的方案就是:Amazon Lambda + 企業微信 Webhook,輕輕松松實現“云保安”。

圖片圖片

注冊賬號

先去 亞馬遜云科技官網(https://aws.amazon.com/cn/free?trk=1d5b0612-9214-4807-ab63-5a7c55dc9f0f&sc_channel=sm),點擊右上角注冊賬號,關鍵流程如下:

  • 手機號、賬單信息可以直接用國內資料填寫;
  • 選擇基礎支持計劃(無需額外開支);
  • 注冊完成后等待身份驗證通過,即可開始使用資源。

圖片圖片

系統架構

繼續回到我們的主線任務,來看看整體流程是怎樣的。

[EventBridge](定時每分鐘觸發)
        ↓
[Lambda 函數]
        ↓
向服務發起 HTTP 請求
        ↓
如果狀態碼異常 or 超時
        ↓
POST 報警消息 → 企業微信群
  • 每分鐘巡邏一次(EventBridge 支持最小間隔為 1 分鐘)
  • 如果你想做到 30 秒級別,可以設置兩個定時規則交錯觸發,或者在函數內部循環等待執行(建議設置兩個,可以減少資源占用)。以此類推,你也可以設置更短的觸發頻率。

核心代碼

我這里用的是比較方便的Python,你也可以用 Node.js、Java、Go 來寫這個 Lambda。

import json
import urllib.request
import logging
import time

# 日志配置
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# 配置項
SERVICE_LIST = [
    "https://example.com/api/health",
    "https://another-api.com/status"
]

WEBHOOK_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=your-key"

# 每個服務失敗最多重試幾次
MAX_RETRY = 3
RETRY_INTERVAL_SECONDS = 1# 每次失敗后等待時間(秒)

def lambda_handler(event, context):
    logger.info("開始服務健康檢查")
    alerts = []

    for url in SERVICE_LIST:
        name = get_service_name(url)

        ifnot check_with_retry(url, MAX_RETRY):
            alerts.append(f"服務異常:{name}\n地址:{url}")
        else:
            logger.info(f"[{name}] 服務正常")

    for msg in alerts:
        send_alert(WEBHOOK_URL, msg)
        logger.info("報警信息已發送")

    logger.info("服務健康檢查完成")
    return {
        'statusCode': 200,
        'body': json.dumps('Health check completed.')
    }

def check_with_retry(url, retries_left):
    try:
        with urllib.request.urlopen(url, timeout=3) as response:
            return200 <= response.status < 300
    except Exception as e:
        logger.warning(f"[{url}] 檢查失敗,還剩 {retries_left - 1} 次機會,e:{e}")
        if retries_left > 1:
            time.sleep(RETRY_INTERVAL_SECONDS)
            return check_with_retry(url, retries_left - 1)
        else:
            returnFalse

def send_alert(webhook_url, message):
    payload = {
        "msgtype": "text",
        "text": {"content": message}
    }
    data = json.dumps(payload).encode("utf-8")
    req = urllib.request.Request(
        webhook_url, data=data,
        headers={"Content-Type": "application/json"}
    )
    try:
        with urllib.request.urlopen(req) as res:
            logger.info(f"Webhook 響應狀態:{res.status}")
    except Exception as e:
        logger.error(f"發送報警失敗:{e}")

def get_service_name(url):
    return url.replace("https://", "").replace("http://", "").split("/")[0]


# 方便本地調試
if __name__ == "__main__":
    lambda_handler({}, {})

這段代碼我已經在本地環境調試過了,沒啥問題,但是日志我沒做配置,只會打印waring級別以上的日志:

圖片圖片

部署步驟

  1. 登錄亞馬遜云科技 → 打開 Lambda 控制臺(https://console.aws.amazon.com/lambda)。
  2. 創建一個新的 Lambda 函數,選擇對應的運行環境,我這里是Python。
  3. 把上面代碼貼進去(記得改下配置項),設置超時時間(比如 10 秒)。
  4. 創建一個 Amazon EventBridge 規則,設置為 rate(1 minute)。
  5. 配置發送提醒的 webhook,我這里用的企微機器人,你也可以改成用郵件發送,這個沒啥影響。
  6. 完事!你就等著收報警信息吧!

圖片圖片

算算成本

以每分鐘檢測一次服務為例:

  • 60分鐘 * 24小時 * 31 天 = 44640 次調用
  • Amazon Lambda 免費額度是 100 萬次/月

免費的就足夠了,毫無壓力,甚至你可以把檢測頻率調整到 5 秒一次,那也只需要 89萬多次調用,夠夠的。

最后

這個“Amazon Lambda 監控小助手”部署下來,不花錢,不占資源,不需要維護,關鍵時刻卻能發揮大作用。

副業黨、獨立開發者、輕量項目用戶都挺適用的。建議趕緊動手試一下,把你的服務監控“托付給云”。

責任編輯:武曉燕 來源: 程序員阿軒
相關推薦

2009-11-16 13:11:21

2009-11-16 13:17:20

SRP服務LinuxFTP服務器

2012-01-11 13:40:35

移動應用云服務

2021-02-01 08:41:06

Java考試系統

2023-05-22 10:04:24

2015-07-20 14:15:28

Spring ClouDocker微服務

2021-05-18 14:42:55

PythonMySQL

2019-01-24 09:00:00

PythonAutoML機器學習

2021-01-04 09:55:26

Java移動互聯網

2021-02-04 15:52:46

Java考試系統

2017-09-14 09:09:04

php應用LibreOfficeWord轉HTML

2021-08-24 10:02:21

JavaScript網頁搜索 前端

2022-02-25 09:41:05

python搜索引擎

2024-11-05 16:40:24

JavaScript搜索引擎

2015-03-23 12:33:28

2015-04-22 11:29:45

PythonPython創建瀑布圖

2014-07-22 10:19:19

NeoBundle

2011-06-24 13:58:06

CSS3HTML5

2022-01-17 09:01:23

NodeJS數據服務器Mock

2021-01-05 09:04:20

Javatxt文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线不卡 | 日韩aaaa | 国产一级18片视频 | 伊人久久在线 | 国产午夜一区二区三区 | 伊人国产女 | 九九热在线精品视频 | 自拍偷在线精品自拍偷无码专区 | 美女免费视频网站 | 黄色直接看 | 亚洲自拍网站 | 看逼网站 | 日本福利视频 | 大尺度做爰床戏呻吟舒畅 | 日韩免费精品视频 | 四虎激情 | 日韩一区在线播放 | 黄色一级视频免费看 | 一区二区水蜜桃 | 国产乱淫片视频 | 国模无码大尺度一区二区三区 | 国产乱码一区二区三区 | 国产在线h | 国产中文字幕在线播放 | 国产成人亚洲精品自产在线 | 啪啪小视频| www.日韩在线| 国产精品久久久久久妇女6080 | 欧美一区二区在线视频 | 日韩久久精品 | 97精品国产 | 免费看黄色av | 国产在线毛片 | 午夜视频一区二区三区 | 午夜a级片 | 欧美成人精品欧美一级私黄 | 97av在线视频 | 婷婷久久综合 | 国产日韩欧美 | 亚洲国产片 | 天天干干干 |