다음을 통해 공유


Splunk 대 Kusto 핵심 정리

적용 대상: ✅Microsoft Fabric

이 문서는 Splunk에 익숙한 사용자가 Kusto 쿼리 언어를 학습하여 Kusto로 로그 쿼리를 작성할 수 있도록 지원하기 위한 것입니다. 두 항목을 직접 비교하여 주요 차이점과 유사성을 강조 표시하므로 기존 지식을 기반으로 빌드할 수 있습니다.

구조 및 개념

다음 표에서는 Splunk와 Kusto 로그 간의 개념과 데이터 구조를 비교합니다.

개념 Splunk Kusto 주석
배포 단위 클러스터 클러스터 Kusto는 임의의 클러스터 간 쿼리를 허용합니다. 스플렁크는 그렇지 않습니다.
데이터 캐시 buckets 캐싱 및 보존 정책 데이터의 기간 및 캐싱 수준을 제어합니다. 이 설정은 쿼리 성능 및 배포 비용에 직접적인 영향을 줍니다.
데이터의 논리적 파티션 index 데이터베이스 데이터를 논리적으로 분리할 수 있습니다. 두 구현 모두 이러한 파티션 간에 공용 구조체 및 조인을 허용합니다.
구조적 이벤트 메타데이터 N/A table Splunk는 이벤트 메타데이터의 개념을 검색 언어에 노출하지 않습니다. Kusto 로그에는 열이 있는 테이블의 개념이 있습니다. 각 이벤트 인스턴스는 행에 매핑됩니다.
기록 이벤트 용어만 변경합니다.
레코드 속성 분야 칼럼 Kusto에서 이 설정은 테이블 구조의 일부로 미리 정의됩니다. Splunk에서 각 이벤트에는 고유한 필드 집합이 있습니다.
유형 datatype datatype Kusto 데이터 형식은 열에 설정되어 있으므로 더 명시적입니다. 둘 다 JSON 지원을 포함하여 데이터 형식과 거의 동등한 데이터 형식 집합을 사용하여 동적으로 작업할 수 있습니다.
쿼리 및 검색 search query 개념은 기본적으로 Kusto와 Splunk 간에 동일합니다.
이벤트 수집 시간 시스템 시간 ingestion_time() Splunk에서 각 이벤트는 이벤트가 인덱싱된 시간의 시스템 타임스탬프를 가져옵니다. Kusto에서 ingestion_time() 함수를 통해 참조할 수 있는 시스템 열을 노출하는 ingestion_time이라는 정책을 정의할 수 있습니다.

Functions

다음 표에서는 Splunk 함수와 동일한 Kusto 함수를 지정합니다.

Splunk Kusto 주석
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() 또는 replace_regex() (1)
함수는 두 제품 모두에서 세 개의 매개 변수를 사용하지만 replace 매개 변수는 다릅니다.
substr substring() (1)
또한 Splunk는 1부터 시작하는 인덱스를 사용합니다. Kusto는 0부터 시작하는 인덱스를 표시합니다.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex Splunk에서 regex는 연산자입니다. Kusto에서는 관계형 연산자입니다.
searchmatch == Splunk searchmatch 에서 정확한 문자열을 검색할 수 있습니다.
random rand()
rand(n)
Splunk의 함수는 0에서 231-1 사이의 숫자를 반환합니다. Kusto는 0.0에서 1.0 사이의 숫자를 반환하거나 매개 변수가 제공된 경우 0에서 n-1 사이의 숫자를 반환합니다.
now now() (1)
relative_time totimespan() (1)
Kusto에서 Splunk에 해당하는 relative_time(datetimeVal, offsetVal)datetimeVal + totimespan(offsetVal)입니다.
예를 들어 search | eval n=relative_time(now(), "-1d@d")... | extend myTime = now() - totimespan("1d")로 변합니다.

(1) Splunk에서 함수는 연산자를 eval 사용하여 호출됩니다. Kusto에서는 extend 또는 project의 일부로 사용됩니다.
(2) Splunk에서 함수는 연산자를 eval 사용하여 호출됩니다. Kusto에서는 연산자 where 에서 사용할 수 있습니다.

운영자

다음 섹션에서는 Splunk 및 Kusto에서 다른 연산자를 사용하는 방법에 대한 예제를 제공합니다.

비고

다음 예제에서 Splunk 필드는 rule Kusto의 테이블에 매핑되고 Splunk의 기본 타임스탬프는 Logs Analytics ingestion_time() 열에 매핑됩니다.

Splunk에서 키워드를 search 생략하고 따옴 지정되지 않은 문자열을 지정할 수 있습니다. Kusto에서 각 쿼리를 find시작해야 합니다. 따옴표가 지정되지 않은 문자열은 열 이름이며 조회 값은 따옴표 붙은 문자열이어야 합니다.

제품 Operator 예시
Splunk search search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h
Kusto find find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h)

Filter

Kusto 로그 쿼리는 filter가 적용된 테이블 형식 결과 집합에서 시작합니다. Splunk에서 필터링은 현재 인덱스의 기본 작업입니다. Splunk에서 연산자를 where 사용할 수도 있지만 권장하지는 않습니다.

제품 Operator 예시
Splunk search Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h
Kusto where Office_Hub_OHubBGTaskError
| where Session_Id == "c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time() > ago(24h)

검사를 위해 n 개의 이벤트 또는 행 가져오기

