注意:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请用特定于您的云环境的实验室值替换这些值。
使用 Datadog 监视 Oracle Cloud Infrastructure
简介
Oracle Cloud 可观察性和可管理性平台旨在满足我们现有客户的需要。我们了解,他们已经使用流行的第三方可观察性工具实现了运营态势的标准化,我们希望能够与这些工具互操作,以便我们的客户可以继续使用他们与 Oracle Cloud Infrastructure 合作的工具。
在本教程中,我们将介绍如何将日志从 Oracle Cloud Infrastructure 移动到数据狗。数据狗是一种常用的观察工具,提供监视和安全服务来全面了解您的应用。
创建 Datadog API 密钥
-
在 Datadog 帐户中,选择集成,然后在 API 下,单击创建 API 密钥。这将生成您的 API 密钥。
配置要捕获的日志
-
在 Oracle Cloud Infrastructure 控制台中,单击“导航”菜单,在日志记录菜单下选择日志组。
-
要创建日志组,请单击创建日志组。
-
选择区间,添加名称 data_log_group 和说明。
-
创建日志组后,在左侧菜单中选择日志。
-
单击启用服务日志,填写对话框,然后单击启用日志。在“服务”上选择日志类别。
- 资源:输入将用作资源的日志。
- 日志名称:输入日志的名称,例如 datadog 。
适当填写其余字段。请参阅此示例,其中显示了存储桶名称为 datadog_logs 的 Oracle 对象存储。
配置 Oracle 函数以将日志摄取到数据狗
-
单击“导航”菜单,然后选择解决方案和平台部分。在开发人员服务菜单下选择函数。
-
单击创建应用程序并输入名称,例如 datadog01 。
-
创建应用程序后,单击应用程序名称并在左侧菜单中选择入门。
-
启动 Cloud Shell。
-
使用区域的上下文。
fn list contextfn list context fn use context us-phoenix-1
-
使用函数的区间 ID 更新上下文。
fn update context oracle.compartment-id <compartment-id>
-
使用您要使用的注册表的位置更新上下文。
fn update context registry phx.ocir.io/<tenancy_name>/[YOUR-OCIR-REPO]
将 phx 替换为三位数字的区域代码。
-
单击 Generate an Auth Token 。
使用验证标记作为密码来登录注册表。
docker login phx.ocir.io
将 phx 替换为三位数字的区域代码。
系统会提示您提供以下信息:
- 用户名:<tenancyname>/<username>
- 口令:创建口令
注:如果使用的是 Oracle Identity Cloud Service,则用户名为 <tenancyname>/oracleidentitycloudservice/<username>。
-
生成 ‘ hello-world ’样板函数。
fn init --runtime python datadog
fn init 命令将生成一个名为 datadog 的文件夹,其中包含 3 个文件:func.py 、func.yaml 和 requirements.txt 。
打开 func.py 并将该文件的内容替换为以下代码:
-
导入所需的 Python 模块,如以下代码片段中所示:
import io import oci import re import os import json import sys import requests import logging import time from fdk import response
-
定义函数以对日志数据进行语法分析并调用数据狗 API 以摄取日志。
def handler(ctx, data: io.BytesIO=None): try: logs = json.loads(data.getvalue())
有关 Oracle Cloud Infrastructure Logging 服务生成的日志格式的信息,请参阅日志记录格式概览。
-
从每个日志条目获取日志源、时间戳和数据。
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})
-
创建用于存储 Datadog API 端点 URL 和验证令牌的变量。
datadoghost = os.environ['DATADOG_HOST'] datadogtoken = os.environ['DATADOG_TOKEN']
注:在 func.yaml 中设置 DATADOG_HOST 和 DATADOG_TOKEN 的值。
-
使用所需的有效负载调用 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
-
-
创建应用程序。
fn create app datadog01 --annotation oracle.com/oci/subnetIds='["ocid1.subnet.oc1.phx.aaaaxxxxxxxxxxx"]'
更改子网 OCID 的 subnetIDs。
-
部署您的函数。
fn -v deploy --app datadog
创建服务连接器以从日志记录中读取日志并触发函数
-
单击 "Navigation"(导航)菜单,然后选择 Solution and Platform(解决方案和平台)部分。选择日志记录菜单下的服务连接器。
-
单击创建连接器,然后选择源作为日志记录和目标作为函数。
-
在配置源连接上,选择区间名称、日志组 datadog_log_group 和日志 datadog 。
-
如果要使用审计日志,请单击 +Another log 按钮,选择区间并为日志组添加 _Audit 。
-
如果提示创建用于写入函数的策略,请单击创建。
现在已设置服务连接器,并且每当服务连接器在日志记录服务中找到日志时,就会触发函数将日志摄取到数据狗。
在 Datadog 中可视化 OCI 审计日志
-
在 Datadog 中,单击日志菜单以查看从 OCI 摄取的日志。
故障排除
此部分显示如何使用简单的电子邮件警报来监视解决方案的状态。
函数
有关详细信息,请参阅技术文档。
为通知服务创建主题和订阅
-
从左上角的菜单中,选择应用程序集成,然后选择通知
-
单击创建主题并使用 my_function_status 名称创建主题
-
选择主题,单击创建订阅并使用以下示例:
- 协议:使用电子邮件发送电子邮件并添加创建订阅
-
将以“待定”状态创建订阅。您将收到一封确认邮件,并需要点击邮件中的链接来确认您的电子邮件地址。
检查指标并根据指标创建预警定义
-
从左上角的菜单中,选择开发人员服务,然后选择函数
-
选择要监视的应用程序和函数
-
在“度量”页中,转到“函数错误”图表,单击“选项”并在此查询上创建预警
-
添加名称,在通知下选择目标服务作为通知服务,选择区间 your_compartment ,然后选择主题作为 my_function_status
服务连接器中心
此部分显示如何使用简单的电子邮件警报监视服务连接器中心 (SCH) 的状态。
有关详细信息,请参阅技术文档。
为通知服务创建主题和订阅
-
从左上角的菜单中,选择应用程序集成,然后选择通知
-
单击创建主题并使用 my_sch_status 名称创建主题
-
选择主题,单击创建订阅并使用以下示例:
- 协议:使用电子邮件发送电子邮件并添加创建订阅
-
将以“待定”状态创建订阅。您将收到一封确认邮件,并需要点击邮件中的链接来确认您的电子邮件地址。
检查指标并根据指标创建预警定义
-
从左上角的菜单中,选择日志记录,然后选择服务连接器
-
选择要监视的连接器,然后单击左侧导航窗格中 resources 下的 metrics 链接
-
从要添加预警 e.g 的度量图表中,单击“服务连接器中心错误”,然后单击此查询上的选项和创建预警
-
添加名称,在通知上,选择目标服务作为通知服务,选择区间 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 帮助中心。
Monitor Oracle Cloud Infrastructure with Datadog
F36991-06
October 2022
Copyright © 2022, Oracle and/or its affiliates.