Tickets Documents Updates 로그인

[ Datadog ] Datadog를 활용한 AIOps #3 - Bits AI(Agent Builder)활용

AI 기반 워크플로를 통해 사고 대응, 개발 및 운영 전반에 걸쳐 팀의 업무 속도를 높이는 데 도움이 되는 Bits AI 기능 활용에 대해 알아봅니다.  

Bits AI 기능은 아래와 같이 4가지로 나뉩니다. 각각의 자세한 설명은 각 링크의 Datadog 가이드를 참고하세요 


  • Bits Chat (대화형 탐색)
    자연어로 대화하며 실시간 데이터를 검색·분석하고대시보드나 노트북을 손쉽게 만들 수 있는 기능.

  • Bits Investigation (자동 장애 조사)
    장애 알림이 뜨면 별도의 설정 없이도 AI가 자동으로 원인을 분석하고영향도를 파악하여 수분 내에 해결책까지 제시해 주는 기능.

  • Bits Code (AI 기반 코드 최적화)
    데이터독의 모니터링 정보를 바탕으로 AI가 코드 생성리뷰디버깅을 지원하여 시스템 오류를 빠르게 수정할 수 있도록 돕는 기능.

  • Bits Agent Builder (맞춤형 AI 에이전트 구축)
    장애 대응이나 맞춤형 보고서 작성 등 반복적이고 중요한 업무를 자동으로 처리해 주는 나만의 커스텀 AI 비서를 만드는 기능.


이번 활용Tip은 Bits AI 와 workflow를 활용해 최적화가 필요한 리소스들을 파악하고, 담당자들에게 주기적으로 Noti 하는 방법을 알아 봅니다. 


Bits Chat 은 실시간으로 검색 및 분석, 대시보드나 노트북을 생성하는 기능으로 활용성이 높으나, 사용자가 직접 질의 하고 응답받는 구조이로 필요할 때마다 사용하는 기능이고, Bits Investigation은 Monitor 알람이 발생한 후에 원인을 분석하는 도구이로 monitor 설정이 우선되어야 합니다.


이번 활용Tip 에서는 각 서버나, pod 등에 cpu,mem,disk 리소스들이 충분한지 확인하고, 리소스가 부족해 문제가 발생할 소지가 있는 서버 나 pod 등을 체크해 , 리소스 부족에 대한 해결 방안을 제안하고, 반대로 리소스를 거의 사용하지 않아 리소스를 더 줄여도 되는 서버 나 pod 등을 체크하고 그에 맞는 제안을 하도록 하는 레포트를 작성하도록 하는 workflow를 만들 예정입니다.


우선 Bits AI 혹은 Automation 의 Bits Agent Builder 메뉴를 클릭하고, + New Agent를 클릭해 Bits Agent Builder를 생성합니다. 


New Agent를 클릭하면 What should this agent do? 라는 문구가 나옵니다. 

여기에 이 Agent가 주로 해야 할 업무에 대한 정의를 합니다. 

( blueprint 혹은 scratch를 통해 생성할 수도 있습니다. )


agent에 대한 정의는 Instructions 에서 확인 및 수정할 수 있습니다. 

생성시 정의했던 내용을 기반으로 필요한 action들을 tools로 선정해 자동 추가 됩니다. 


예시로 만든 Agent는 인프라 리소스 최적화 에이전트로 간단히 설명했고, 자동적으로 Instructions 및 필요할만한 tool들이 자동으로 추가되었습니다. 


Agent 가 생성되었다면 Instructions 에 내용을 확인하고 원하는 방향과 다르다면 직접 수정이 가능합니다. 

작성 과정에 직접 수정도 가능하고, Edit with AI 버튼을 클릭해 Bits AI를 이용해 작성 및 수정 할 수 있습니다. 


해당 Agent를 이용한 Workflow를 작성해보도록 하겠습니다. 

화면 우측 상단에 Automation 항목의 + 아이콘을 클릭해 workflow 를 생성하도록 합니다. 

