본문으로 건너뛰기

시나리오 생성 및 테스트

시나리오 생성

Monitoring Flow에서 시나리오 활용하여 시나리오 스텝(워크플로우)을 만들 수 있습니다. 신규 시나리오를 생성하는 방법은 다음과 같습니다.

안내

시나리오 생성 시, 연결된 플로우 커넥션은 수정할 수 없습니다.

Monitoring Flow에서 워크플로우를 동작하기 위한 시나리오를 생성합니다.

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. [시나리오 생성] 버튼을 클릭한 후, 시나리오 생성 화면으로 이동합니다.

  3. 시나리오 생성에 필요한 정보를 입력 후 [생성] 버튼을 클릭합니다.

    • 플로우 커넥션 선택 후, 플로우 커넥션에 연결된 서브넷을 확인할 수 있습니다. 연결된 서브넷은 플로우 커넥션 상세 화면에서 수정할 수 있습니다.
    항목설명
    시나리오 이름같은 프로젝트 내에서 중복된 시나리오 이름은 사용 불가
    플로우 커넥션플로우 커넥션에 등록된 VPC만 선택 가능, 1개의 플로우 커넥션만 선택 가능
    - 한 개의 플로우 커넥션은 여러 개의 시나리오를 가질 수 있음
    - 카카오클라우드 내부 리소스에 접근하기 위해서는 플로우 커넥션을 선택해야 하며, 플로우 커넥션 없이도 시나리오를 생성 가능
    서브넷상위 선택한 플로우 커넥션에 연결된 서브넷만 확인 가능
    - 연결된 서브넷의 수정은 플로우 커넥션의 서브넷 연결 관리를 참고
    스케줄시나리오를 실행할 스케줄 설정
    - 정상적인 시나리오 스텝 동작을 위해 반드시 스케줄 설정이 필요

시나리오 스텝 유형

시나리오를 구성하는 각 7개 스텝들(API, TCP, UDP, Set Variables, For, If, Sleep)을 조합하여 하나의 시나리오를 완성할 수 있습니다. 시나리오 스텝은 시나리오를 구성하는 워크플로우로, 시나리오 스텝을 저장해야 시나리오가 정상적으로 동작합니다.

용어 정리
  • 스텝: 시나리오를 구성하는 단계이며, 각 스텝을 정의하고 조합하여 다양한 시나리오를 생성할 수 있습니다.
  • 시나리오: 카카오클라우드에서 워크플로우를 의미하는 용어이며, 모니터링을 효율적으로 수행하기 위해 정의된 스텝들을 스케줄에 맞춰 자동화하는 프로세스입니다.
  • Variable: 사용자가 설정한 변수를 의미하는 용어이며, 워크플로우 내에서 공통으로 접근할 수 있습니다.

시나리오 스텝 유형은 다음과 같습니다.

항목설명
API호출할 API를 지정하는 스텝
TCP지정한 주소로 TCP 방식으로 연결을 요청하는 스텝
UDP지정한 주소로 UDP 방식으로 데이터를 전송하는 스텝
Set VariablesVariables 값을 설정하는 스텝
- Variable은 시나리오 동작 시 공통으로 접근할 수 있는 변수입니다.
- 우선 Default Variable을 생성한 후, Set Variables 스텝에서 Variable을 선택 가능
For반복 조건을 설정하는 스텝
- 단순 반복과 JSON List의 요소에 대하여 반복하며, 최대 반복 횟수는 1,000회로 제한
- Marker는 Variable 결과에서 현재 위치를 표시
If비교 연산자를 활용한 조건을 설정하는 스텝
Sleep프로세스를 일시적으로 멈추기 위해 정지 시간을 설정하는 스텝
- 최대 5분 이내로 설정 가능

시나리오 스텝 추가

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.
  2. 시나리오 메뉴에서 이름 클릭하여 시나리오 상세 화면으로 이동합니다.
  3. 세부 정보 탭으로 이동 후, 하단의 [시나리오 스텝 추가] 버튼을 클릭합니다.
  4. 시나리오 스텝 편집 화면의 우측 패널에서 시나리오 스텝을 추가합니다.
