참고:

Datadog를 통한 Oracle Cloud Infrastructure 모니터링

소개

Oracle Cloud 관찰 가능성 및 관리 용이성 플랫폼은 고객이 있는 곳에서 고객을 만족시키는 것을 목표로 합니다. 널리 사용되는 타사 관찰 가능성 툴로 운영 자세를 표준화했으며, 당사 고객이 Oracle Cloud Infrastructure에 투자한 툴을 계속 사용할 수 있도록 해당 툴과 상호 운용되기를 원합니다.

이 사용지침서에서는 Oracle Cloud Infrastructure에서 Datadog로 로그를 이동하는 방법을 안내합니다. Datadog는 애플리케이션에 대한 완전한 가시성을 제공하는 모니터링 및 보안 서비스를 제공하는 인기 있는 관찰 툴입니다.

Datadog API 키 생성

  1. Datadog 계정에서 통합을 선택하고 API에서 API 키 생성을 누릅니다. API 키가 생성됩니다.

    데이터 탭 메뉴

    datadog 키

캡처할 로그 구성

  1. Oracle Cloud Infrastructure 콘솔에서 Navigation(탐색) 메뉴를 누르고 Logging(로깅) 메뉴 아래의 Log Groups(로그 그룹)를 선택합니다.
     

  2. 로그 그룹을 생성하려면 로그 그룹 생성을 누릅니다.

    로그 그룹 생성
     

  3. 구획을 선택하고 이름 data_log_group설명을 추가합니다.

    새 로그 그룹
     

  4. 로그 그룹을 생성한 후 왼쪽 메뉴에서 로그를 선택합니다.
     

  5. 서비스 로그 사용을 누르고 대화 상자를 채운 다음 로그 사용을 누릅니다. 서비스에서 로그 범주를 선택합니다.

    • Resource: 리소스로 사용할 로그를 입력합니다.
    • 로그 이름: 로그의 이름을 입력합니다(예: datadog).

    나머지 필드를 적절하게 채웁니다. 버킷 이름이 datadog_logs인 Oracle Object Store가 표시된 이 예를 참조하십시오.

    서비스 로그
     

로그를 Datadog로 수집하기 위한 Oracle Function 구성

  1. Navigation(탐색) 메뉴를 누른 다음 Solution and Platform(솔루션 및 플랫폼) 섹션을 선택합니다. 개발자 서비스 메뉴에서 함수를 선택합니다.
     

  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를 3자리 지역 코드로 바꿉니다.

  8. 인증 토큰 생성을 누릅니다.

    비밀번호로 인증 토큰을 사용하여 레지스트리에 로그인

    docker login phx.ocir.io
    

    phx를 3자리 지역 코드로 바꿉니다.

    다음 정보를 입력하라는 메시지가 표시됩니다.

    • 사용자 이름: <tenancyname>/<username>
    • 비밀번호: 비밀번호를 생성합니다.

    참고: Oracle Identity Cloud Service를 사용 중인 경우 사용자 이름은 <tenancyname>/oracleidentitycloudservice/<username>입니다.

  9. 'hello-world' 보일러플레이트 함수를 생성합니다.

    fn init --runtime python datadog
    

    fn init 명령은 func.py, func.yamlrequirements.txt의 3개 파일이 포함된 datadog라는 폴더를 생성합니다.

    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 서비스에서 생성되는 로그의 형식에 대한 자세한 내용은 Logging Format Overview를 참조하십시오.

    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
      
      

    구성 부분에는 Datadog 끝점 URL 및 1단계에서 얻은 토큰 형식 인증이 포함됩니다.
    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. 함수에 쓰기 위한 정책을 생성하라는 메시지가 표시되면 생성을 누릅니다.

이제 서비스 커넥터가 설정되고 Logging Service에서 로그를 찾을 때마다 Datadog에 로그를 수집하기 위해 함수를 트리거합니다.

Datadog에서 OCI 감사 로그 시각화

  1. Datadog에서 로그 메뉴를 눌러 OCI에서 수집된 로그를 확인합니다.

    데이터 대화상자 대시보드

문제 해결

이 섹션에서는 간단한 전자 우편 경고를 사용하여 솔루션 상태를 모니터링하는 방법을 보여줍니다.

기능

자세한 내용은 기술 문서를 참조하십시오.

통지 서비스에 대한 토픽과 구독을 생성합니다.

  1. 왼쪽 상단 모서리의 메뉴에서 애플리케이션 통합을 선택한 다음 통지를 선택합니다.

  2. 토픽 생성을 누르고 my_function_status 이름으로 토픽을 생성합니다.

  3. 토픽을 선택하고 구독 생성을 누른 후 다음 예를 사용합니다.

    • 프로토콜: 전자 메일을 보내고 자신의 전자 메일로 구독을 만듭니다.
  4. 구독이 "보류 중" 상태로 생성됩니다. 확인 전자메일이 수신되고 전자메일의 링크를 눌러 전자메일 주소를 확인해야 합니다.

측정항목 확인 및 측정항목에서 알람 정의 생성

  1. 왼쪽 위에 있는 메뉴에서 개발자 서비스를 선택한 다음 함수를 선택합니다.

  2. 모니터할 응용 프로그램과 기능을 선택합니다.

  3. Metrics 페이지에서 "Functions Errors" 차트로 이동하여 Options를 누르고 Create an Alarm on this Query를 누릅니다.

  4. 이름을 추가하고 통지에서 대상 서비스를 통지 서비스로 선택하고 your_compartment 구획을 선택한 다음 토픽을 my_function_status으로 선택합니다.

서비스 커넥터 허브

이 섹션에서는 간단한 전자 메일 경보를 사용하여 SCH(서비스 커넥터 허브)의 상태를 모니터하는 방법을 보여줍니다.

자세한 내용은 기술 문서를 참조하십시오.

통지 서비스에 대한 토픽과 구독을 생성합니다.

  1. 왼쪽 상단 모서리의 메뉴에서 애플리케이션 통합을 선택한 다음 통지를 선택합니다.

  2. 토픽 생성을 누르고 my_sch_status 이름으로 토픽을 생성합니다.

  3. 토픽을 선택하고 구독 생성을 누른 후 다음 예를 사용합니다.

    • 프로토콜: 전자 메일을 보내고 자신의 전자 메일로 구독을 만듭니다.
  4. 구독이 "보류 중" 상태로 생성됩니다. 확인 전자메일이 수신되고 전자메일의 링크를 눌러 전자메일 주소를 확인해야 합니다.

측정항목 확인 및 측정항목에서 알람 정의 생성

  1. 왼쪽 상단 모서리의 메뉴에서 로깅을 선택한 다음 서비스 커넥터를 선택합니다.

  2. 모니터할 커넥터를 선택하고 왼쪽 탐색 창의 리소스 아래에 있는 측정항목 링크를 누릅니다.

  3. e.g, "Service Connector Hub 오류"를 추가하려는 측정항목 차트에서 [옵션]을 누르고 이 질의에 대한 알람을 생성합니다.

  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를 참조하십시오.