+ 표시를 클릭하면 Trigger를 선택하는 메뉴가 나옵니다. 이번에는 주기적인 일정에 따라 레포트를 작성해 주는 workflow를 만들 예정으로 Run on schedule을 선택합니다. 


Trigger 를 선택하고 나면 Add automation 팝업이 뜨면서 아래와 같이 Trigger 와 Agent가 포함된 workflow가 만들어집니다. 

예시에서는 매주 월요일 9시에 실행되도록 설정했습니다. 


기본적으로 이 workflow에서 어떤 결과들을 어떻게 출력할지에 대한 부분들은 미리 고려해 두시는 게 좋습니다. 

이번 예시에서는 service tag를 기준으로 리소스 최적화 여부를 확인해 서비스별 slack 에 noti 하고 전반적인 summary 내용은 notebook을 생성 하는 방식으로 진행 하려고 합니다. 


우선 agent builder action의 경우, Agent builder를 생성할 때 입력했던 instructions 외에 추가적인 동작을 위해 Run instructions를 입력할 수 있습니다. Service 별로 slack noti를 하려면 결과 값이 json으로 표시되어야하며 결과가 service 별로 표시되어야 합니다. 


예시에서는 간단하게 아래와 같이 Run instructions 를 정의했습니다. 

인프라 리소스 사용량을 분석하되, 결과를 service 태그별로 분리하여 제공하세요.

각 service에 대해 다음을 포함하세요:

1. 현재 CPU/메모리 사용률

    - CPU/메모리는 아래 namespace metric 기준으로 사용율을 확인해줘

    1) system

    2) aws.ec2

    3) azure.vm    

2. 리소스 최적화 권고사항

3. 예상 절감 효과


모든 결과는 반드시 output schema의 services 배열에 service tag별로 구분하여 넣어주세요. 

입력한 service tag에 대해 agent tag , integration tag, apm tag 및 etc 로 구분해 service_type 항목에 넣어주세요 


그리고 json으로 결과를 받을때 service 별로 구성하기 위해 Output schema를 따로 설정했습니다. 

예시에서 사용한 Output schema는 아래와 같습니다. 