안내
  • 시나리오를 구성하는 스텝의 필수 항목이 모두 입력되지 않는 경우, 해당 스텝에 경고 아이콘이 표시됩니다.
  • 필수 항목을 미입력 시, 시나리오 스텝을 저장할 수 없습니다. 반드시 필수 항목을 입력해 주세요.
  • 특정 스텝 구성 시, 사전에 Default Variable을 반드시 등록해야 합니다.

Default Variable 관리

Default Variable의 개수와 정보 등을 변경할 수 있습니다. 텝을 생성하기 전에 Default Variable을 먼저 등록해야 합니다.

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측 상단의 [Default Variable 관리] 버튼을 클릭하여, Default Variable을 등록(최대 20)합니다.

  4. Key, Type, Value를 입력하여 저장합니다.

    항목설명
    KeyVariable의 Key값 입력
    TypeVariable의 유형 선택
    - String, Integer, JSON List, Json Map 총 4가지 중 선택
    Value선택한 Type에 맞는 Variable의 기본값 입력
주의

다른 스텝에 저장된 정보가 있는 Default Variable은 수정 및 삭제할 수 없습니다. 반드시 해당 스텝에서 해당 정보를 삭제 후 시도해 주세요.

API 스텝 설정

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측의 새 스텝 설정에서 스텝 유형으로 API를 선택합니다.

  4. API 설정에 필요한 정보를 입력합니다.

    항목구분설명
    유형API 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    Expected code입력한 URL의 예상 Status Code를 입력
    - 미입력 시 200으로 자동 설정
    MethodAPI 요청 방법 선택
    URL접근하는 API의 URL 입력
    - URL에 변수 입력 가능 (예: ${IP} → 12.34.56.78, http://${IP} → http://12.34.56.78 값으로 치환되어 설정)
    Timeout요청을 보낸 후 응답을 기다리는 최대 시간(ms)
    - 1ms이상 60000ms 이하로 설정
    ParametersParameters 정보 입력
    - 최대 10개의 parameter 저장 가능
    KeyParameters Key 입력
    - 동일한 Key를 여러 개 저장할 수 없음
    ValueParameters Value 입력
    - 변수 입력 가능
    HeadersHeaders Key/Value 입력
    - 최대 10개의 parameter를 저장 가능
    KeyHeaders Key 입력
    - 동일한 Key를 여러 개 저장할 수 없음
    ValueHeaders Value 입력
    - 변수 입력 가능
    BodyBody 값 입력
    - 변수 입력 가능
    - 하단의 Body 예시를 참고
    {
    "name": "kakaocloud",
    "org": {
    "name": "kakaocloud"
    }
    }
  5. 필수 항목을 모두 입력한 후에 추가 스텝이 필요한 경우, 좌측 패널의 다음 스텝 추가를 클릭합니다.

    • API 스텝 단독으로도 사용이 가능합니다.
    • API 스텝에는 하위 스텝을 추가할 수 없습니다.
    • API 스텝을 삭제하려면, 다른 스텝에 해당 API 정보가 저장되어 있지 않아야 합니다. 다른 스텝에 삭제하려는 대상의 API의 정보가 저장되어 있는 경우, 반드시 해당 스텝에 저장된 정보를 삭제해야 API 스텝을 삭제할 수 있습니다.
    안내

    대상 목적지의 방화벽에서 해당 IP를 허용해야 합니다.

    • IP 61.109.236.21

TCP 스텝 설정

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측의 새 스텝 설정에서 스텝 유형으로 TCP를 선택합니다.

  4. TCP 설정에 필요한 정보를 입력합니다.

    항목설명
    유형TCP 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    URL연결을 요청하는 TCP의 지정 URL 입력
    - URL에 변수 입력 가능 (예: ${IP} → 12.34.56.78, tcp://${IP} → tcp://12.34.56.78 값으로 치환되어 설정)
    Timeout요청을 보낸 후 응답을 기다리는 최대 시간(ms)
    - 1ms이상 60000ms 이하로 설정
    - 미입력 시, 시나리오 타임아웃인 5분으로 제한됩니다.

UDP 스텝 설정

주의

UDP 서버에서는 요청을 보낸 address(IP)를 그대로 사용하여 응답을 전송해야 정상적으로 통신이 됩니다.

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측의 새 스텝 설정에서 스텝 유형으로 UDP를 선택합니다.

  4. UDP 설정에 필요한 정보를 입력합니다.

    항목설명
    유형UDP 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    URL데이터를 전송하는 UDP의 지정 URL 입력
    - URL에 변수 입력 가능 (예: ${IP} → 12.34.56.78, udp://${IP} → udp://12.34.56.78 값으로 치환되어 설정)
    Timeout요청을 보낸 후 응답을 기다리는 최대 시간(ms)
    - 1ms이상 60000ms 이하로 설정
    - 미입력 시, 시나리오 타임아웃인 5분으로 제한됩니다.

Set Variables 스텝 설정

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측 패널의 새 스텝 설정유형Set Variables로 선택 후, 각 항목을 설정합니다.

    항목구분설명
    유형Set Variables 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    Parameters아래의 파라미터 항목들을 입력
    - 최대 5개의 parameter를 저장 가능
    VariableDefault Variable에 저장된 목록 중 1개를 선택
    - 해당 스텝에 이미 저장된 Variable은 다시 선택할 수 없음
    - 저장된 Variable이 없는 경우, Default Variable에서 추가
    Step상위 스텝에서 저장된 API 스텝 중 1개를 선택
    - 상위 스텝에 API가 없는 경우, API 스텝 설정에서 생성 필요
    요청/응답response,request 중 1개를 선택
    구성 요소request, response 선택 값에 따라 parameters, headers, body를 선택
    Key상위에 선택한 요청/응답 결과의 값을 입력 또는 선택
  4. [저장] 버튼을 클릭합니다.

For 스텝 설정

안내
  • For 스텝에는 다음 스텝을 추가할 수 없습니다.

  • For 스텝은 반드시 하위 스텝을 가져야 합니다.

  • For 스텝이 하위 스텝인 경우, 다음 스텝 또는 하위 스텝을 추가할 수 없습니다.

    • (예시) IF 스텝의 하위 스텝으로 For 스텝이 추가되면, IF 스텝을 다음/하위 스텝에 추가할 수 없습니다.
    1 Depth2 Depth3 Depth
    API
    If
    For
    If 다음 스텝 추가 불가If 하위 스텝 추가 불가API
  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측 패널의 새 스텝 설정유형For로 선택 후, 각 항목을 설정합니다.

    항목구분설명
    유형For 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    상태유형에 맞게 조건을 입력
    Typecount, foreach 중 1개를 선택
    Count반복 횟수를 최대 1,000회 이내로 입력
    - For 스텝의 단순 반복 횟수를 입력(1~1,000)
    ForeachBase Variable을 선택
    - Default Variable에서 Json List를 선택하며, Json List 형태의 다수의 데이터를 반복 실행
    - Default Variable에 저장된 목록 중 1개를 선택
    - JSON List만 선택 가능
    Continue on Error해당 조건의 오류 시, 계속 반복하여 실행할지 여부를 설정
    - 설정 시, 해당 For 스텝에서 오류가 발생하더라도 계속 실행됨
    Marker선택한 Variable 결과에서 현재 위치이며, marker를 이용하여 설정한 위치에서 데이터를 읽을 수 있도록 설정
    - 최대 5개의 Marker Value 저장 가능
    Marker VariableDefault Variable에 저장된 목록 중 1개를 선택
    - 해당 항목에 이미 저장된 Variable을 다시 선택 가능
    Marker Value데이터를 읽기 위한 위치에 대한 값을 입력
    - ${marker.} 형식으로 정확히 입력해야 하며, marker.만 입력할 경우 문자열로 인식
    - 변수와 함수에 JSON 배열 형태의 값 적용 가능
    - Substring, Size 함수 적용 가능
    안내
    • Marker Value 활용하기
      • Marker Value는 선택된 Variable 결과에서 현재 위치를 나타내며 해당 위치에서 데이터를 읽는 문법으로, 예시는 다음과 같습니다.
    항목예시
    Default Variable- key : name / type : string
    - key : age / type : integer
    Marker Variable- name
    - age
    Marker Value- ${marker.name}
    - ${marker.age}
    입력 결과- name = “kakao”, “john”
    - age = 10, 20
    • Marker Value 함수 적용하기
      • Marker Value에서 함수를 사용할 수 있습니다. 예시는 다음과 같습니다.
    항목예시1예시2
    문자열 길이 구하기문자열 일부 추출하기
    Marker Variablemarker: {"name": [{"i": 1, "str": "bar"}]}marker: {"name": [{"i": 1, "str": "bar"}]}
    Marker Value${size(makrer.name[0].str)}${marker.name.str.substring(1,3)}
    입력 결과"3"
    - string값인, "bar"의 길이인 "3"이 됩니다.
    "ar"
    - string값인, "bar"에서 두번째부터 마지막 항목으로 "ar"이 됩니다.
  4. For 스텝의 필수 항목을 모두 입력한 후, 좌측 패널에서 [하위 스텝 추가] 버튼을 클릭하여 하위 스텝을 추가합니다.

    • For 스텝은 다음 스텝을 가질 수 없으며, 반드시 하위 스텝을 가져야 합니다.

If 스텝 설정

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측 패널의 새 스텝 설정유형If로 선택 후, 각 항목을 설정합니다.

    항목구분설명
    유형If 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    Condition유형에 맞게 조건을 입력
    - 특정 조건이 참일 때, 번호 순서대로 If 스텝의 condition이 실행됨
    Logicaland와 or 함수 중 1개 선택
    - 1개 이상의 조건이 저장된 경우에만 선택 가능
    Left Operand연산에 사용하는 대상 조건 입력
    - 변수와 함수에 JSON 배열 형태의 값 적용 가능
    - Substring, Size 함수 적용 가능
    ComparisonOperand를 비교하기 위한 비교 연산자 선택
    Right Operand기준값 입력
    - 변수와 함수에 JSON 배열 형태의 값 적용 가능
    - Substring, Size, Regex 함수 적용이 가능하지만, Regex는 comparision으로 regex 연산자 선택 시에만 가능
  4. If 스텝의 필수 항목을 모두 입력한 후, 좌측 패널의 다음 스텝 또는 하위 스텝을 추가합니다.
    - If 스텝은 반드시 하위 스텝을 가져야 합니다.

Sleep 스텝 설정

  1. 카카오클라우드 콘솔 > Management > Monitoring Flow > 시나리오 메뉴로 이동합니다.

  2. 시나리오 > [더 보기] > 시나리오 스텝 편집을 클릭합니다.

  3. 우측 패널의 새 스텝 설정유형Sleep으로 선택 후, 각 항목을 설정합니다.

    항목설명
    유형Sleep 선택
    스텝 이름스텝에 설정할 이름
    - 같은 시나리오 내에서 중복된 이름은 사용 불가
    슬립 시간슬립을 실행할 시간을 입력
    - 최대 5분
  4. Sleep 스텝의 필수 항목을 모두 입력한 후, 좌측 패널의 다음 스텝 또는 하위 스텝을 추가합니다.

시나리오 스텝별 표현식 함수 사용 가이드

안내
  • 표현식에 잘못된 형식의 값이 들어가더라도, 별도 스텝 에러 없이 문자열(String)로 처리됩니다.
    (예)${user.age} 변수에 실제로 숫자가 아닌 abc 같은 문자열이 들어 있어도, ${user.age} > 10 과 같은 조건문은 오류 없이 실행되며, 내부적으로는 단순 문자열 비교로 처리됩니다.
    이로 인해 조건이 의도와 다르게 '성공'으로 간주될 수 있으니, 표현식 작성 시 변수의 값과 형식을 꼭 확인해 주세요.
  • 표현식에서 사용한 Marker value가 해당 Variable에서 확인되지 않으면, Default Variable값이 자동으로 사용됩니다.

API, TCP, UDP, For, If 스텝의 표현식에 함수를 사용할 수 있습니다.

함수설명사용 가능 스텝주의사항
size()문자열/리스트 길이 반환API, TCP, UDP, For, If숫자에 사용시 에러
substring(start,end)문자열 슬라이싱API, TCP, UDP, For, If배열, 숫자에 사용시 에러
regex(~=)정규표현식 비교IfPerl방식(왼쪽은 문자열, 오른쪽은 정규식)

API, TCP, UDP 스텝

var: { "i": 1, "str": "bar", "m": { "foo": "baz" } } 
표현식결과설명
${var}/pathErrorobject + string 불가
https://${var.str}.com/pathhttps://bar.com/path문자열 조합
https://example.com/${var.i}https://example.com/1숫자, 문자열 변환
https://example.com/${size(var.str)}https://example.com/3size 함수
https://${substring(var.str,1,3)}.com/pathhttps://ar.com/pathsubstring 함수
https://${var.str}.com/${var.i}https://bar.com/1복합 표현식 가능

For 스텝

문자열이나 객체가 아닌 값을 대상으로 비교할 경우, 오류가 발생할 수 있습니다.

marker: {"foo": [{"i": 1, "str": "bar"}]}
표현식결과설명
${marker.foo}[{"i":1, "str":"bar"}]foo 필드 전체 배열은 반환
${marker["foo"]}[{"i":1, "str":"bar"}]${marker.foo}와 동일
${size(marker.foo}1foo 배열의 size
${size(marker.foo[0].i)}Error숫자에 size() 적용 불가
${size(marker.foo[0].str)}3"bar" 문자열의 size
${marker.foo.substring(1)}Error배열에 substring() 사용 불가
${marker.foo[0].substring(1)}Error배열 안의 객체에 substring() 사용 불가
${marker.foo[0].i.substring(1)}Error숫자에 substring() 사용 불가
${marker.foo[0].str.substring(1)ar복합 표현식으로 "bar"의 1번 인덱스부터 끝까지
${marker.foo[0].str.substring(1, size(marker.foo[0].str)-1)}a복합 표현식으로 "bar"의 1번 인덱스부터 2번 전까지
marker: [{ "value": "123" }] 
표현식결과설명
${marker[0]}{"value": "123"}배열의 첫번째 요소인 객체 전체 반환
${marker[0].value}123첫번 째 객체의 value 필드 값을 반환
${marker.value}Errormarker가 객체가 아닌 배열[]이므로, value 필드에 접근 불가

If 스텝

문자열이나 객체가 아닌 값을 대상으로 비교할 경우, 오류가 발생할 수 있습니다.

user: {"name": "alice","age": 27,"info": {"nickname": "ally"}}
표현식결과설명
${user} = ${user}Trueuser 객체 전체가 동일한지 비교
${user.name} ~= ^a.*Trueusre.name이 a로 시작하는지 확인
${user.age} ~= ^[0-9]+$True숫자인지 정규식으로 확인
${user.info} ~= .*nickname.*Trueuser.info는 객체지만 문자열로 처리되어, "nickname" 포함 여부 확인
${size(user.name)} ~= ^[0-9]+$Trueuser.name의 길이가 숫자 형식인지 비교

시나리오 스텝 테스트 실행 및 결과 확인

  1. 시나리오 스텝의 필수 항목을 모두 입력한 후에 우측 상단의 [테스트] 버튼을 실행하고 테스트 실행 결과를 확인합니다.

    • 테스트 실행 결과 화면은 실제 시나리오 실행 결과와 동일합니다.
    • 스텝별 오류 항목이 있는 경우, 우측 패널 하단에서 오류 상세 정보를 확인해 주세요.
  2. 테스트 실행 결과 이후 또는 이전에 시나리오를 반드시 저장해 주세요.

    주의
    • 테스트 실행 이후에 수정이 없어도 저장하지 않으면, 이전에 생성해 놓은 스텝이 사라집니다.
    • 저장하지 않은 시나리오 스텝은 복구할 수 없습니다.
  3. 저장된 시나리오 스텝은 시나리오에 설정된 스케줄에 맞춰 실행됩니다.

    • 시나리오는 저장 즉시 실행되지는 않으며, 일정 시간이 소요됩니다.


서비스 활용하기

Monitoring Flow 서비스의 다양한 활용 예제를 튜토리얼에서 만나보실 수 있습니다. 아래 목록의 튜토리얼을 통해 구체적인 사용 사례와 설정 방법을 확인해 보세요.