Splunk 대 Kusto 참고 자료

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

구조 및 개념

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

개념 Splunk Kusto 의견
배포 단위 cluster cluster Kusto는 임의 클러스터 간 쿼리를 허용합니다. 스플렁크는 그렇지 않습니다.
데이터 캐시 버킷 캐싱 및 보존 정책 데이터에 대한 기간 및 캐싱 수준을 제어합니다. 이 설정은 쿼리 성능 및 배포 비용에 직접적인 영향을 줍니다.
데이터의 논리적 파티션 인덱스 데이터베이스 데이터를 논리적으로 분리할 수 있습니다. 두 구현 모두는 이러한 파티션에서 합집합(union)과 조인(join)을 허용합니다.
구조적 이벤트 메타데이터 해당 없음 테이블 Splunk는 이벤트 메타데이터의 개념을 검색 언어에 노출하지 않습니다. Kusto 로그에는 열이 있는 테이블의 개념이 있습니다. 각 이벤트 인스턴스가 한 행에 매핑됩니다.
레코드(record) event row 용어 변경에만 해당
record 특성 필드(field) Kusto에서 이 설정은 테이블 구조의 일부로 미리 정의됩니다. Splunk에서는 각 이벤트마다 자체의 필드 집합이 있습니다.
types 데이터 형식 데이터 형식 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's는 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에서는 또는 projectextend 일부로 사용됩니다.
(2) Splunk에서 함수는 연산자를 eval 사용하여 호출됩니다. Kusto에서는 연산자 where 에서 사용할 수 있습니다.

연산자

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

참고

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

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

제품 연산자 예제
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)

필터

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

제품 연산자 예제
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 개 행을 반환합니다.

제품 연산자 예제
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

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

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

제품 연산자 예제
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 연산자는 스칼라 함수 및 산술 연산자만 지원합니다.

제품 연산자 예제
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")

이름 바꾸기

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

제품 연산자 예제
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 동일하고 더 많은 작업을 수행하는 연산자가 있습니다.

제품 연산자 예제
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project Office_Hub_OHubBGTaskError
| project exception, state

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

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

집계

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

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

Join

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

제품 연산자 예제
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

정렬

Splunk에서 오름차순으로 정렬하려면 연산자를 reverse 사용해야 합니다. 또한 Kusto는 시작 또는 끝에 null을 배치할 위치 정의도 지원합니다.

제품 연산자 예제
Splunk sort Event.Rule=120103
| sort Data.Hresult
| reverse
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

다중값 확장

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

제품 연산자 예제
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

결과 패싯, 흥미로운 필드

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

제품 연산자 예제
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() 레코드가 선택된 순서를 되돌릴 수 있습니다.

제품 연산자 예제
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