備註:

使用 Datadog 監控 Oracle Cloud Infrastructure

簡介

Oracle Cloud 可觀察性與可管理性平台旨在滿足客戶的需求。我們瞭解他們已經使用熱門的第三方可觀測性工具將營運狀況標準化,而且想要與這些工具交互運作,讓客戶可以繼續使用他們投資 Oracle Cloud Infrastructure 的工具。

本教學課程將引導您瞭解如何將日誌從 Oracle Cloud Infrastructure 搬移至 Datadog 。Datadog 是一個常見的可觀測性工具,提供監控和安全性服務,讓您完整檢視應用程式。

建立 Datadog API 金鑰

  1. 在您的 Datadog 帳戶中,選取整合,然後在 API 之下,按一下建立 API 金鑰。這會產生您的 API 金鑰。

    資料對話功能表

    資料對話鍵

設定您要擷取的日誌

  1. 在 Oracle Cloud Infrastructure 主控台中,按一下「導覽」功能表,選取記錄日誌功能表下的日誌群組
     

  2. 若要建立日誌群組,請按一下建立日誌群組

    建立日誌群組
     

  3. 選取您的區間、新增名稱 data_log_group 以及 description

    新日誌群組
     

  4. 建立日誌群組之後,請選取左側功能表中的日誌
     

  5. 按一下啟用服務日誌,填寫對話方塊並按一下啟用日誌。選取服務上的日誌類別

    • 資源:輸入將作為資源使用的日誌。
    • 日誌名稱:輸入日誌的名稱,例如 datadog

    請適當填寫其餘欄位。請參閱此範例,其中顯示 Oracle Object Store 的儲存桶名稱 datadog_logs

    服務日誌
     

設定 Oracle 函數以將日誌擷取至 Datadog

  1. 按一下「導覽」功能表,然後選取解決方案與平台區段。選取開發人員服務功能表下的函數
     

  2. 按一下建立應用程式並輸入名稱,例如 datadog01

    建立應用程式 
     

  3. 建立應用程式之後,請按一下應用程式名稱,然後選取左側功能表中的入門

    oracle 函數  

  4. 啟動 Cloud Shell。  

  5. 請使用區域的相關資訊環境。

    fn list contextfn list context
    fn use context us-phoenix-1
    
  6. 以函數的區間 ID 更新此相關資訊環境。

    fn update context oracle.compartment-id <compartment-id>
    
  7. 以您想要使用的「登錄」位置更新相關資訊環境。

    fn update context registry phx.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
    

    以三位數的區域代碼取代 phx。

  8. 按一下產生認證權杖

    使用認證權杖作為您的密碼以登入「註冊」。

    docker login phx.ocir.io
    

    以三位數的區域代碼取代 phx。

    系統會提示您輸入下列資訊:

    • 使用者名稱:<tenancyname>/<username>
    • 密碼:建立密碼

    注意:如果您使用 Oracle Identity Cloud Service,您的使用者名稱是 <tenancyname>/oracleidentitycloudservice/<username>。

  9. 產生 'hello-world' 樣板函數。

    fn init --runtime python datadog
    

    fn init 指令將產生一個名為 datadog 的資料夾,其中包含 3 個檔案;func.pyfunc.yaml 以及 requirements.txt

    開啟 func.py ,並使用下列程式碼取代檔案的內容:

    1. 匯入必要的 Python 模組,如以下片段所示:

      	  import io
      	  import oci
      	  import re
      	  import os
      	  import json
      	  import sys
      	  import requests
      	  import logging
      	  import time
      	  from fdk import response
      
      
    2. 定義剖析日誌資料以及呼叫 Datadog API 以擷取日誌的函數。

      def handler(ctx, data: io.BytesIO=None):
         try:
           logs = json.loads(data.getvalue())
      

      如需 Oracle Cloud Infrastructure Logging 服務產生之日誌格式的相關資訊,請參閱日誌記錄格式簡介

    3. 從每個日誌項目取得日誌來源、時戳及資料。

      	  if "data" in item:
      	    if type(item.get("data")) is dict:
      		   data = item.get("data", {})
      	    else:
      		   data = item.get("data")
      	  else:
      		data = ""
      
      	  if "source" in item:
      		source = item.get("source")
      	  else:
      		Source = ""
      
      	  if "time" in item:
      		time = item.get("time")
      	  else:
      		time = ""
      
      	  payload = {}
      	  payload.update({"source":source})
      	  payload.update({"time": time})
      	  payload.update({"data":data})
      
      
    4. 建立儲存 Datadog API 端點 URL 和認證權杖的變數。

      	  datadoghost = os.environ['DATADOG_HOST']
      	  datadogtoken = os.environ['DATADOG_TOKEN']
      
      

      注意:設定 func.yaml 中 DATADOG_HOST 和 DATADOG_TOKEN 的值。

    5. 使用所需的有效負載呼叫「資料目錄 API」。

      	  headers = {'Content-type': 'application/json', 'DD-API-KEY': datadogtoken}
      	  x = requests.post(datadoghost, data = json.dumps(payload), headers=headers)
      	  logging.getLogger().info(x.text)
      
        except (Exception, ValueError) as ex:
      	  logging.getLogger().info(str(ex))
      	  return
      
      

    組態部分包含您在步驟 1 中取得的「資料目錄」端點 URL 和權杖表單認證。
    REST 端點為 https://http-intake.logs.datadoghq.com/v1/input ,如需詳細資訊,請參閱 Datadog 文件

    func.yaml

    schema_version: 20180708
    name: datadogapp
    version: 0.0.1
    runtime: python
    entrypoint: /python/bin/fdk /function/func.py handler
    memory: 1024
    timeout: 120
    config:
    	DATADOG_HOST: https://http-intake.logs.datadoghq.com/v1/input
    	DATADOG_TOKEN: ZZZZZzzzzzzzzzz
    
    

    requirements.txt

    fdk
    datetime
    requests
    oci
    
  10. 建立您的應用程式。

    fn create app datadog01 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaxxxxxxxxxxx"]'
    

    變更子網路 OCID 的 subnetIDs。

  11. 部署您的函數。

    fn -v deploy --app datadog
    

