수정¶
POST /api/v1/pipeline/{pl_uuid}/modify
개요¶
Pipeline을 수정합니다. 선택 항목 configVersion은 읽기 시점의 현재 설정 버전 번호이며, 버전이 만료되면 409 ft.PipelineConfigVersionConflict를 반환합니다. 미지정 시 기존 호출과 호환됩니다.
category 유형이 profiling인 경우, 워크스페이스 설정의 CentralPLServiceSwitch(/workspace/get 인터페이스 반환) 필드가 true일 때만 해당 규칙이 실제로 적용됩니다.
경로 매개변수¶
| 매개변수 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
| pl_uuid | string | Y | Pipeline ID |
Body 요청 매개변수¶
| 매개변수 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
| name | string | Y | Pipeline 파일 이름이자 source 유형 값입니다. 빈 값 허용: False 최대 길이: 256 $notSearchRegExp: [^a-zA-Z0-9_\u4e00-\u9fa5-]+ |
| type | string | Y | Pipeline 파일 유형입니다. 빈 값 허용: False 선택 값: ['local', 'central'] |
| source | array | 선택한 source 목록입니다. 빈 값 허용: False |
|
| content | string | Y | pipeline 파일 내용(Base64 인코딩). |
| Base64 디코딩된 스크립트는 Studio UI의 문자 수 계산 규칙으로 검증됩니다. U+0001–U+007E, U+FF60–U+FF9F는 1, 기타 UTF-16 단위는 2로 계산하며 상한은 65535입니다. 또한 디코딩된 스크립트 전체의 UTF-8 인코딩 크기가 65535바이트를 초과할 수 없습니다. 어느 하나라도 초과하면 ft.ContextExceedLimit을 반환하며, 바이트 초과 안내는 바이트 단위로 표시됩니다. | |||
빈 값 허용: False |
|||
| testData | string | 테스트 데이터(Base64 인코딩). OpenAPI 측에서는 빈 문자열 또는 base64 디코딩 후 JSON 배열인 내용만 전달할 수 있습니다. |
생성 방식: 1. 먼저 테스트 샘플 배열을 준비합니다. 2. 배열에 JSON.stringify를 실행합니다. 3. 결과 UTF-8 문자열을 base64 인코딩한 후 testData로 전달합니다.
일반적인 예시: - 빈 샘플 배열: [] -> W10= - 단일 JSON 로그: [{"level":"info","msg":"HTTP"}] -> W3sibGV2ZWwiOiJpbmZvIiwibXNnIjoiSFRUUCJ9XQ== - 단일 텍스트 로그: ["raw log line"] -> WyJyYXcgbG9nIGxpbmUiXQ==
잘못된 예시: {"level":"info","msg":"HTTP"}를 직접 base64 인코딩하여 전달하는 경우입니다. 디코딩 후 최상위가 object이므로 배열이 아니기 때문입니다.
빈 값 허용: False
빈 문자열 허용: True
|
| dataType | string | | 데이터 유형. line_protocol-라인 프로토콜 형식; json-JSON 형식; message-Message.
예시: line_protocol
빈 값 허용: False
빈 문자열 허용: True
선택 값: ['line_protocol', 'json', 'message']
|
| isForce | boolean | | 특정 유형에 default가 존재하는 경우 대체할지 여부입니다.
빈 값 허용: False
|
| configVersion | integer | | 읽기 시점의 현재 설정 버전 번호이며, 전달 시 동시 덮어쓰기를 방지할 수 있습니다.
빈 값 허용: False
$minValue: 1
|
| asDefault | int | | 해당 유형의 기본 pipeline으로 설정할지 여부입니다. 1이면 기본값으로 설정합니다.
빈 값 허용: False
|
| enableByLogBackup | int | | Pipeline이 전송 데이터를 처리하도록 활성화할지 여부입니다. 1이면 활성화, 0이면 비활성화입니다.
빈 값 허용: False
|
| category | string | Y | 카테고리입니다.
빈 값 허용: False
빈 문자열 허용: False
선택 값: ['logging', 'object', 'custom_object', 'network', 'tracing', 'rum', 'llm', 'agent_monitor', 'security', 'keyevent', 'metric', 'profiling', 'dialtesting', 'billing', 'keyevent']
|
| extend | json | | 카테고리입니다.
빈 값 허용: False
|
| extend.appID | array | | appID입니다.
빈 값 허용: True
|
| extend.measurement | array | | source 출처입니다.
빈 값 허용: True
|
| extend.loggingIndex | string | | 로그 인덱스입니다.
빈 값 허용: True
|
| extend.ifAiCreate | boolean | | AI 생성 파싱 규칙 여부입니다.
빈 값 허용: True
|
| extend.aiTargetStructure | string | | AI 추출 내용입니다.
빈 문자열 허용: True
빈 값 허용: True
|
| extend.exampleSource | string | | 예시 소스입니다.
빈 문자열 허용: True
빈 값 허용: True
|
| extend.exampleType | string | | 예시 유형입니다.
빈 문자열 허용: True
빈 값 허용: True
|
매개변수 추가 설명¶
동시 수정 보호¶
먼저 /api/v1/pipeline/<pl_uuid>/get를 호출하여 현재 설정과 configVersion을 읽은 다음, 기존 수정 매개변수에 configVersion을 추가하여 제출하는 것이 좋습니다. 이 인터페이스는 configVersion만 제출하는 부분 업데이트 인터페이스가 아니므로, name, type, category, content 등 필수 매개변수는 계약에 따라 제공해야 합니다.
configVersion은 선택 양의 정수입니다. 미지정 시 기존 호출과 호환되지만 버전 번호 충돌 검사는 활성화되지 않습니다. 버전이 일치하고 설정이 실제로 변경된 경우 이전 설정을 보관하고 새 설정 버전을 반환하며, 동일한 설정을 반복 저장하면 버전이 생성되지 않습니다. 409 / ft.PipelineConfigVersionConflict를 수신하면 설정을 다시 읽고 비교한 뒤 확인 후 제출해야 하며, 다른 사용자의 수정을 자동으로 덮어쓸 수 없습니다.
예시 요청 본문: {"name":"demo","type":"local","category":"logging","content":"YWRkX2tleShjaXR5LCAic2hhbmdoYWkiKQ==","testData":"W10=","source":["nginx"],"configVersion":3}.
응답 및 재시도¶
성공 응답의 content는 현재 Pipeline 객체이며, configVersion, configVersionAt, configVersionOperator, configVersionSource, configVersionAction, configVersionSourceInfo를 포함합니다. 시간은 Unix 초 단위 타임스탬프입니다. content가 {"confirm":["logging"]}이면 기본 교체에 확인이 필요하며 이번 수정은 아직 완료되지 않았음을 의미합니다. isForce는 기본 교체에만 사용되며, 이름/source 또는 버전 충돌 검사를 건너뛰지 않습니다.
content와 testData 요청 필드는 모두 Base64 인코딩입니다. 일반 OpenAPI 수정에서는 testData가 디코딩 후 빈 값 또는 JSON 배열이어야 한다는 제약이 유지됩니다. 타임아웃 후에는 무조건 반복 제출하지 말고 먼저 현재 설정을 조회하여 쓰기 결과를 확인해야 합니다.
요청 예시¶
curl 'https://openapi.guance.com/api/v1/pipeline/pl_xxxx32/modify' \
-H 'DF-API-KEY: <DF-API-KEY>' \
-H 'Content-Type: application/json;charset=UTF-8' \
--data-raw '{"name":"test_modify","category":"logging","asDefault":0,"content":"YWRkX2tleShjaXR5LCAic2hhbmdoYWkiKQ==","testData":"W3sibGV2ZWwiOiJpbmZvIiwibXNnIjoiSFRUUCJ9XQ==","source":["nsqlookupd"]}' \
--compressed
응답¶
{
"code": 200,
"content": {
"asDefault": 0,
"category": "logging",
"content": "YWRkX2tleShjaXR5LCAic2hhbmdoYWkiKQ==\n",
"createAt": 1678026470,
"creator": "xxx",
"deleteAt": -1,
"extend": {},
"id": 86,
"isSysTemplate": 0,
"name": "test_modify",
"source": [],
"status": 0,
"testData": "W10=\n",
"updateAt": 1678026808.95266,
"updator": "xx",
"uuid": "pl_xxxx32",
"workspaceUUID": "wksp_xxxx32",
"configVersion": 4,
"configVersionAt": 1788800200,
"configVersionOperator": "acnt_example",
"configVersionSource": "openapi",
"configVersionAction": "modify",
"configVersionSourceInfo": {}
},
"errorCode": "",
"message": "",
"success": true,
"traceId": "TRACE-1EA80DD4-EB2C-4A9B-A146-D00606CC50E0"
}