注意:

使用 Datadog 监视 Oracle Cloud Infrastructure

简介

Oracle Cloud 可观察性和可管理性平台旨在满足我们现有客户的需要。我们了解,他们已经使用流行的第三方可观察性工具实现了运营态势的标准化,我们希望能够与这些工具互操作,以便我们的客户可以继续使用他们与 Oracle Cloud Infrastructure 合作的工具。

在本教程中,我们将介绍如何将日志从 Oracle Cloud Infrastructure 移动到数据狗。数据狗是一种常用的观察工具,提供监视和安全服务来全面了解您的应用。

创建 Datadog API 密钥

  1. 在 Datadog 帐户中,选择集成,然后在 API 下,单击创建 API 密钥。这将生成您的 API 密钥。

    datadog 菜单

    datadog 键

配置要捕获的日志

  1. 在 Oracle Cloud Infrastructure 控制台中,单击“导航”菜单,在日志记录菜单下选择日志组
     

  2. 要创建日志组,请单击创建日志组

    创建日志组
     

  3. 选择区间,添加名称 data_log_group说明

    新日志组
     

  4. 创建日志组后,在左侧菜单中选择日志
     

  5. 单击启用服务日志,填写对话框,然后单击启用日志。在“服务”上选择日志类别

    • 资源:输入将用作资源的日志。
    • 日志名称:输入日志的名称,例如 datadog

    适当填写其余字段。请参阅此示例,其中显示了存储桶名称为 datadog_logs 的 Oracle 对象存储。

    服务日志
     

配置 Oracle 函数以将日志摄取到数据狗

  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. 单击 Generate an Auth Token

    使用验证标记作为密码来登录注册表。

    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.yamlrequirements.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. 定义函数以对日志数据进行语法分析并调用数据狗 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. 使用所需的有效负载调用 Datadog 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. 单击 "Navigation"(导航)菜单,然后选择 Solution and Platform(解决方案和平台)部分。选择日志记录菜单下的服务连接器
     

  2. 单击创建连接器,然后选择源作为日志记录和目标作为函数。
     

  3. 配置源连接上,选择区间名称、日志组 datadog_log_group 和日志 datadog
     

  4. 如果要使用审计日志,请单击 +Another log 按钮,选择区间并为日志组添加 _Audit

    学者

  5. 如果提示创建用于写入函数的策略,请单击创建

现在已设置服务连接器,并且每当服务连接器在日志记录服务中找到日志时,就会触发函数将日志摄取到数据狗。

在 Datadog 中可视化 OCI 审计日志

  1. 在 Datadog 中,单击日志菜单以查看从 OCI 摄取的日志。

    datadog 仪表盘

故障排除

此部分显示如何使用简单的电子邮件警报来监视解决方案的状态。

函数

有关详细信息,请参阅技术文档

为通知服务创建主题和订阅

  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. 选择要监视的连接器,然后单击左侧导航窗格中 resources 下的 metrics 链接

  3. 从要添加预警 e.g 的度量图表中,单击“服务连接器中心错误”,然后单击此查询上的选项和创建预警

  4. 添加名称,在通知上,选择目标服务作为通知服务,选择区间 your_compartment ,然后选择主题作为 my_sch_status

总结

此教程演示了 Oracle Cloud Infrastructure 和 Datadog 客户如何配置低开销且高度可扩展的解决方案,以使用服务连接器中心和函数将日志从 Oracle Cloud Infrastructure Logging 移至数据狗。

致谢

作者 - Igor Aragao de Souza(首席大数据顾问)

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心