스플렁크 튜토리얼 3부를 진행해 보겠습니다!
Lookup / 룩업
splunk에는 lookup 이라는 개념이 있습니다. 룩업은 보조 데이터입니다. 원본 데이터를 보조할 때 사용됩니다. 직접 보면 좀 더 이해가 잘 될겁니다.
튜토리얼 데이터를 다운로드 하면서 같이 받았던 Prices.csv.zip 의 압축을 해제합니다. 압축을 해제하면 prices.csv라는 코드 데이터가 나옵니다. (여기서 다운)
productId | product_name | price | sale_price | Code |
DB-SG-G01 | Mediocre Kingdoms | 24.99 | 19.99 | A |
DC-SG-G02 | Dream Crusher | 39.99 | 24.99 | B |
FS-SG-G03 | Final Sequel | 24.99 | 16.99 | C |
제품 id, 제품 명, 가격, 세일 가격, 코드가 적혀있습니다. 원본 데이터의 제품 상세정보를 확인할 수 있는 데이터입니다. 원본 데이터에서 부족한 내용을 보조해줄 때 사용합니다.
우리가 데이터를 사용할 때는 한 이벤트에 모든 정보가 들어있지 않습니다. 그럴 때 데이터를 lookup으로 만들어서 원본 데이터와 같이 활용하게 됩니다.
룩업은 2가지 종류가 있습니다. 룩업에 대해서는 나중에 좀 더 자세히 다루기로 하고 튜토리얼을 진행 하겠습니다. 그런게 있구나~ 정도만 알고 있으시면 됩니다.
- csv lookup : 튜토리얼에서 사용할 방식
- kvstore lookup
이 lookup을 활용하기 위해서는 몇가지 과정이 필요합니다. 룩업 파일 업로드 -> 권한 설정 -> 룩업 정의 -> 권한 설정
룩업 파일 업로드 -> 권한 설정
우선 해당 파일을 splunk 서버에 업로드 해야합니다.
설정 -> 룩업 -> 룩업 테이블 파일 -> 새 룩업 테이블 파일 -> 파일 선택 -> 저장 -> 권한 설정



- 대상 앱 : search – 해당 룩업을 저장할 앱 위치(앱에 대한 개념이 필요하므로 지금은 넘어갑니다.)
- 룩업 파일 업로드 : Browse 선택 -> prices.csv 선택
- 대상 파일 이름 : prices.csv (선택한 룩업 파일을 splunk에 어떤 이름의 파일로 저장할지 지정)

권한 설정 : 모든 앱 -> 저장 (역할은 자동 저장됨)
splunk는 기업용 솔루션이기 때문에 모든 지식 객체에 권한을 설정해서 사용자를 나눌 수 있습니다. 내가 사용자를 나누지 않으려고 해도 기본적인 권한 설정이 있기 때문에 무슨 작업을 하던지 권한에 대한 설정을 잊으면 안됩니다.
지금 한 설정은 업로드한 lookup 파일을 모든 앱에서 접근할 수 있도록 설정한 겁니다.
룩업 정의 / lookup definition -> 권한 설정
룩업 파일은 업로드하는 것만으로는 충분하지 않습니다. 룩업 정의라는 설정을 해줌으로써 splunk 안에서 lookup을 좀 더 자유롭게 사용할 수 있습니다. (이 말은 룩업 정의를 안해도 사용할 수는 있다는 말입니다. 비추..)
설정 -> 룩업 -> 룩업 정의 -> 새 룩업 정의 -> 저장 -> 권한 설정



- 대상 앱 : search , 해당 룩업을 저장할 앱 위치(앱에 대한 개념이 필요하므로 지금은 넘어가자)
- 이름 : prices_lookup , 룩업 정의 이름으로 해당 이름으로 룩업을 사용하게 된다.
- 유형 : 파일 기반
- 룩업 파일 : prices.csv, 업로드한 lookup 파일을 선택
저장을 마치고 룩업 업로드 할 때와 같이 권한을 설정 해줍니다. (prices를 검색해서 잘 저장이 되었는지 확인)

이렇게 lookup 정의를 마치고 나면 splunk에서 해당 룩업을 검색해서 확인해 볼 수 있습니다.
앱 -> search & reporting -> 검색

| inputlookup prices_lookup
자동 룩업 / lookup automatic
룩업 정의까지 했다면 바로 사용이 가능합니다.
index=tutorial source="*access*" status=200 action=purchase
| where isnotnull(productId)
| table _time, clientip, productId, product_name, price, sale_price
product_name, price, sale_price에 데이터가 없는 것을 볼 수 있습니다. 여기에 lookup 데이터를 사용하면 이렇게 됩니다.
index=tutorial source="*access*" status=200 action=purchase
| where isnotnull(productId)
| table _time, clientip, productId, product_name, price, sale_price
| lookup prices.csv productId output product_name, price, sale_price
이렇게 lookup 데이터를 사용할 수 있습니다. 그러나 이렇게 사용할 경우 lookup 데이터를 매번 쿼리에서 붙여 줘야 한다는 불편함이 있습니다. 그래서 splunk에서는 룩업 데이터를 자동으로 붙여주는 설정을 할 수 있습니다. 그게 바로 자동 룩업 / lookup automatic입니다.
설정 -> 룩업 -> 자동룩업 -> 새 자동 룩업 -> 저장 -> 권한 설정

- 이름 : autolookup_price, 자동 룩업의 이름 – 자동 룩업이란 객체로 관리해야 하기 때문에 자동 룩업에도 이름이 필요합니다.
- 룩업 테이블 : prices_lookup , 사용할 룩업 선택 (저장한 룩업 정의 선택)
- 적용 대상 : access_combined_wcookie, 룩업을 사용할 원본 데이터
- sourcetype=access_combined_wcookie 데이터에 price_lookup을 자동으로 붙인다.
- 룩업 입력 필드 : 원본 데이터와 룩업 데이터의 동일 필드, 데이터에 조인 시킬 때 사용할 필드 값
- 룩업 출력 필드 : 사용할 룩업 필드, 룩업 데이터 중 사용할 필드들 선택

저장 후 마찬가지로 권한을 설정 해주고, 잘 저장이 되었나 확인합니다.
이제 잘 적용 되는지 확인 해봅니다. 자동으로 룩업을 붙여주는 거기 때문에 아까 사용한 쿼리문에서 lookup 구문을 빼고 다시 실행해 봅니다.
index=tutorial source="*access*" status=200 action=purchase
| where isnotnull(productId)
| table _time, clientip, productId, product_name, price, sale_price

lookup 구문을 뺐는데도 룩업이 잘 붙어서 나오는 것을 확인할 수 있습니다.
이렇게 splunk는 원본 데이터에 보조 데이터로 룩업을 사용하게 되고, 룩업은 사용에 따라서 자동으로 설정해서 사용할 수 있습니다.
마무리
룩업 데이터에 대한 개념은 스플렁크를 사용하다 보면 다시 헷갈리는 순간이 많이 옵니다. 그 때마다 조금씩 개념을 넓혀가며 이해하면 됩니다.
튜토리얼 3부는 lookup에 대한 간단한 사용과 설명이 이었습니다. 화이팅!
출처 – doc