Kusto 로그 쿼리는 take 별칭으로 limit를 지원합니다. Splunk에서 결과가 정렬되면 head 첫 번째 n 개의 결과를 반환합니다. Kusto limit 에서는 순서가 지정되지 않지만 발견된 첫 번째 n 개 행을 반환합니다.

제품 Operator 예시
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

필드 또는 열로 정렬된 첫 번째 n 개 이벤트 또는 행 가져오기

아래쪽 결과의 경우 Splunk에서 .를 사용합니다 tail. Kusto에서는 .를 사용하여 asc순서 방향을 지정할 수 있습니다.

제품 Operator 예시
Splunk head Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Kusto top Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

새 필드 또는 열을 사용하여 결과 집합 확장

Splunk에는 함수가 eval 있지만 Kusto의 연산자 eval 와 비교할 수 없습니다. Splunk의 eval 연산자와 Kusto의 extend 연산자는 스칼라 함수와 산술 연산자만 지원합니다.

제품 Operator 예시
Splunk eval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Kusto extend Office_Hub_OHubBGTaskError
| extend state = iff(Data_Exception == 0,"success" ,"error")

Rename

Kusto는 연산자를 project-rename 사용하여 필드 이름을 바꿉니다. 연산자 project-rename 에서 쿼리는 필드에 미리 빌드된 인덱스를 활용할 수 있습니다. Splunk에는 rename 동일한 작업을 수행하는 연산자가 있습니다.

제품 Operator 예시
Splunk rename Event.Rule=330009.2
| rename Date.Exception as execption
Kusto project-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

결과 및 프로젝션 서식 지정

Splunk는 이 table 명령을 사용하여 결과에 포함할 열을 선택합니다. Kusto에는 project 동일하고 더 많은 작업을 수행하는 연산자가 있습니다.

제품 Operator 예시
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project Office_Hub_OHubBGTaskError
| project exception, state

Splunk는 이 fields - 명령을 사용하여 결과에서 제외할 열을 선택합니다. Kusto에는 project-away 동일한 작업을 수행하는 연산자가 있습니다.

제품 Operator 예시
Splunk fields - Event.Rule=330009.2
| fields - quota, hightest_seller
Kusto project-away Office_Hub_OHubBGTaskError
| project-away exception, state

Aggregation

사용할 수 있는 집계 함수 요약 목록을 참조하세요.

Splunk 운영자 Splunk 예제 Kusto 연산자 Kusto 예제
stats search (Rule=120502.*)
| stats count by OSEnv, Audience
summarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience
evenstats ...
| stats count_i by time, category
| eventstats sum(count_i) AS count_total by _time_
join T2
| join kind=inner (T1) on _time
| project _time, category, count_i, count_total

참여

Splunk의 join에는 상당한 제한이 있습니다. 하위 쿼리는 10,000개의 결과(배포 구성 파일에 설정됨)로 제한되며 제한된 수의 조인 버전을 사용할 수 있습니다.

제품 Operator 예시
Splunk join Event.Rule=120103* | stats by Client.Id, Data.Alias
| join Client.Id max=0 [search earliest=-24h Event.Rule="150310.0" Data.Hresult=-2147221040]
Kusto join cluster("OAriaPPT").database("Office PowerPoint").Office_PowerPoint_PPT_Exceptions
| where Data_Hresult== -2147221040
| join kind = inner (Office_System_SystemHealthMetadata
| summarize by Client_Id, Data_Alias)on Client_Id

정렬

기본 정렬 순서는 오름차순입니다. 내림차순을 지정하려면 필드 이름 앞에 빼기 기호(-)를 추가합니다. Kusto는 시작 또는 끝에 null을 넣을 위치 정의도 지원합니다.

제품 Operator 예시
Splunk sort Event.Rule=120103
| sort -Data.Hresult
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

다중값 확장

다중값 확장 연산자는 Splunk와 Kusto 모두에서 유사합니다.

제품 Operator 예시
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

결과 패싯, 주목할 만한 필드

Azure Portal의 Log Analytics에서 첫 번째 열만 노출됩니다. 모든 열은 API를 통해 사용할 수 있습니다.

제품 Operator 예시
Splunk fields Event.Rule=330009.2
| fields App.Version, App.Platform
Kusto facets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

중복 제거

Kusto에서 선택한 레코드의 순서를 되돌리는 데 사용할 summarize arg_min() 수 있습니다.

제품 Operator 예시
Splunk dedup Event.Rule=330009.2
| dedup device_id sortby -batterylife
Kusto summarize arg_max() Office_Excel_BI_PivotTableCreate
| summarize arg_max(batterylife, *) by device_id

타임차트

Kusto와 Splunk는 모두 연산자를 timechart 사용하여 시간이 지남에 따라 데이터를 시각화합니다. Splunk에서는 지정된 시간 간격 동안 데이터를 집계하고 다양한 통계 함수와 함께 사용할 수 있습니다. Kusto에서는 summarize 함수 및 bin 함수를 사용한 다음 시간 차트 렌더링 연산자를 사용하여 해당 값을 달성합니다.

제품 Operator 예시
Splunk timechart index=StormEvents
| where StartTime >= "2007-01-01" AND StartTime <= "2007-12-31" AND DamageCrops > 0
| bin span=7d StartTime
| stats count as EventCount by StartTime
| timechart span=7d count as EventCount
Kusto timechart StormEvents
| where StartTime between (datetime(2007-01-01) .. datetime(2007-12-31)) and DamageCrops > 0
| summarize EventCount = count() by bin(StartTime, 7d)
| render timechart