{

  "type": "object",

  "properties": {

    "services": {

      "type": "array",

      "items": {

        "type": "object",

        "properties": {

          "service_name": {

            "type": "string",

            "description": "서비스 태그 값"

          },

          "current_usage": {

            "type": "object",

            "properties": {

              "cpu_percent": { "type": "number" },

              "memory_percent": { "type": "number" }

            }

          },

          "recommendation": {

            "type": "string",

            "description": "최적화 권고사항"

          },

          "estimated_savings": {

            "type": "string",

            "description": "예상 절감 효과"

          }, 

           "service_type":{

            "type": "string",

            "description": "서비스 타입"

        },

        "required": ["service_name", "recommendation","service_type"]

      }

    },

    "summary": {

      "type": "string",

      "description": "전체 분석 요약"

    }

  },

  "required": ["services", "summary"]

}



Output schema 를 설정하면 agent가 결과를 출력할때 해당 정보를 기준으로 json으로 데이터를 출력해 줍니다. 

상단 오른쪽에 Run Draft 혹은 Run을 클릭해 해당 workflow를 수동으로 실행 시켜 봅니다. 

Run을 실행 시키면 하단에 Executions 창이 열리면서 현재 workflow 실행 현황 및 결과들을 확인할 수 있습니다. 

원하는 결과를 도출해 내는지 확인하고, 추가적인 내용이 필요하면 instructions 나 output schema등을 수정하면서 원하는 포을 만들어갑니다.


원하는 결과를 도출 하는 것을 확인했다면 Agent가 도출한 결과를 Service별 Slack에 Noti 하고 전반적인 결과를 Notebook으 출력하는 단계로 넘어갑니다. 


참고로 Executions 창이 열려 있다면 편집이 되지 않습니다. 오른쪽 스크롤바 위에 창 닫기 아이콘을 눌러 executions 창을 닫거나, Executions 창 상단의 메뉴명들을 클릭하면 창이 close 됩니다. 


이전 단계인 Agent Action 하단의 + 모양을 클릭해 연결될 추가 액션을 선택합니다. 

우선 결과를 Service 별로 각각의 Slack에 전달 할 예정이기 때문에 Workflow Logic중 For Loop 로직을 사용합니다.

For Loop는 list를 세팅하고 For Loop 내부의 Action들을 list count 만큼 실행시킵니다. 


For Loop의 Input List를 이전 단계의 결과 값 중 service 배열을 선택합니다. 

이전 단계의 결과가 생각이 나지 않는다면 창 하단의 Executions 라인을 클릭하면 창이 다시 활성화 되며, 이전 단계의 결과 값을 확인할 수 있습니다. 


loop 설정이 되었다면 loop에서 실행할 action을 추가합니다. 여기서는 Service에 맞는 slack으로 noti message를 보내는 것을 진행합니다. 


여기서 전제는 slack 채널명이 service 명을 기준으로 특정 규칙을 가지고 생성되었다는 전제를 가지고 구성합니다. 

필요한 경우, Slack 메지 전송전에 javascript action을 추가해 규정하거나, datadog의 reference table 을 이용해 service별 slack 채널을 매핑해 두고, reference table action을 통해 값을 가져오도록 구성하셔도 됩니다. 


이번 팁은 우선 단순한 구성을 통해 흐름을 보여주려고 하는 것이기 때문에 조금 단순하게 진행하도록 하겠습니다. 

아래와 같이 Slack Send message Action을 추가하고, workspace를 설정해주고, Channel or user 에 

설정한 List를 하나하나 Loop 가 돌면서 그에 맞는 값을 적용하기 위해 Current.Value 를 사용합니다. 


위와 같이 설정하면 For loop에 적용한 List인 Service 배열의 값을 하나하나 loop를 돌면서 Current.value 값에 적용합니다. 

채널명에 Service 배열중 service_name을 가져오도록 Current.value.service_name을 적용하고, 

message 내용에 Service 배열중 estimated_savings 및 recommendation 값을 표기하도록 설정합니다. 


Slack에 아래와 같이 message가 전송됩니다. 


Loop가 종료 된 뒤 Datadog Action 중 Create notebook을 이용해 Notebook을 생성합니다. 


제목을 입력 후 Agent 실행 결과중 Summary를 Content 에 그대로 출력하기 위해 가져옵니다. 이전 단계의 데이터를 가져오려고 할 경우, {{ 를 창에 입력하면 어떤 단계의 데이터를 가져올지를 선택하는 선택창이 뜹니다. 필요에 따라 선택창에 단계를 선택 후 

그 단계의 output 값중 가져올 데이터를 json 데이터를 가져오는 방식으로 설정합니다. 


이번 예시에서는  {{ Steps.Execute_Custom_Agent.finalResponse.summary }} 로 정의 합니다. 


Notebook 결과 예시


구성 후 Run을 눌러 실행 결과를 바로 확인해 볼 수 있고, publish를 클릭해 트리거(schedule)에 맞춰 동작 할 수 있도록 할 수 있습니다. 

모든 과정은 예시이며, 구성시 자신의 환경에 맞게 구성이 가능합니다. 

추가적으로 각 CPS api등에 접근이 가능하다면 결과에 따라 자동적으로 infra resource를 조정하는 방식으로 

자동화를 구성할 수 도 있습니다. 


Workflow automation과 Agent builder를 조합해 더욱 다양


참고 link

Docs - Workflow Automation : workflow 설명 및 Trigger, Action, Variables 등등 사용법

         - Bits Agent Builder : Agent build 설명 


* Datadog Docs 에도 AI 기능이 추가되었습니다. Docs 페이지내에 Ask AI 버튼을 클릭해 Datadog에 궁금한 점을 물어 보세요.

주의:  Datadog Docs(docs.datadoghq.com)의 Ask AI는 무료 입니다, 하지만 Datadog console(app.datadoghq.com)내의 Ask Bits 는 과금 대상입니다. 


이 답변이 유용합니까? 아니오

Send feedback
도움이 되어드리지 못해 죄송합니다. 아티클 개선을 위해 의견을 제공해 주시기 바랍니다.