建立從日誌記錄讀取日誌並觸發函數的服務連線器

  1. 按一下「瀏覽」功能表,然後選取解決方案與平台區段。選取記錄日誌功能表下的服務連線器
     

  2. 按一下建立連線器,然後選取來源作為「日誌記錄」和「目標作為函數」。
     

  3. 設定來源連線上,選取您的區間名稱、日誌群組 datadog_log_group 以及您的日誌 datadog
     

  4. 若要使用稽核日誌,請按一下 +Another 日誌按鈕,選擇區間並為日誌群組新增 _Audit

    排程

  5. 如果提示您建立寫入 Functions 的原則,請按一下建立

服務連線器現在已設定,將會觸發此功能,每當在日誌記錄服務中尋找日誌時,便會將日誌擷取至 Datadog。

將 Datadog 中的 OCI 稽核日誌視覺化

  1. 在資料目錄中,按一下日誌功能表即可查看從 OCI 擷取的日誌。

    資料記錄儀表板

疑難排解

本節顯示如何使用簡單電子郵件警示來監視解決方案的狀態。

功能

如需詳細資訊,請參閱技術文件

建立通知服務的主題和訂閱

  1. 從左上角的功能表中,選取應用程式整合,然後選取通知

  2. 按一下建立主題,然後建立 my_function_status 名稱的主題

  3. 選擇您的主題,按一下建立訂閱,然後使用下列範例:

    • 協定:電子郵件並使用您的電子郵件新增訂閱
  4. 將會建立「待處理」狀態的訂閱。您將會收到確認電子郵件,必須按一下電子郵件中的連結來確認您的電子郵件地址。

檢查度量並從度量建立警示定義

  1. 從左上角的功能表中,選取開發人員服務,然後選取功能

  2. 選擇要監督的應用程式和函數

  3. 從「測量結果」頁面移至「函數錯誤」圖表,按一下「選項」,然後在此查詢建立警示

  4. 新增名稱,並在通知底下選取目的地服務作為通知服務,選取區間 your_compartment ,然後選取主題作為 my_function_status

服務連線器中心

此區段顯示如何使用簡單電子郵件警示監控服務連線器中心 (SCH) 的狀態。

如需詳細資訊,請參閱技術文件

建立通知服務的主題和訂閱

  1. 從左上角的功能表中,選取應用程式整合,然後選取通知

  2. 按一下建立主題,然後建立 my_sch_status 名稱的主題

  3. 選擇您的主題,按一下建立訂閱,然後使用下列範例:

    • 協定:電子郵件並使用您的電子郵件新增訂閱
  4. 將會建立「待處理」狀態的訂閱。您將會收到確認電子郵件,必須按一下電子郵件中的連結來確認您的電子郵件地址。

檢查度量並從度量建立警示定義

  1. 從左上角的功能表中選取記錄日誌,然後選取服務連線器

  2. 選擇要監督的連線器,然後按一下左側導覽窗格中資源底下的度量連結

  3. 從要新增警示的度量圖表 e.g、「服務連線器中心錯誤」,按一下「選項」,然後在此查詢建立警示

  4. 新增名稱,然後在通知上選取目的地服務作為通知服務,選取 your_compartment 區間,然後選取 主題作為 my_sch_status

結論

本教學課程示範 Oracle Cloud Infrastructure 和 Datadog 客戶如何設定低開銷和高擴展性的解決方案,使用服務連線器中心和函數將日誌從 Oracle Cloud Infrastructure Logging 搬移至 Datadog。

致謝

作者 - Igor Aragao de Souza (主要大數據顧問)

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或是存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,造訪 education.oracle.com/learning-explorer 成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center