91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

發布時間:2020-08-04 02:05:17 來源:網絡 閱讀:194 作者:阿里系統軟件技術 欄目:云計算

函數計算

阿里云函數計算是一個事件驅動的全托管計算服務。通過函數計算,您無需管理服務器等基礎設施,只需編寫代碼并上傳。函數計算會為您準備好計算資源,以彈性、可靠的方式運行您的代碼,并提供日志查詢,性能監控,報警等功能。借助于函數計算,您可以快速構建任何類型的應用和服務,無需管理和運維。更棒的是,您只需要為代碼實際運行消耗的資源付費,而代碼未運行則不產生費用。

云監控

阿里云云監控為云上用戶提供開箱即用的企業級開放型一站式監控解決方案。涵蓋 IT 設施基礎監控,外網網絡質量撥測監控,基于事件、自定義指標、日志的業務監控。為您全方位提供更高效、更全面、更省錢的監控服務。

云監控提供了豐富事件,并且事件還在不斷豐富中(云產品系統事件監控), 豐富的事件觸發自定義處理的函數,可以實現更加完美的的自動化運維。

專題傳送門 => 函數計算進行自動化運維專題

示例場景

在本文中,重點關注函數計算對 ecs 的重啟事件處理,因為這些 ecs 重啟事件是目前用戶需要很高優先級用戶優先級去響應的;假設之前一臺 ecs 發生因系統錯誤而重啟,用戶可能會緊急起來做一些驗證或者創建快照的處理, 在本示例中,我們對一臺因為系統錯誤實例重啟或者因實例錯誤而重啟的機器進行自動化處理,比如成功重啟后創建快照處理。

ecs 系統事件
函數計算自動化運維實戰 3 -- 事件觸發自動創建快照cdn.com/31eeef9826151824881ec02ea99b81c2962a640c.png">

云產品系統事件監控
函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

操作步驟

  • 創建函數(函數代碼在文末),函數創建可參考函數計算helloworld

    注:記得給函數的service的role設置操作ecs的權限

函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

  • 登錄云監控控制臺, 創建報警規則, 監控的事件為 ecs 因實例錯誤或西戎錯誤重啟開始和結束
    函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

函數計算自動化運維實戰 3 -- 事件觸發自動創建快照
函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

  • mock調試
    函數計算自動化運維實戰 3 -- 事件觸發自動創建快照
    函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

  • 模擬真實的 ecs 事件

  • 請參考演練系統事件處理程序? So Easy~

函數計算自動化運維實戰 3 -- 事件觸發自動創建快照

代碼

# -*- coding: utf-8 -*-
import logging
import json, random, string, time
from aliyunsdkcore import client
from aliyunsdkecs.request.v20140526.DeleteSnapshotRequest import DeleteSnapshotRequest
from aliyunsdkecs.request.v20140526.CreateSnapshotRequest import CreateSnapshotRequest
from aliyunsdkecs.request.v20140526.DescribeDisksRequest import DescribeDisksRequest
from aliyunsdkcore.auth.credentials import StsTokenCredential
LOGGER = logging.getLogger()
clt = None
def handler(event, context):
  creds = context.credentials
  sts_token_credential = StsTokenCredential(creds.access_key_id, creds.access_key_secret, creds.security_token)
  '''
  {
    "product": "ECS",
    "content": {
        "executeFinishTime": "2018-06-08T01:25:37Z",
        "executeStartTime": "2018-06-08T01:23:37Z",
        "ecsInstanceName": "timewarp",
        "eventId": "e-t4nhcpqcu8fqushpn3mm",
        "eventType": "InstanceFailure.Reboot",
        "ecsInstanceId": "i-bp18l0uopocfc98xxxx" 
    },
    "resourceId": "acs:ecs:cn-hangzhou:123456789:instance/i-bp18l0uopocfc98xxxx",
    "level": "CRITICAL",
    "instanceName": "instanceName",
    "status": "Executing",
    "name": "Instance:SystemFailure.Reboot:Executing", 
    "regionId": "cn-hangzhou"
  }
  '''
  evt = json.loads(event)
  content = evt.get("content");
  ecsInstanceId = content.get("ecsInstanceId");
  regionId = evt.get("regionId");
  global clt
  clt = client.AcsClient(region_id=regionId, credential=sts_token_credential)
  name = evt.get("name");
  name = name.lower()
  if name in ['Instance:SystemFailure.Reboot:Executing'.lower(), "Instance:InstanceFailure.Reboot:Executing".lower()]:
    pass
    # do other things

  if name in ['Instance:SystemFailure.Reboot:Executed'.lower(), "Instance:InstanceFailure.Reboot:Executed".lower()]:
    request = DescribeDisksRequest()
    request.add_query_param("RegionId", "cn-shenzhen")
    request.set_InstanceId(ecsInstanceId)
    response = _send_request(request)
    disks = response.get('Disks').get('Disk', [])
    for disk in disks:
      diskId = disk["DiskId"]
      SnapshotId = create_ecs_snap_by_id(diskId)
      LOGGER.info("Create ecs snap sucess, ecs id = %s , disk id = %s ", ecsInstanceId, diskId)

def create_ecs_snap_by_id(disk_id):
    LOGGER.info("Create ecs snap, disk id is %s ", disk_id)
    request = CreateSnapshotRequest()
    request.set_DiskId(disk_id)
    request.set_SnapshotName("reboot_" + ''.join(random.choice(string.ascii_lowercase) for _ in range(6)))
    response = _send_request(request)
    return response.get("SnapshotId")
# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action_with_exception(request)
        LOGGER.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        LOGGER.error(e)

“阿里巴巴云原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術公眾號。”

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德安县| 土默特右旗| 西丰县| 舟曲县| 涿州市| 中卫市| 朝阳区| 班戈县| 犍为县| 新密市| 静海县| 高要市| 大港区| 南漳县| 青海省| 邳州市| 汉川市| 浪卡子县| 镶黄旗| 葵青区| 含山县| 平昌县| 固安县| 卢湾区| 河南省| 双柏县| 福贡县| 静宁县| 新乐市| 六盘水市| 奎屯市| 延边| 阿坝县| 涟源市| 慈溪市| 承德市| 六枝特区| 政和县| 康平县| 中山市| 新绛县|