Exploring Splunk Exploring Splunk David Carasso 빅 데이터는 엄청난 비즈니스 가치를 가지고 있습니다. Splunk는 이러한 가치를 캐내는 데 최상의 도구입니다. Exploring Splunk 는 시스템 생성 데이터의 범람 속에서 어떻게 답을 찾아가고 잘 알려져 있지 않은 패턴을 찾아내는지 보여줍니다. 이 설명서는 Splunk 사용 방법을 빨리 익히도록 시각적 프레젠테이션 스타일로 작성되었습니다. Splunk 기초 사항을 먼저 마스터한 후에 실제 사용 환경에서 일어날 수 있는 문제들을 어떻게 창의적으로 해결하고, 빅 데이터에 숨겨진 보석들을 어떻게 찾아내는지 알아봅니다. Splunk의 Chief Mind인 David Carasso씨는 Splunk의 제3의 직원이었습니다. 검색 처리 언어(SPL), 동적 이벤트 및 소스 태깅, 자동 필드 추출, 트랜잭션 그룹화, 이벤트 어그리게이션, 타임스탬핑 등등 Splunk 코어에서 어려운 문제들을 혁신하고 시제품화하는 역할을 맡고 있습니다. 그는 Splunk를 이용한 작업과 관련하여 2개의 특허를 보유하고 있으며 캘리포니아 마린카운티에서 아내와 3명의 아이들과 살고 있습니다. CITO Research $25.00 US Exploring Splunk 검색 처리 언어(SPL) 프리미어 및 쿡북 작성: Splunk Chief Mind 'David Carasso'
Exploring Splunk SPL(검색 처리 언어) 입문서 및 설명서 David Carasso(Splunk의 Chief Mind) 저
Exploring Splunk (저자: David Carasso) Copyright 2012 by Splunk Inc. All rights reserved. 미국에서 인쇄됨 Splunk, Inc.는 내부 사용 또는 개인적인 용도로 이 책자의 항목을 복사 할 수 있는 권한을 부여합니다. Splunk, Inc.의 명시적인 서면 동의 없이 는 그 외의 사용 목적으로는 복사할 수 없습니다. CITO Research 발행, 1375 Broadway, Fl3, New York, NY 10018. 편집/분석: Dan Woods, Deb Cameron 카피에디터: Deb Cameron 제작 편집: Deb Gabriel 표지: Splunk, Inc. 그래픽: Deb Gabriel 초판: 2012년 4월 만반의 주의를 기울여 이 책을 제작했으나 발행자와 저자는 오류나 생 략 또는 이 책에 담긴 정보 사용에 따라 발생하는 손해에 대해 어떠한 책임도 지지 않습니다. 면책 조항 ISBN: 978-0-9894448-0-4; 0-9894448-0-5 이 책은 텍스트북 및 참고 서적으로만 사용되도록 작성되었습니다. 실 제 Splunk 소프트웨어 제품 사용은 이 책에 작성된 내용이 아니라 해 당 소프트웨어의 사용권 계약에 따라 이루어져야 합니다. Splunk 소프 트웨어 제품을 사용하는 방법에 대한 정보는 이 책이 아니라 해당 제품 과 함께 제공되는 설명서를 참조하십시오. 이 책에 포함된 정보의 정확성과 적시성을 보장하기 위해 최대한의 주의를 기울였지만 Splunk는 정보의 정확성과 적시성을 보증 또는 보장하지 않으며 이 책의 정보와 관련되거나 정보 사용으로 인한 결과에 대해 어떠한 책임도 지지 않습니다. Splunk의 기능에 대한 자세한 설명은 docs.splunk.com을 참조하시기 바랍니다.
목차 머리말 이 책에 대하여 이 책의 내용 규칙 감사의 말씀 i ii ii iii 1부: Exploring Splunk SPLUNK 소개 데이터 센터 복구 작업에 이용되는 Splunk 3 마케팅 부서에서 이용되는 Splunk 4 Splunk에 대한 접근 5 Splunk: 회사 및 개념 7 Splunk가 데이터센터의 머신 데이터를 관리하는 방식 8 운영 인텔리전스 9 운영 인텔리전스의 활용 11 2 데이터 가져오기 머신 데이터 기본사항 13 Splunk에서 읽을 수 있는 데이터의 유형 15 Splunk 데이터 소스 15 Splunk 다운로드, 설치 및 시작 15 인덱스를 위해 데이터 가져오기 17 Splunk의 데이터 인덱스 방식 이해 18 3 Splunk를 사용한 검색 검색 대시보드 23 SPL : 검색 처리 언어 27
파이프 27 내포된 AND 28 상위 사용자 28 필드 - 퍼센트 28 search 명령어 29 search 명령어 사용에 대한 도움말 30 하위 검색 30 4 SPL: 검색 처리 언어 결과 정렬 33 sort 33 결과 필터링 35 where 35 dedup 36 head 38 결과 그룹화 39 transaction 39 결과 보고 41 top 41 stats 43 chart 45 timechart 47 필드 필터링, 수정 및 추가 48 fields 49 replace 50 eval 51 rex 52 lookup 53 5 데이터 강화 Splunk를 사용하여 데이터 이해하기 55 필드 식별: 퍼즐 조각 살펴보기 56
데이터를 탐색하여 데이터의 범위 이해 58 보고 및 집계 준비 60 데이터 시각화 65 시각자료 만들기 65 대시보드 만들기 67 경고 만들기 68 마법사를 통한 경고 만들기 68 관리자를 사용한 경고 조절 71 경고에 대한 작업 사용자 지정 74 경고 관리자 74 II부: 방법 6 모니터링 및 경고 방법 모니터링 방법 79 동시 사용자 모니터링 79 비활성 호스트 모니터링 80 분류된 데이터에 대한 보고 81 오늘의 상위 값을 지난 달의 상위 값과 비교 82 1시간에 10% 감소한 측정값 찾기 84 주간 결과를 차트로 작성 85 데이터의 급등 부분 식별 86 시간 기반 차트 압축 88 XML 또는 JSON 내 필드에 대한 보고 88 이벤트에서 필드 추출 89 경고 방법 90 사전 정의된 부하 조건에 걸렸을 때 이메일 경고 발송 90 웹 서버 성능이 느려질 경우 경고 발생 91 불필요한 EC2 인스턴스 종료 91 모니터링을 경고로 변환 92
7 이벤트 그룹화 소개 95 방법 97 필드 이름 통합 97 불완전한 트랜잭션 찾기 97 트랜잭션 내의 시간 계산 99 최신 이벤트 찾기 100 반복 이벤트 찾기 101 트랜잭션 간 시간 102 특정 트랜잭션 찾기 104 다른 이벤트와 가까이 있는 이벤트 찾기 107 이벤트 후의 이벤트 찾기 108 그룹 그룹화 109 8 룩업 테이블 소개 113 lookup 113 inputlookup 113 outputlookup 114 추가 정보 114 방법 114 기본 룩업 값 설정 114 역방향 룩업 사용 114 2계층 룩업 116 여러 단계 룩업 사용 116 검색 결과에서 룩업 테이블 생성 117 Appending Results to Lookup Tables 117 대용량 룩업 테이블 사용 118 룩업 값과 결과 비교 120
룩업 일치 항목 제어 122 IP 일치 122 Matching with Wildcards 123 부록 A: 머신 데이터 기본사항 애플리케이션 로그 126 웹 액세스 로그 126 웹 프록시 로그 127 통화 내역 기록(CDR) 127 클릭스트림 데이터 127 메시지 대기열 128 패킷 데이터 128 구성 파일 128 데이터베이스 감사(Audit) 로그 및 테이블 128 파일 시스템 감사(Audit) 로그 128 관리 및 로깅 API 129 OS 메트릭, 상태 및 진단 명령어 129 기타 머신 데이터 소스 129 부록 B: 대소문자 구분 부록 C: 주요 명령어 부록 D: 주요 리소스 부록 E: Splunk 빠른 참조 가이드 개념 137 개요 137 이벤트 137 Source 및 Sourcetype 138 Host 138 인덱스 138 필드 138 태그 138
Event Type 139 보고서 및 대시보드 139 앱 139 권한/사용자/역할 139 트랜잭션 139 Forwarder/인덱서 140 SPL 140 하위 검색 141 상대적 시간 수정자 141 공통 검색 명령 142 검색 최적화 142 검색 예제 143 EVAL 함수 146 공통 STATS 함수 151 정규식 152 공통적인 SPLUNK STRPTIME 함수 153
머리말 Splunk Enterprise Software( Splunk )는 현재까지 경험할 수 있는 가장 강력한 데이터 검색 및 탐색 도구라고 할 수 있습니다. 이 책은 Splunk 자체뿐만 아니라 Splunk를 사용해 수행할 수 있는 작업을 소개하기 위 해 작성되었습니다. 또한 Splunk를 사용해 창의적인 작업을 수행하기 위한 출발점으로 이 책을 활용하실 수도 있습니다. 시스템 관리자와 네트워크 관리자 그리고 보안 전문가가 Splunk를 사 용하는 사례가 빈번하지만, 이러한 담당자들만 사용할 수 있도록 국한 된 것은 아닙니다. 기업의 데이터에는 Splunk로 활용할 수 있는 엄청 난 비즈니스 가치가 숨어 있습니다. 이 책은 오라일리(O'Reilly) 출판사 의 일반적인 기술 관련 서적의 독자 외에도 마케팅 전문가는 물론 빅 데이터 및 운영 인텔리전스에 관심이 있는 모든 사람을 위해 디자인되 었습니다. 이 책에 대하여 이 책의 주요 목표는 Splunk가 무엇인지를 알고 Splunk를 사용하는 방 법을 빠르게 이해할 수 있도록 도움을 주는 것입니다. 이 책에서는 이 러한 목표를 달성하기 위해 Splunk SPL (검색 처리 언어)의 가장 중요 한 부분을 설명합니다. Splunk는 기술자와 비즈니스 전문가 모두에게 여러 측면에서 도움이 됩니다. Splunk를 한 번에 모두 배울 수 있다고 생각하지 마시기 바랍니다. Splunk는 간단한 도구지만 다양한 일을 할 수 있는 야전용 다용도 나이프와도 같습니다. 이제 다음과 같은 질문이 떠오르실 것입니다. '이 책이 어떻게 도움이 될까?' 간단하게 말씀드리면 이 책에서는 Spunk를 사용해 무엇을 할 수 있고, 어디에서 궁금한 내용을 찾아볼 수 있는지를 알 수 있습니다. 하지만 이미 많은 Splunk 설명서가 있지 않나요? 예 그렇습니다. http://docs.splunk.com에 보면 Splunk 시스템에 대한 자세한 설명 과 함께 다양한 설명서가 있습니다. http://splunkbase.com에는 질문과 답변을 검색할 수 있는 데이터베 이스가 있습니다. 하지만 이러한 정보는 Splunk에 대해 사전 지식 이 있고 일반적인 문제를 해결하려는 경우에 도움이 됩니다. 이 책은 이 두 가지 수준의 설명서 사이에 속합니다. 이 책에서는 Splunk 의 가장 중요한 부분에 대해 기본적으로 설명하고 해당 설명과 더불어 실무에서 접하게 되는 문제에 대한 해결책을 함께 제공합니다. i
이 책의 내용 규칙 1장에서는 Splunk가 무엇이고 어떻게 도움이 되는 지에 대해 설명합 니다. 2장에서는 Splunk를 다운로드하고 시작하는 방법에 대해 설명합니다. 3장에서는 검색 사용자 인터페이스와 Splunk를 사용한 검색에 대해 설 명합니다. 4장에서는 가장 일반적으로 사용되는 SPL 부분에 대해 설명합니다. 5장에서는 정보를 활용하여 데이터를 시각화하고 강화하는 방법에 대 해 설명합니다. 6장에서는 가장 일반적인 모니터링 및 경고 방법에 대해 설명합니다. 7장에서는 이벤트 그룹화를 통해 해결할 수 있는 문제 유형에 대해 설 명합니다. 8장에서는 룩업 테이블을 사용하여 일반적인 문제를 해결하는 여러 가 지 방법에 대해 설명합니다. 1부(1장 - 5장)를 Splunk에 대한 속성 과정이라고 한다면 2부(6장 - 8 장)는 Splunk를 사용하여 일반적이고 흥미로운 문제를 해결하고 1부 에서 설명한 기능을 모두 종합해 고급 작업을 수행하는 방법을 보여줍 니다. 이러한 방법들을 검토하고 따라해보면, 여러분이 겪고 있는 다양 한 문제점 해결에 Splunk를 어떻게 적용할 수 있을지 아이디어를 얻을 수 있을 것입니다. 책 끝 부분의 부록에는 몇 가지 유용한 정보가 들어 있습니다. 부록 A 에서는 빅 데이터의 가능성과 다양성을 파악하는 데 필요한 머신 데이 터의 기본사항에 대한 개요를 제공합니다. 부록 B에서는 Splunk 검색 에서 대소문자가 어떻게 구분되는지를 테이블로 보여줍니다. 부록 C에 서는 Splunk를 사용한 가장 일반적인 검색 실행(Splunk를 사용하여 파 악)에 대해 간략하게 설명합니다. 부록 D에서는 Splunk에 대해 보다 자 세히 알아보는 데 도움이 되는 최고의 리소스를 소개합니다. 부록 E는 가장 널리 사용되는 교육용 설명서인 Splunk 참조 카드 버전으로 특별 히 디자인되었습니다. 이 책에서는 특정 요소를 나타내기 위해 다양한 글꼴을 사용했습니다. UI 요소는 굵게 표시됩니다. 명령어와 필드 이름은 일정한 너비로 표시됩니다. X 메뉴에서 Y 옵션을 선택해야 하는 경우 간단하게 X» Y를 선택합니 다 라고 표시됩니다.
감사의 말씀 시간과 재능을 나누어주신 Splunk 여러분의 도움이 없었더라면 이 책 은 세상에 나오지 못했을 것입니다. 원고 초안을 주의깊게 검토하고 훌 륭하게 교정해 주신 Ledion Bitincka, Gene Hartsell, Gerald Kanapathy, Vishal Patel, Alex Raitz, Stephen Sorkin, Sophy Ting 그리고 Steve Zhang 박사님과 인터뷰 시간을 내주신 Maverick Garner에게도 감사 드리며 그 밖에 많은 도움을 주신 Jessica Law, Tera Mendonca, Rachel Perkins, 및 Michael Wilde에게도 고마운 마음을 전합니다. iii
1부 Exploring Splunk
SPLUNK 소개 Splunk는 머신 데이터, 즉 시스템에서 대량으로 방출하지만 거의 효과 적으로 사용되지 않는 데이터를 분석하기 위한 강력한 플랫폼입니다. 머신 데이터는 기술 세계에서는 이미 중요한 가치를 가지고 있으며 비 즈니스 세계에서도 그 중요성이 점차 확대되고 있습니다. (머신 데이터 에 대해 자세히 알아보려면 부록 A를 참조하십시오.) Splunk의 기능과 다양성을 빠르게 이해하는 수단으로 데이터 센터 시 나리오와 마케팅 부서 시나리오를 제공합니다. 데이터 센터 복구 작업에 이용되는 Splunk 수요일 오전 2시입니다. 전화 벨이 울립니다. 상사의 전화로 웹 사이트 가 다운되었다고 합니다. 왜 다운되었을까요? 웹 서버, 애플리케이션, 데이터베이스 서버, 전체 디스크 또는 부하 분산기 중 무엇이 잘못되었 을까요? 상사는 당장 고치라고 소리를 지릅니다. 밖에는 비가 내리고 있습니다. 어떻게 해야할지 모르겠습니다. 안심하세요. 어제 Splunk를 구축했습니다. Splunk를 시동합니다. 한 곳에서 모든 웹 서버, 데이터베이스, 방화벽, 라우터 그리고 부하 분산기의 로그 파일은 물론 기타 모든 장치, 운영 체제 또는 관심이 있는 에플리케이션의 구성 데이터 파일을 검색할 수 있습니다. (여러 군데의 데이터센터나 클라우드 제공업체에 분산되어 있어도 문제 없습니다.) 웹 서버 트래픽의 그래프를 보면 언제 문제가 발생했는지 알 수 있습 니다. 오후 5:03분에 웹 서버의 오류가 폭증했습니다. 오류가 적힌 위 의 10페이지를 확인합니다. 홈 페이지에는 문제가 없습니다. 검색 페이 지에도 문제가 없습니다. 아! 장바구니가 문제군요. 5:03분부터 해당 페 이지에 대한 모든 요청이 오류를 일으켰습니다. 이 오류는 판매에 지장 을 주고 고객을 쫓아내는 격이기 때문에 재정적 손해를 유발하며 반드 시 해결해야 합니다. 장바구니는 데이터베이스에 연결된 전자상거래 서버에 의존한다는 것 을 알고 있습니다. 로그를 보니 데이터베이스는 가동 중입니다. 잘되었 군요. 전자상거래 서버 로그를 살펴보겠습니다. 오후 5:03분에 전자상 거래 서버에서 데이터베이스 서버에 연결할 수 없다는 메시지를 보내 기 시작합니다. 그런 다음 구성 파일의 변경 사항을 검색하고 누군가가 네트워크 설정을 변경했다는 것을 알아차렸습니다. 더 자세히 들여다 보니 잘못 변경되었군요. 설정을 변경한 사람에게 연락하여 변경 사항 을 롤백하도록 합니다. 시스템이 다시 작동하기 시작합니다. 신속하게 검색할 수 있는 중앙 인덱스로 Splunk가 모든 관련 정보를 수 집하기 때문에 이 모든 작업이 채 5분도 걸리지 않았습니다. 3
Exploring Splunk 마케팅 부서에서 이용되는 Splunk 대형 소매업체의 프로모션 부서에서 일하고 있습니다. 수신 트래픽 발 생량을 최적화하기 위해 검색 엔진 최적화 및 제품에 대한 프로모션을 조정했습니다. 지난 주에는 데이터센터 직원이 (지난 시간, 날, 주에 해 당하는 기간 동안) 회사 사이트를 찾기 위해 사용된 모든 검색어를 보 여주는 새 Splunk 대시보드를 설치했습니다. 지난 몇 시간 동안 그래프를 보면 20분 전에 트래픽이 급격히 증가했 다는 것을 알 수 있습니다. 회사 이름과 최신 제품에 대한 검색이 크게 증가했습니다. Splunk를 통해 최근 많이 엑세스된 URL에 대한 보고서 를 조회해 본 결과, 한 연예인이 제품에 대해 트윗하고 회사 홈 페이지 를 연결했다는 것을 알게 되었습니다. 가장 많은 사람이 방문한 페이지의 성능을 보여주는 다른 그래프를 확 인합니다. 검색 페이지에 과부하가 걸려 느려지고 있습니다. 많은 사람 이 회사 사이트를 방문했지만 원하는 제품을 찾을 수 없어서 모두 검색 기능을 사용하고 있습니다. 사이트의 콘텐츠 관리 시스템에 로그인하여 홈 페이지 중앙에 신제품 에 대한 프로모션 광고를 게시합니다. 그런 다음 돌아가서 상위 페이지 를 확인합니다. 검색 트래픽 감소가 시작되고 신제품 페이지에 대한 트 래픽이 증가하고 이에 따라 장바구니에 대한 트래픽도 증가하기 시작 합니다. 장바구니에 추가된 상위 10개 제품과 구매한 상위 10개 제품 을 확인합니다. 신제품이 리스트의 가장 위에 있습니다. 홍보부에 이에 대한 후속 조치를 취하라는 메모를 보냅니다. 수신 트래픽은 이제 정확 히 회사가 원하는 대로 오류 대신 판매로 전환되고 있습니다. Splunk 덕분에 예측할 수 없던 기회를 최대한 활용할 수 있게 되었습니다. 다 음 단계는 해당 제품의 재고가 충분한지 확인하는 것입니다. 행복한 고 민입니다. 이 두 예를 보면, Splunk를 통해서 머신 데이터에 발생하는 문제를 자 세히 파악할 수 있다는 것을 알 수 있습니다. Splunk는 또한 과거 추세 를 보여주고 여러 출처의 정보를 연결하며 그 밖에 수천 가지 방법으 로 도움을 줍니다. 4
1장: Splunk 소개 Splunk에 대한 접근 Splunk를 사용하여 질문에 답변하다 보면 작업을 세 단계로 나눌 수 있 다는 것을 알 수 있습니다. 첫째, 질문에 답변할 수 있는 데이터를 식별합니다. 둘째, 식별한 데이터를 질문에 답변할 수 있는 결과로 변환합니다. 셋째, 답변을 보고서, 대화형 차트 또는 그래프로 표시하여 광범위 한 관련자들이 이해할 수 있도록 만듭니다. 답변하고 싶은 질문부터 시작하십시오. 시스템에 왜 장애가 발생했습 니까? 최근에 왜 이렇게 느려집니까? 사람들이 웹 사이트의 어느 부분 에서 문제를 겪고 있습니까? Splunk에 정통하게 되면 어떤 유형의 데 이터와 검색결과가 이러한 질문에 답변하는 데 도움이 되는지 보다 분 명하게 알 수 있습니다. 이 책을 통해 Splunk를 완전 정복할 수 있는 과 정을 속성으로 진행할 수 있습니다. 그럼 다음에는 다음과 같은 질문이 나오게 됩니다. 데이터가 문제의 해 답을 제공할 수 있습니까? 종종 분석을 시작할 때는 데이터를 통해 무 엇을 알 수 있는지 모릅니다. 하지만 Splunk는 데이터를 탐색하고 파악 하는 강력한 도구입니다. 가장 일반적인 값이나 가장 예외적인 값을 찾 을 수 있습니다. 통계를 활용하여 데이터를 요약하고, 예를 들어 레코 드 시스템에 걸쳐 온라인 호텔 예약을 하는 모든 이벤트를 트랜잭션으 로 그룹화할 수 있습니다. 전체 데이터 세트로 시작하는 워크플로를 생 성한 후 관련이 없는 이벤트를 필터링하여 제외하고 나머지 이벤트를 분석합니다. 그런 다음 몇 가지 단계를 거쳐 질문에 답변하는 데 필요 한 데이터만 남을 때까지 외부 소스로부터 일부 정보를 추가하기도 합 니다. 그림 1은 기본적인 Splunk 분석 프로세스를 보여줍니다. 5
Exploring Splunk III sourcetype syslog syslog other-source syslog syslog syslog other-source syslog other-source <events > ERROR ERROR WARNING WARNING ERROR 12.1.1.002 12.1.1.140 12.1.1.140 12.1.1.002 12.1.1.43 <fields...> 그림 1-1. Splunk 사용 6
1장: Splunk 소개 Splunk: 회사 및 개념 대부분의 사람들은 Splunk 고객들이 항상 접하게 되는 복잡하고 반복 적인 문제를 해결하는 Splunk의 장점에 열광합니다. Splunk의 이야기 는 2002년 공동설립자 Erik Swan과 Rob Das가 다음 도전을 찾아나섰 을 때 시작되었습니다. 이미 두 개의 벤처 기업을 함께 시작한 Erik과 Rob은 새로운 벤처 아이디어를 찾으면서 자신들의 문제에 대해 다른 회사와 이야기를 나누기 시작했습니다. Erik과 Rob은 잠재 고객들에게 다음과 같이 물었습니다. 귀사의 인프 라 문제를 어떻게 해결하고 있습니까? Erik과 Rob은 IT 문제를 해결하 고 전통적인 방법으로 데이터를 검색하려는 실무자의 경험에 대해 수 도 없이 들었습니다. 데이터가 너무 넓게 분포되어 있어서 한 데 모아 서 분석하기 어렵다는 고충이었습니다. 모든 사람이 문제를 해결하기 위해 로그 파일을 손으로 분석하고 때로는 스크립트를 작성했습니다. 이렇게 사내에서 작성된 스크립트는 조악했으며 스크립트를 작성하고 문제 해결에 경험이 있는 사람이 회사를 떠나면서, 이후 문제를 해결하 려는 모든 시도는 손가락질, 책임 전가, 스크립트 재작성으로 이어지고 IT 부서의 지원에 크게 의존할 수 밖에 없는 상황이 발생했습니다. 이 실무자들은 Splunk의 설립자들에게 인프라 문제를 해결하는 것은 어 두컴컴한 동굴(데이터센터) 속을 (오래된 스크립트와 로그 관리 기술만 으로) 방향 감각 없이 느릿느릿하게 기어다니는 것과 같다고 말했습니 다. 요약하자면, 동굴 탐험과 같았습니다. Splunk라는 회사 이름은 이 로부터 탄생했습니다. 디지털 동굴 탐험의 어려움 속에서 이들에게 유일한 대안은 다른 회사 들도 유사한 문제가 있어서 해결 방법을 온라인으로 게시했는지 웹을 검색하는 것뿐이었습니다. Splunk 설립자들은 사람들이 이렇게 광범위 하게 인식되고 있는 문제에 비용을 지출하고 있지만 아직 누구도 문제 해결에 성공하지 못했다는 데 놀랐습니다. Erik과 Rob은 다음과 같이 자문했습니다. 왜 IT 데이터는 Google 검색처럼 쉽고 직관적으로 검 색할 수 없을까? Splunk의 첫 번째 비전은 데이터센터나 대형 컴퓨팅 또는 네트워킹 환 경을 실행하고 문제를 해결하는 데 필요한 데이터를 훨씬 더 쉽게 조 합하고 분석할 수 있도록 만드는 것이었습니다. Splunk의 미션은 IT 전 문가가 문제 해결을 위해 자체적으로 사용하던 힘든 방식에 웹 검색의 편리함을 결합하는 것이었습니다. 7
Exploring Splunk Erik과 Rob은 자금을 모아 2005년 LinuxWorld 에서 Splunk의 첫 번째 버전을 선보였습니다. 제품은 크게 인기를 끌었으며 무료로 다운로드 할 수 있어서 즉시 널리 퍼졌습니다. 일단 다운로드되면 Splunk는 상상 할 수 없는 광범위한 고객의 문제를 해결하면서 부서 간 또는 회사 사 이에 퍼져나가기 시작했습니다. 사용자들은 경영진에게 Splunk 구입을 요청할 때, 이미 Splunk를 사용하여 단시간에 문제를 해결했던 경험을 가지고 있었습니다. 초기에는 IT와 데이터센터 관리자가 기술적인 문제를 해결하는 데 도움 이 되는 것으로 인식되었던 Splunk는 이제 모든 종류의 비즈니스 사용 자가 전통적인 데이터베이스보다 훨씬 더 포괄적이고 훨씬 덜 노동 집 약적인 방법으로 데이터를 검색, 수집 및 정리할 수 있기 때문에 이들에 게도 아주 유용한 플랫폼으로 성장했습니다. 그 결과 조직에서 전에 없 이 새로운 비즈니스 통찰력 및 운영 인텔리전스를 보유하게 되었습니다. Splunk가 데이터센터의 머신 데이터를 관리하는 방식 Splunk가 장악한 첫 번째 장소는 당연히 머신 데이터로 넘쳐나는 데이 터센터였습니다. Splunk는 시스템 관리자, 네트워크 엔지니어, 애플리 케이션 관리자 사이에서 머신 데이터를 신속하게 파악하고 머신 데이 터의 유용성을 높일 수 있는 엔진으로 유명세를 떨쳤습니다. 하지만 이 들이 Splunk를 그렇게 좋아한 이유는 무엇일까요? 한 가지 예를 살펴 보면 Splunk가 초기에 인기를 끌었던 이유를 알 수 있을 뿐만 아니라 Splunk가 비즈니스 세계에 제공하는 더 큰 가치의 중심이 되는 머신 데 이터의 본질을 이해하는 데도 도움이 됩니다. 대부분의 컴퓨팅 환경에서 많은 시스템들이 서로 종속되어 있습니다. 무언가 잘못되면 모니터링 시스템에서 경고를 보냅니다. 예를 들어, 한 사이트의 주요 웹 페이지는 웹 서버, 애플리케이션 서버, 데이터베이스 서버, 파일 시스템, 부하 분산기, 라우터, 애플리케이션 가속기, 캐시 시 스템 등에 종속되어 있습니다. 이들 시스템 중에 하나, 이를테면 데이 터베이스에서 무언가 잘못되면 모든 수준에서 거의 동시에 경고가 울 리기 시작합니다. 이러한 일이 발생하면 시스템 관리자나 애플리케이 션 전문가가 근본 원인을 찾아 해결해야 합니다. 문제는 로그 파일이 여러 시스템, 때로는 서로 다른 시간대에 분산되어 있고 대부분 문제와 아무 관련이 없는 수백만 개의 항목이 포함되어 있다는 것입니다. 또 한, 시스템의 일부 오류를 나타내는 관련 레코드는 모두 한 번에 나타 나는 경향이 있습니다. 따라서 이러한 오류를 유발하는 문제를 찾아내 는 것이 중요합니다. Splunk가 이러한 문제를 찾아내는 데 어떻게 도움 이 되는지 살펴보겠습니다. Splunk의 가치는 다양한 위치에서 모든 데이터를 수집하여 중앙 집중식 저장소로 모으는 인덱스에서부터 시작됩니다. Splunk가 나 오기 전에는 시스템 관리자가 수많은 여러 시스템에 로그인하여 8
1장: Splunk 소개 훨씬 더 성능이 떨어지는 도구를 사용하여 모든 데이터에 대한 액 세스 권한을 확보해야 했습니다. 인덱스를 사용하여 Splunk는 모든 서버의 로그를 신속하게 검색 하고 언제 문제가 발생했는지 찾아낼 수 있습니다. Splunk는 속도, 규모, 유용성을 활용하여 문제가 언제 발생했는지 훨씬 더 빠르게 확인할 수 있습니다. Splunk는 문제가 처음 발생한 기간을 세밀하게 조사하여 근본 원 인을 파악할 수 있습니다. 그런 다음, 경고를 생성하여 미래의 문 제에 대비할 수 있습니다. Splunk는 여러 소스의 로그 파일을 인덱스하고 집계하여 한 곳에서 검 색 가능하도록 만들어졌기 때문에 시스템 관리자와 전세계에서 비즈 니스를 위해 기술 작업을 수행하는 사람들 사이에 유명해졌습니다. 보 안 분석가는 Splunk를 사용하여 보안 취약성과 공격을 탐지합니다. 시 스템 분석가는 Splunk를 사용하여 복잡한 애플리케이션에서 비효율성 과 병목 현상을 찾아냅니다. 네트워크 분석가는 Splunk를 사용하여 네 트워크 중단과 대역폭 병목 현상의 원인을 찾을 수 있습니다. 이제 Splunk의 몇 가지 핵심 포인트에 대해 설명하겠습니다. 중앙 저장소를 만드는 것이 중요합니다. Splunk의 주요 장점 중 하나는 여러 소스의 다양한 유형의 데이터를 검색 가능하도록 한 곳에 모으는 방식입니다. Splunk는 데이터를 문제에 대한 해답으로 바꿔 줍니다. Splunk는 데이터에 묻힌 통찰력을 찾아내는 데 도움이 됩니다. Splunk는 데이터의 구조와 의미를 이해하는 데 도움이 됩니다. 데이 터를 제대로 이해하면 데이터 안에서 더 많은 것을 볼 수 있습니다. Splunk는 또한 확인된 내용을 파악하여 향후 조사를 보다 용이하게 하고 확인된 내용을 다른 사람과 공유하는 데도 도움이 됩니다. 시각화를 통해 반복 탐색의 어려움을 줄입니다. 인덱스와 검색 작 업을 통해서 문제에 대한 명확한 답을 보여주는 차트나 보고서를 만들 수 있습니다. 데이터를 여러 가지 방법으로 시각화할 수 있기 때문에 더 신속하게 이해할 수 있으며 이해한 내용을 다른 사람과 공유하는 데도 도움이 됩니다. 운영 인텔리전스 우리가 실행하는 거의 모든 것이 어떤 식으로든 기술의 지원을 받기 때 문에 우리들 각자에 대해 수집되는 정보는 폭증하고 있습니다. 서버에 의해 기록되는 많은 이벤트는 실제로 고객 또는 파트너의 행동을 나타 냅니다. Splunk의 고객들은 일찍이 웹 서버 액세스 로그를 사용하여 시 스템을 진단할 뿐만 아니라 웹 사이트를 탐색하는 사람들의 행동을 보 다 잘 파악할 수 있다는 것을 알았습니다. 9
Exploring Splunk Splunk는 머신 데이터를 사용하여 비즈니스에 대한 가시성을 확보하 고 IT 및 기업 전체에 대한 통찰력을 발견하는 새로운 범주의 방법과 기술인 운영 인텔리전스에 대한 인지도를 제고하기 위해 노력해 왔습 니다. 운영 인텔리전스는 비즈니스 인텔리전스(BI)의 부산물이 아니라 일반적으로 BI 솔루션의 범주 내에 포함되지 않는 정보 소스에 기반을 둔 새로운 접근 방식입니다. 운영 데이터는 IT 작업을 개선하는 것 뿐 만 아니라 비즈니스의 기타 부분에 대한 통찰력을 높이는 데도 유용하 게 사용됩니다. 조직에서는 운영 데이터를 사용하여 다음 작업을 수행할 수 있습니다. 머신 데이터를 사용하여 고객을 보다 심층적으로 이해: 예를 들어, 웹 사이트의 트랜잭션을 추적하면 사람들이 무엇을 구입하는지 알 수 있습니다. 하지만 웹 서버 로그를 자세히 살펴보면 사람들이 구 입하기 전에 방문한 모든 페이지를 볼 수 있으며, 아마도 훨씬 더 중요하게도, 구입하지 않은 사람들이 방문한 페이지마저도 볼 수 있습니다. (앞 부분의 신제품 검색에 대한 예가 생각나십니까?) 여러 소스의 관련 이벤트에서 파생된 주요 패턴 및 분석 결과를 공개: 웹 사이트, 자세한 통화 기록, 소셜 미디어 및 매장 내 소매 트랜잭션에서 소비자 행동의 지표를 추적해 보면 고객에 대해 훨 씬 더 포괄적인 그림을 그릴 수 있습니다. 머신 데이터에 고객 상 호작용이 많이 나타나면 나타날수록 더 많은 정보를 얻을 수 있습 니다. 중요한 이벤트 및 이벤트 탐지 사이의 시간 단축: 머신 데이터를 실시간으로 모니터링하고 상호 연결할 수 있습니다. 라이브 피드와 과거 데이터를 활용하여 지금 무슨 일이 일어나고 있는지 파악하고 추세 및 변칙 상황을 확인하고 해당 정보를 기반 으로 보다 정보에 입각한 결정을 내림: 예를 들어, 웹 프로모션에 의해 생성된 트래픽을 실시간으로 측정하고 이전 프로모션과 비교 할 수 있습니다. 솔루션을 신속히 구축하고 현재 및 미래에 조직이 필요로 하는 유 연성, 즉 임시 보고서를 제공하고 질문에 답변하고 새 데이터 소스 를 추가할 수 있는 기능 제공: Splunk 데이터는 전통적인 대시보 드에 표시되어, 사용자는 이를 이용해 이벤트를 탐색하고 새로운 질문을 계속해서 던질 수 있습니다. 10
1장: Splunk 소개 운영 인텔리전스의 활용 Splunk는 다른 어떤 제품도 제공하지 못하는 작업을 수행합니다. 즉, 대 량의 비정형 시계열 텍스트 형식의 머신 데이터를 효율적으로 수집하 고 분석합니다. IT 부서는 보통 기술적으로 난해한 문제를 해결하기 위 해 Splunk 사용을 시작하지만, 자신들의 업무 내에서도 귀중한 통찰력 을 신속하게 얻습니다. Splunk의 머신 데이터를 사용하면 복잡한 비즈니스 문제를 해결하는 데 도움이 됩니다. 다음은 몇 가지 예입니다. 한 운영 팀에서 고객이 접하게 되는 클라우드 기반의 애플리케이 션을 구현하고 진단하기 위해 Splunk를 사용했습니다. 이들은 곧 사용자 통계를 추적하고 비즈니스 측면에서 중요한 의미를 갖는 측정 기준인 용량을 보다 효율적으로 계획할 수 있다는 것을 알았 습니다. 웹 서버 트래픽 로그는 장바구니를 채우거나 장바구니에 저장된 품목을 취소하는 상태를 실시간으로 추적하는데 사용할 수 있습니 다. 마케팅 부서에서는 이 정보를 사용하여 소비자들이 어느 부분 에서 주춤하고, 어떤 유형의 구매를 단념하는지 파악하여 어떤 문 제든지 즉시 해결하고 단념한 품목을 대상으로 프로모션을 진행 할 수 있습니다. 문제 해결을 위해 Splunk를 사용하여 애플리케이션을 모니터링하 는 조직에서는 고객의 전화를 고비용의 엔지니어링 리소스에 전달 하는 대신 일선 지원 팀에서 직접 처리할 수 있도록 쉽게 뷰를 제 공할 수 있다는 사실을 알았습니다. 한 주요 공기업에 여섯 가지의 모니터링과 진단 도구를 Splunk로 교체하여 소프트웨어 유지관리 비용을 절감하는 한편, NERC 및 SOX 컴플라이언스 작업을 강화할 수 있었습니다. 한 주요 공공 미디어 기관에서 중요한 웹 분석 결과를 파악하는 데 걸리는 시간을 몇 개월에서 몇 시간으로 단축했습니다. 또한 디 지털 자산을 보다 세밀하고 정확하게 추적하여 Splunk 없이는 불 가능했던 로열티 정산 및 콘텐츠 마케팅을 효율적으로 처리할 수 있었습니다. 한 타코 전문 레스토랑에서 POS(판매시점관리) 시스템을 Splunk 에 연결해, 비즈니스 분석가가 "이맘때 이 지역에서 자정부터 새벽 2시 사이에 타코를 사는 사람들이 몇 명이나 됩니까?" 등과 같은 질문까지도 1시간 내에 답변할 수 있게 되었습니다. 11
Exploring Splunk 결과적으로 조직들은 운영 인텔리전스를 활용하여 정확한 질문을 할 수 있고, 이 질문은 실시간 데이터와 과거 데이터를 조합하여 쉽게 요 약할 수 있는 대시보드와 그래픽 도구에 표시되는 비즈니스 통찰력을 제공하는 답변을 유도합니다. 머신 데이터를 "빅 데이터"라고 부르는 데는 이유가 있습니다. 방대한 머신 데이터 어디엔가는 회사의 미래를 좌우할 수 있는 중요한 데이터 가 묻혀 있습니다. 이제 2장으로 이동하겠습니다. 2장에서는 데이터를 Splunk로 가져와 데이터에 숨겨져 있는 보물을 찾아내는 방법에 대해 설명합니다. 12
2 데이터 가져오기 1장에서는 Splunk를 소개하고 Splunk가 어떻게 도움이 되는 지에 대 해 설명했습니다. 이제 다음 단계, 데이터를 Splunk로 가져오는 단계를 시작하겠습니다. 이 장에서는 Splunk 설치 및 데이터 가져오기에 대해 설명하고 원활 한 검색을 위해 데이터를 정리하는 방법에 대해서도 간략하게 설명합 니다. 머신 데이터 기본사항 Splunk의 미션은 머신 데이터를 사람들에게 유용하도록 만드는 것입 니다. 먼저 머신 데이터에 대한 기본사항과 Splunk에서 머신 데이터를 추적하는 방법에 대해 살펴보겠습니다. 시스템(웹 서버, 부하 분산기, 비디오 게임 또는 소셜 미디어 플랫폼 등) 을 구축하는 사람들은 시스템이 실행될 때 로그 파일에 작성하는 정보 도 지정합니다. 이 정보(로그 파일에 포함되어 있는 머신 데이터)를 이 용하면 시스템이 실행될 때(또는 실행되지 못할 때) 시스템에서 무슨 일이 일어나고 있는지 파악할 수 있습니다. 예를 들어, 다음은 가상 시 계 애플리케이션의 로그 파일 출력 내용입니다. Action: ticked s:57, m:05, h:10, d:23, mo:03, y:2011 Action: ticked s:58, m:05, h:10, d:23, mo:03, y:2011 Action: ticked s:59, m:05, h:10, d:23, mo:03, y:2011 Action: ticked s:00, m:06, h:10, d:23, mo:03, y:2011 시계가 똑딱거릴 때마다 작업과 작업이 이루어진 시간을 기록합니다. 시계를 자세히 추적하기 위해 똑딱거림 외에 배터리 잔여 시간, 알람 설정 시간, 알람 사용 여부, 소리 사용 여부 등 시계 작동 상태를 파악 하는 데 도움이 되는 기타 유용한 정보를 로그에 포함할 수도 있습니 다. 위에 표시된 머신 데이터의 각 줄은 별도의 이벤트로 간주될 수 있 는데, 다른 머신 데이터의 경우에는 하나의 이벤트가 여러 줄 또는 심 지어 수백줄에 걸쳐 표시되는 것이 일반적입니다. Splunk에서는 원시 머신 데이터를 이벤트라고 하는 별개의 정보 단위 로 나눕니다. 단순 검색 시 Splunk는 검색어와 일치하는 이벤트를 검 색합니다. 각 이벤트는 필드라고 하는 별개의 데이터 단위로 구성됩니 13
Exploring Splunk 다. 시계 데이터의 경우 second, minute, hour, day, month, 및 year 필드 로 구성됩니다. 이벤트 그룹이 스프레드시트 또는 데이터베이스로 구 성되어 있다고 생각하면, 그림 2-1에 표시된 것처럼 이벤트는 행이고 필드는 컬럼이 됩니다. 그림 2-1. 스프레드시트 형식의 시계 이벤트 이벤트를 키워드/값 쌍의 필드의 집합으로 생각할 수도 있습니다. 키 워드/값 쌍으로 나타낼 경우 시계 이벤트는 그림 2-2와 같은 모양이 됩 니다. Second=58, Minute=01, Hour=14, Day=23, Year=2011 Second=59, Minute=01, Hour=14, Day=23, Year=2011 Second=60, Minute=01, Hour=14, Day=23, Year=2011 Second=01, Minute=02, Hour=14, Day=23, Year=2011 Second=02, Minute=02, Hour=14, Day=23, Year=2011 그림 2-2. 키워드/값 쌍의 필드로 나타낸 시계 이벤트 다음은 가장 일반적이고 유용한 유형의 실제 머신 데이터의 예입니다. 서버에서 요청된 모든 URL을 기록하는 로그 파일이 한 웹 서버에 있 습니다. 웹 서버 데이터의 일부 필드는 다음과 같습니다. client IP, timestamp, http method, status, bytes, referrer, user agent 웹페이지를 한 번 방문하면 텍스트, 이미지 및 기타 리소스를 검색하기 위해 수십 개의 요청이 호출됩니다. 각 요청은 일반적으로 로그 파일에 별도의 이벤트로 기록됩니다. 그 결과는 그림 2-3과 같은 모양의 파일 입니다(하이라이트는 필드를 보는 데 도움이 되도록 넣은 것으로 실제 파일에는 표시되지 않습니다.) 12.1.1.015 - - [01/Aug/2011:12:29:58-0700] "GET /pages/hltabs_c.html HTTP/1.1" 200 1211 "http://webdev:2000/pages/" "Mozilla/5.0 AppleWebKit/102.1 (KHTML) Safari/102" 12.1.1.015 - - [01/Aug/2011:12:29:58-0700] "GET /pages/joy.html HTTP/1.1" 200 0012 "http://webdev:2000/pages/" "Mozilla/5.0 AppleWebKit/102.1 (KHTML) Safari/102" 12.1.1.015 - - [01/Aug/2011:12:29:58-0700] "GET /pages/dochomepage.html HTTP/1.1" 200 1000 "http://webdev:2000/pages/" "Mozilla/5.0 AppleWebKit/102.1 (KHTML) Safari/102" 그림 2-3. 일반적인 웹 서버 로그 14
2장: 데이터 가져오기 Splunk에서 읽을 수 있는 데이터의 유형 머신 데이터의 가장 일반적인 특징 중 하나는 항상 데이터가 만들어진 시기 또는 데이터에 의해 설명되는 이벤트가 발생한 시기를 나타내는 정보가 포함되어 있다는 점입니다. 이러한 특징을 고려하여 Splunk의 인덱스는 이벤트를 시계열 순서로 검색할 수 있도록 최적화되어 있습 니다. 원시 데이터에 명시적인 타임스탬프가 없는 경우 Splunk는 데이 터의 이벤트에 대해, 이벤트가 Splunk에 의해 인덱스된 시간을 지정하 거나 파일이 마지막으로 수정된 시간 또는 이전 이벤트의 타임스탬프 등 다른 근사값을 사용합니다. 그 밖에 유일한 요건은 머신 데이터는 이진 데이터가 아니라 텍스트 데 이터여야 한다는 점입니다. 예를 들어, 이미지 및 사운드 파일이 일반 적인 이진 데이터 파일입니다. 프로그램 중단 시 생성되는 코어 덤프와 같은 일부 유형의 이진 파일은 스택 추적과 같은 텍스트 정보로 변환할 수 있습니다. Splunk는 데이터를 인덱스하기 전에 스크립트를 호출하 여 변환 작업을 실행합니다. 궁극적으로 Splunk 데이터는 인덱스하거 나 검색할 수 있도록 텍스트 형태로 표시되어야 합니다. Splunk 데이터 소스 인덱싱하는 동안 Splunk는 여러 소스의 머신 데이터를 읽을 수 있습니 다. 가장 일반적인 입력 소스는 다음과 같습니다. 파일: Splunk에서는 특정 파일 또는 디렉터리를 모니터링할 수 있 습니다. 데이터가 파일에 추가되거나 새 파일이 모니터링되는 디 렉터리에 추가되는 경우 Splunk는 해당 데이터를 읽습니다. 네트워크: Splunk는 TCP 또는 UDP 포트를 수신하고 전송되는 모 든 데이터를 읽을 수 있습니다. 스크립트 기반 입력 정보: Splunk에서는 센서를 모니터링하는 Unix 명령어 또는 사용자 지정 스크립트와 같이 프로그램 또는 스크립트의 머신 데이터 출력 정보를 읽을 수 있습니다. 이제 충분한 배경 지식을 갖추었으니 Splunk를 사용해 보겠습니다. Splunk 다운로드, 설치 및 시작 이 책에 설명된 내용을 따라해 보기 위해 Splunk를 설치하고 일부 머 신 데이터를 추가하기를 권고드립니다. 이 책에 설명된 모든 내용은 Splunk Free를 사용하여 따라해 볼 수 있습니다(아래 참조). 이 절에서는 Splunk를 설치하고 시작하는 방법에 대해 설명합니다. 15
Exploring Splunk Splunk 다운로드 Splunk를 배우거나 중소 규모 수준의 Splunk 사용을 지원하기 위해, 다 기능 Splunk를 무료로 다운로드할 수 있습니다. splunk.com 홈 페이지 에서 다음 버튼을 찾을 수 있습니다. 이 버튼을 클릭하여 Windows, Mac, Linux 또는 Unix를 구동 중인 컴퓨터에 Splunk를 다운로드 하십시오. Splunk 설치 Splunk 설치는 간단하기 때문에 개별적으로 설치한 것으로 간주하 겠습니다. 질문이 있는 경우 Splunk 자습서(http://splunk.com/goto/ book#tutorial)를 참고하십시오. 모든 것이 자세히 설명되어 있습니다. Splunk 시작 Windows에서 Splunk를 시작하려면 시작 메뉴에서 Splunk 애플리케 이션을 실행합니다. 그림 2-4의 '환영' 화면이 표시되는지 확인하고 계 속 읽어보십시오. Mac OS X 또는 Unix에서 Splunk를 시작하려면 터미널 창을 엽니다. Splunk를 설치한 디렉터리로 이동하고 bin 하위 디렉터리로 이동한 후 명령 프롬프트에 다음과 같이 입력합니다../splunk start Splunk가 시작되면 표시되는 정보의 맨 마지막 줄은 다음과 같습니다. The Splunk web interface is at http://your-machinename:8000 로그인 화면의 해당 링크를 연결합니다. 사용자 이름과 암호가 없는 경 우 기본 접속 정보는 각각 admin 및 changeme입니다. 로그인 후 환영 화면이 나타납니다. 16
2장: 데이터 가져오기 그림 2-4. 환영 화면 환영 화면에는 데이터 추가 및 검색 앱 실행 등 새로운 Splunk 인스턴 스를 사용해 수행할 수 있는 작업이 표시됩니다. 인덱스를 위해 데이터 가져오기 Splunk를 배우고 탐색하는 데 있어 다음 단계는 일부 데이터를 탐색 가 능하도록 인덱스에 추가하는 것입니다. 이 장에서는 일부 샘플 데이터를 사용하도록 하겠습니다. 이 데이터를 가져오는 방법은 다음 페이지에 나와 있습니다. http://splunk.com/goto/ book#add_data 인덱스 프로세스에는 다음의 두 단계가 있습니다. Splunk 웹 사이트에서 샘플 파일 다운로드 Splunk에 해당 파일을 인덱스하도록 요청 샘플 파일을 다운로드하려면 다음 링크를 연결하고 파일을 바탕 화면 에 저장하십시오. http://splunk.com/goto/book#sample_data Splunk에 파일을 추가하는 방법: 1. 환영 화면에서 데이터 추가를 클릭합니다. 2. 화면 하단에서 파일 및 디렉터리에서를 클릭합니다. 3. 미리보기 건너뛰기를 선택합니다. 4. 파일 업로드 및 인덱스 옆의 라디오 버튼을 클릭합니다. 5. 바탕 화면에 다운로드한 파일을 선택합니다. 6. 저장을 클릭합니다. 17
Exploring Splunk 데이터 추가가 완료되었습니다. 보이지 않는 곳에서 Splunk가 무엇을 수행하는지를 설명하겠습니다. Splunk의 데이터 인덱스 방식 이해 대부분의 조직에 있어 Splunk의 핵심적인 가치는 분석, 보고 및 경고 를 위해 머신 데이터를 신속하게 검색 가능하도록 인덱스할 수 있는 고유 기능입니다. 인덱스하기 전의 데이터를 원시 데이터라고 합니다. Splunk는 데이터 자체는 수정하지 않고 데이터 내 단어에 대해 시간 기 반 지도를 만들어 원시 데이터를 인덱스합니다. Splunk에서 대량의 데이터를 검색하려면 데이터를 먼저 인덱스해야 합 니다. Splunk 인덱스는 특정 키워드가 있는 페이지를 가리키는 책의 마 지막 부분에 있는 인덱스와 유사한 개념입니다. Splunk에서는 "페이지" 를 이벤트라고 합니다. 12.1.1.140 1.140 - - [01/Aug /2009:09:37:01-0700] "GET /home/themes/comb h eta/images/btn_login.g if HTTP/1.1" 1 304 - "ht p://webdev:2000/home/i ev:20 ex.php" "Mozilla/5.0 l 12.1.1.140 1 1.140 - - [01/Aug /2009:09:37:01-0700] "GET /home/themes/comb h eta/images/btn_login.g if HTTP/1.1" 1 304 - "ht p://webdev:2000/home/i ev:20 ex.php" "Mozilla/5.0 l 12.1.1.140 1.140 - - [01/Aug /2009:09:37:01 09:37:01-0700] "GET /home/themes/comb h eta/images/btn_login.g if HTTP/1.1" 1 304 - "ht p://webdev:2000/home/i ev:20 ex.php" "Mozilla/5.0 l : + source, sourcetype, host _time A B C splunk A B C 12.1.1.140 - - [01/Aug/2009:09 :37:01-0700] "GET /home/theme s/combeta/images/btn_login.gif 그림 2-5. Splunk 인덱스의 고유한 특징 Splunk에서는 머신 데이터의 스트림을 개별 이벤트로 나눕니다. 머신 데이터의 이벤트는 로그 파일의 한 줄처럼 간단할 수도 있고 수백 줄이 포함된 스택 추적처럼 복잡할 수도 있습니다. Splunk의 모든 이벤트에는 표 2-1에 나와 있는 것처럼 4개 이상의 기 본 필드가 있습니다. 18
2장: 데이터 가져오기 source 표 2-1. Splunk에서 항상 인덱스하는 필드 필드 질문 예 데이터를 어디서 가져왔습니 까? 파일(/var/log/), 스크 립트(myscript.bat), 네 트워크 피드(UDP:514) sourcetype 어떤 종류의 데이터입니까? access_combined, syslog host 어느 호스트 또는 시스템에서 데이터를 가져왔습니까? webserver01, cisco_ router _time 이벤트가 언제 발생했습니까? Sat Mar 31 02:16:57 2012 이러한 기본 필드는 원시 데이터와 함께 인덱스됩니다. 타임스탬프(_time) 필드는 Splunk 인덱서에서 타임스탬프를 사용하여 이벤트를 정렬하기 때문에 특별한데, 이를 통해 Splunk는 특정 시간 범 위 내에서 이벤트를 효율적으로 검색할 수 있습니다. 3장에서는 대부분의 작업이 발생하는 Splunk의 검색 인터페이스에 대 해 설명합니다. 19
3 Splunk를 사용한 검색 앞서 2장에서 Splunk가 데이터를 인덱스하는 방식에 대해 살펴보았기 때문에 Splunk를 사용하여 검색할 때 어떤 일이 일어나는지 보다 쉽게 이해할 수 있을 것입니다. 물론, 검색의 목표는 필요한 항목을 정확하게 찾는 것입니다. 즉, 데이 터 관련 질문에 답변할 수 있도록 대량의 데이터를 필터링, 요약, 시각 화하는 것입니다. 경우에 따라 대량의 데이터를 정기적으로 탐색해야 할 수도 있습니다. 어떤 경우에는 건초더미에서 바늘을 찾는 것처럼, 시 스템 중단을 초래한 하나의 이벤트를 찾아야 할 때도 있습니다. 요약 대시보드를 보면 데이터의 개요를 신속하게 확인할 수 있습니다. Splunk 환영 탭에서 검색 앱 실행을 클릭하십시오. Splunk 홈 탭에 있 는 경우에는 내 앱 아래 검색을 클릭합니다. 그림 3-1에 표시된 것과 같 은 요약 대시보드가 표시됩니다. 21
Exploring Splunk 그림 3-1. 검색 앱의 요약 대시보드 이 대시보드에서 다음과 같은 몇 가지 사항을 주지하십시오. 상단의 검색란은 비어 있으며 언제든지 검색어를 입력할 수 있습 니다. 검색란 오른쪽의 시간 범위 선택기를 사용하면 시간 범위 조정이 가능합니다. 예를 들어 지난 15분 또는 원하는 시간 범위 내의 이 벤트를 볼 수 있습니다. 실시간 스트리밍 데이터의 경우 30초에서 1시간까지 원하는 간격을 선택할 수 있습니다. 인덱스된 모든 데이터 패널에는 인덱스된 데이터의 누적 합계가 표시됩니다. 22
3장: Splunk를 사용한 검색 다음 세 패널에는 각 범주에서 인덱스된 가장 최근의 값 또는 일반적 인 값이 표시됩니다. Sources 패널에는 데이터를 가져온 파일(또는 다른 소스)이 표시 됩니다. Source type 패널에는 데이터 내 소스의 유형이 표시됩니다. Host 패널에는 데이터를 가져온 호스트가 표시됩니다. 이제 페이지 상단 근처의 검색 탐색 메뉴를 살펴보겠습니다. 그림 3-2. 검색 탐색 메뉴 요약은 현재 위치입니다 검색은 기본 검색 인터페이스인 검색 대시보드로 연결됩니다. 상태에는 Splunk 인스턴스의 상태에 대한 대시보드가 나열됩니다. 대시보드 및 뷰에는 대시보드와 뷰가 나열됩니다. 검색 및 보고서에는 저장된 검색 내용과 보고서가 나열됩니다. 다음 절에서는 검색 대시보드를 소개합니다. 검색 대시보드 검색 옵션을 클릭하거나 검색 창에 검색어를 입력하면 페이지가 검색 대시보드(때로는 시간 표시줄 또는 플래시 시간 표시줄 뷰라고 함)로 전환됩니다. 검색이 시작되면 거의 즉시 결과가 표시되기 시작합니다. 예를 들어, 검색란에 별표(*)를 입력하면 기본 인덱스 내 모든 데이터가 검색되고 그림 3-3과 유사한 화면이 나타납니다. 23
Exploring Splunk 그림 3-3. 검색 대시보드 이 대시보드의 내용을 살펴보겠습니다. 시간 표시줄: 시간별로 검색어와 일치하는 이벤트 수를 그래픽으 로 나타냅니다. 필드 사이드바: 관련 필드를 이벤트 수와 함께 표시합니다. 이 메 뉴를 사용하면 결과에 필드를 추가할 수도 있습니다. 필드 검색 스위치: 자동 필드 검색 기능을 켜거나 끕니다. Splunk 에서 검색을 실행하고 필드 검색 기능이 켜져 있는 경우 Splunk에 서는 현재 검색에 대해 필드를 자동으로 검색하려고 시도합니다. 24
3장: Splunk를 사용한 검색 결과 영역: 검색에 따른 이벤트를 보여줍니다. 이벤트는 각 이벤트 의 왼쪽에 표시되는 타임스탬프 순으로 정렬됩니다. 각 이벤트의 원시 텍스트 아래에는 이벤트가 값을 가지고 있는 필드 사이드바 에서 선택된 모든 필드가 표시됩니다. 검색란에 검색어를 입력하기 시작하면 검색란 아래 상황별 정보가 왼 쪽에는 일치하는 검색 결과, 오른쪽에는 도움말과 함께 표시됩니다. 그림 3-4. 검색란에 텍스트를 입력하면 유용한 정보가 표시됩니다. 시간 범위 선택기 아래 한 줄의 아이콘이 표시됩니다. 그림 3-5. 검색 아이콘 검색 작업 컨트롤은 검색이 실행 중인 경우에만 작동됩니다. 검색을 실 행하지 않거나 검색이 완료된 경우에는 작동하지 않으며 회색으로 표 시됩니다. 그러나, 완료하는 데 오랜 시간이 걸리는 검색을 실행하는 경우 이들 아이콘을 사용하여 검색 진행 상태를 제어할 수 있습니다. 검색을 백그라운드로 보내면 검색이 완료될 때까지 계속 실행되 도록 하고 그 동안 다른 검색을 실행하거나, 창을 닫고 로그아웃 할 수도 있습니다. 백그라운드로 보내기를 클릭하면 검색란이 지 워지고 다른 작업을 계속할 수 있습니다. 작업이 완료되면 아직 로 그인 중인 경우 화면에 알림이 표시되고, 그렇지 않는 경우 Splunk 에서 이메일을 보냅니다(이메일 주소를 지정한 경우). 그 동안 또 25
Exploring Splunk 는 나중에 작업을 확인하려면 페이지 상단의 작업 링크를 클릭하 십시오. 검색을 일시 중지하면 검색이 일시적으로 중단되며 해당 시점까지 의 결과를 탐색할 수 있습니다. 검색이 일시 중지된 동안에는 아이 콘이 재생 버튼으로 바뀝니다. 이 버튼을 클릭하면 검색을 일시 중 지했던 시점부터 검색이 재시작됩니다. 검색이 완료되기 전에 검색을 종료하면 검색이 중단되지만 해당 시점까지의 결과는 그대로 남아 있어 검색 뷰에서 결과를 보고 탐 색할 수 있습니다. 이와 대조적으로 검색을 취소하면 검색 실행이 중단되고 결과가 없어지고 화면에서 삭제됩니다. 작업 검사기 아이콘을 클릭하면 작업 검사기 페이지로 이동합니다. 이 페이지에는 검색 실행 비용, 디버그 메시지, 검색 작업 속성 등 검색에 대한 세부정보가 표시됩니다. 저장 메뉴를 사용하면 검색을 저장하거나 검색 결과를 저장하거나, 결 과를 저장하여 공유할 수 있습니다. 검색을 저장한 경우에는 검색 및 보고서 메뉴에서 찾을 수 있습니다. 결과를 저장하는 경우 화면의 오른 쪽 상단에 있는 작업을 클릭하여 검토할 수 있습니다. 만들기 메뉴를 사용하면 대시보드, 경고, 보고서, event types 및 예약 된 검색을 만들 수 있습니다. 이에 대해서는 5장에서 자세히 설명하겠 습니다. 결과 영역 왼쪽 상단쪽 아래로 이동하면 다음과 같은 아이콘이 표시됩 니다. 그림 3-6. 결과 영역 아이콘 기본적으로 Splunk에서는 이벤트를 가장 최근의 이벤트부터 가장 오 래된 이벤트까지 리스트 형태로 표시하지만 테이블 아이콘을 클릭하여 결과를 테이블로 표시하거나 차트 아이콘을 클릭하여 결과를 차트로 표시할 수 있습니다. 내보내기 버튼을 사용하면 검색 결과를 CSV, 원시 이벤트, XML, JSON 등 다양한 형식으로 내보낼 수 있습니다. 26
3장: Splunk를 사용한 검색 이벤트? 결과? 어떤 차이가 있습니까? 기술적인 관점에서 인덱스에서 검색된 이벤트를 '이벤트'라고 합니다. 이러한 이벤트가 변환되거나 요약되어 디스크의 이벤트와 더 이상 1대1로 일치하지 않는 경우에는 '결과'라고 합니다. 예를 들어, 검색을 통해 검색된 웹 액세스 이벤트는 이벤트이지만 오늘 방문한 상위 URL은 결과입니다. 따라서, 까다롭게 구별하는 대신 두 용어를 서로 번갈아 사용하겠습니다. SPL : 검색 처리 언어 Splunk를 사용하면 대량의 인덱스된 이벤트를 실제 문제에 대응하는데 유용한 형태로 분류할 수 있습니다. 그림 3-7은 이벤트 검색, 보고서 생성 등 일반적인 검색 패턴을 보여줍 니다. 이 검색은 syslog 오류가 있는 상위 사용자들을 반환합니다. sourcetype = syslog ERROR top user fields - percent sourcetype syslog syslog other-source syslog syslog syslog other-source syslog other-source <events > ERROR ERROR WARNING WARNING ERROR Events fetched from disk user_a user_a user_a user_a user_b <fields...> user_01 user_02... user-10 22 17 5 22 17 5 Summarize into table of top ten users user_01 user_02... user-10 22 17 5 Remove percent column 22 17 5 user_01 user_02... user-10 22 17 5 Final results top user fields - percent 파이프 그림 3-7. 단순 Splunk 검색이 처리되는 방식 전체 문자열 sourcetype=syslog ERROR top user fields - percent 을 검색이라고 하며 파이프 문자( )는 검색을 구성하는 개별 명령어를 구분합니다. 파이프 뒤의 첫 번째 키워드는 검색 명령어의 이름입니다. 이 경우 명 령어는 top 및 fields입니다. 어느 명령어가 인덱스에서 이벤트를 검색 합니까? 파이프 문자로 시작하지 않는 모든 검색의 처음에는 search 27
Exploring Splunk 라고 하는 명령어가 내포되어 있습니다. 따라서, 위 검색에는 search, top, fields 등 세 개의 검색 명령어가 있습니다. 각 명령의 결과는 다음 명령에 입력값으로 전달됩니다. bash와 같은 Linux 쉘을 사용해 본 사용자는 이런한 개념이 익숙할 것입니다. 내포된 AND sourcetype=syslog ERROR는 search 명령어가 sourcetype이 syslog와 같으며 ERROR 단어를 포함하는 이벤트만 검색한다는 것을 나타냅니다. 상위 사용자 그 다음 명령어로 쓰인 top은 지정한 필드의 가장 자주 나타나는 값을 반환합니다. 기본적으로 top은 지정된 필드의 가장 일반적인 상위 10 개의 값을 내림차순으로 반환합니다. 이 경우 지정된 필드가 user이기 때문에 top 명령어는 용어 ERROR가 포함된 syslog 이벤트에 가장 자주 나타나는 사용자를 반환합니다. top의 결과는 3개의 컬럼(user, count, percent), 10개 행의 값으로 구성된 테이블입니다. 또한 top 명령어의 출력값이 파이프 뒤의 다음 명령어의 입력값이 된 다는 것을 이해하는 것이 중요합니다. 즉, top 명령어는 검색 결과를 더 작은 값의 집합으로 변환하며 이 값들은 다음 명령어에 의해 추가 로 처리됩니다. 필드 - 퍼센트 두 번째 명령어 fields 및 percent 인수는 Splunk에 top 명령어의 출 력값에서 percent 컬럼을 제거하도록 요청합니다. 시험적 데이터 분석: Splunk를 사용한 동굴 탐험 데이터에 대해 아무 것도 모른다면 어떻겠습니까? 창의성을 발휘하여 탐험하십시오. * 를 사용하여 모든 이벤트를 검색하고 이벤트에 대해 알아볼 수 있습니다. 몇 가지 이벤트를 살펴보고, 흥미롭게 보이는 필드 몇 개를 추출하고, 해당 필드의 top 값을 가져오고, 이벤트가 어떻게 나눠지는지 확인하고, 다른 필드를 기준으로 새 필드 몇 개를 파생하고, 결과를 분류하고, 한 필드가 다른 필드에 따라 어떻게 달라지는지 확인해 볼 수 있습니다. ( 사전 지식이 없는 소스의 내용을 알아보는 방법은 http://splunk.com/goto/ book#mining_tips를 참조하십시오.) 4장에서 검색 명령어에 대해 자세히 알아보기 전에 Splunk를 사용하 는 데 있어 매우 특별한 명령어인 search 명령어 자체에 대해 살펴보 겠습니다. 28
3장: Splunk를 사용한 검색 search 명령어 search 명령어는 Splunk의 강력한 도구입니다. 이 명령어는 Splunk에 서 가장 간단하고 강력한 명령어입니다. 이 명령어는 가장 기본적인 명 령어로, 첫 번째 파이프의 앞부분에서는 입력할 필요가 없으며, 암묵적 으로 호출되어 디스크 상의 인덱스에서 이벤트를 검색합니다. 모든 검색이 Splunk 인덱스에서 데이터를 검색하는 것은 아닙니다. 예를 들어, inputcsv 명령어는 CSV 파일에서 데이터를 읽습니다. 이러한 종류의 명령어를 첫 번째 명령어로 입력하려면 명령어 앞에 파이프 문자를 놓으십시오. 예: inputcsv myfile.csv Search가 검색의 첫 명령어가 아닌 경우, 이전 명령의 결과 집합을 search 명령어를 이용하여 필터링할 수 있습니다. 이렇게 하려면 다른 명령어들처럼 파이프 뒤에 명시적으로 호출하십시오. 이렇게 하려면 search 명령어를 다른 명령어와 같이, 즉 파이프 문자 뒤에 명시적인 명 령어 이름을 붙여 사용하십시오. 예를 들어, error top url search count>=2 명령은 디스크에서 error라는 단어가 포함된 이벤트를 검색 하고, 상위 URL을 찾고, 한 번만 발생하는 모든 URL을 필터링합니다. 다시 말해 top 명령어가 반환하는 10개의 오류 이벤트 중 해당 URL이 두 번 이상 나타나는 이벤트만 표시합니다. 표 3-1에는 암시적인 search 명령어에 대한 암시적인 호출의 몇 가지 예와 그 결과가 나와 있습니다. 표 3-1. 암시적 search 명령어 검색 인수 결과 (warn OR error) NOT fail* "warn" 또는 "error"가 포함되어 있 지만 "fail", "fails", "failed", "failure" 등은 포함되어 있지 않는 모든 이벤 트를 검색합니다. database error fatal disk database error, fatal 및 disk 등 의 문구가 포함된 모든 이벤트를 검 색합니다(AND가 내포되어 있습니 다). host=main_web_server delay>2 host 필드의 값이 main_web_server 이고 delay 필드의 값이 2보다 큰 모 든 이벤트를 검색합니다. 29
Exploring Splunk search 명령어 사용에 대한 도움말 다음은 search 명령어 사용에 유용한 몇 가지 도움말입니다. 이 도움말 은 대부분의 다른 명령어에도 적용됩니다. 대소문자 구분 search 명령어에 대한 키워드 인수는 대소문자를 구분하지 않지만 필 드 이름의 경우에는 대소문자를 구분합니다. (대소문자 구분에 대한 자 세한 내용은 부록 B를 참조하십시오.) 검색에 따옴표 사용 부울 논리 공백, 쉼표, 파이프, 대괄호, 등호 등 구분 문자가 포함된 문구나 필드는 따옴표로 둘러싸야 합니다. 따라서 host=web09는 괜찮지만 예를 들어, 호스트 값에 공백이 있는 경우에는 host= webserver #9 에서처럼 따옴 표가 필요합니다. 또한 예약 키워드(예: AND, OR, NOT 등)를 검색하려 면 따옴표를 사용하십시오. 따옴표를 검색하려면 역슬래시를 사용하여 따옴표 문자를 이스케이프 처리하십시오. Splunk changed life itself for me라는 문구를 검색 하려면 다음과 같이 입력합니다. Splunk changed \ life itself\ for me search 명령어에 대한 인수(키워드 및 필드)는 암시적으로 AND가 사 용된 것으로 간주됩니다. 두 개 이상의 인수 중 하나만 참이면 되는 경우 OR 키워드(대문자)를 사 용하여 지정할 수 있습니다. OR은 AND보다 우선 순위가 높기 때문에 OR를 사용하는 인수는 괄호로 둘러싸인 것으로 생각할 수 있습니다. 특정 단어가 포함된 이벤트를 필터링하여 제외하려면 NOT 키워드를 사용하십시오. 마지막으로, 원할 경우 명시적으로 괄호를 사용하여 더 명확하게 지정 할수 있습니다. 예를 들어, x y OR z NOT w에 대한 검색은 x AND (y OR z) AND NOT w와 같습니다. 하위 검색 search 명령어는 모든 명령어와 마찬가지로 검색 결과를 다른 명령어 에 대한 인수로 사용되는 하위 검색으로 이용할 수 있습니다. 하위 검 색은 대괄호로 둘러쌉니다. 예를 들어, 마지막 로그인 오류를 경험했던 사용자로부터 모든 syslog 이벤트를 찾으려면 다음 명령을 입력합니다. sourcetype=syslog [search login error return user] 30
3장: Splunk를 사용한 검색 login 및 error라는 단어가 포함된 이벤트 검색이 맨처음 찾은 user 값 (예를 들어 bob)을 반환하면서 수행되고 sourcetype=syslog user=bob 에 대한 검색이 이어집니다. Splunk에 대해 더 알아보려면 4장을 통해 즉시 도움이 되는 다른 명령 어들을 살펴볼 수 있습니다. 31
4 SPL: 검색 처리 언어 3장에서는 SPL에서 가장 기본적인 Splunk 명령어, search에 대해 알아 봤습니다. 이 장에서는 그 밖에 다른 SPL 명령어에 대해 설명합니다. 이 장에서는 SPL 명령어에 대해 기본적인 예를 들어 설명합니다. 전체 참조 설명서는 http://docs.splunk.com을 참조하십시오. 표 4-1에는 이 장에 설명된 SPL 명령어가 범주별로 요약되어 있습니다. 표 4-1. 공통 SPL 명령어 범주 설명 명령어 결과 정렬 결과를 정렬하고 (선택 사항) 결과의 sort 수를 제한합니다. 결과 필터링 이벤트 또는 결과의 집합을 더 작은 결과의 집합으로 필터링합니다. search where dedup head tail 결과 그룹화 패턴을 볼 수 있도록 이벤트를 그룹 화합니다. transaction 결과 보고 필드 필터링, 수정 및 추가 결과 정렬 sort 검색 결과를 가지고 보고를 위한 요 약을 생성합니다. 필요한 필드에 초점을 맞추기 위해 일부 필드를 필터링하여 제외(제거) 하거나 결과나 이벤트를 강화하기 위해 필드를 수정 또는 추가합니다. 결과 정렬은 예측한 대로 sort 명령어의 영역입니다. top/rare stats chart timechart fields replace eval rex lookup sort 명령어는 검색 결과를 지정된 필드를 기준으로 정렬합니다. 표 4-2에 몇 가지 예가 나와 있습니다. 33
Exploring Splunk 검색의 일부를 간략하게 표시 표 4-2에서처럼 여러 명령어의 일부만 보여주는 경우 다음과 같이 표시합니다.... 즉, 이 명령어 앞에 다른 검색이 있지만 뒤에 나오는 부분에 대해 초점을 맞춘다는 의미입니다. 표 4-2. sort 명령어의 예 명령 sort 0 field1 sort field1,-field2 sort 100 field1,+field2 sort filename sort num(filename) sort str(filename) 결과 결과를 by field1 기준으로 오름차순 으로 정렬하고 모든 결과를 반환합니 다(0은 기본값인 10,000개에서 중지하 지 않고 모든 이벤트를 반환한다는 것 을 의미합니다). 결과를 field1 기준으로 오름차순으로 정렬한 후 field2 기준으로 내림차순으 로 정렬하고 최대 10,000개의 결과(기 본값)를 반환합니다. 결과를 field1 기준으로 내림차순으로 정렬한 후 field2 기준으로 오름차순으 로 정렬하고 정렬된 처음 100개의 결 과를 반환합니다. 결과를 filename 기준으로 정렬합니다. 첫 번째 명령어로 Splunk는 필드 값을 정렬하는 방법을 결정합니다. 두 번째 명령은 Splunk에 값을 숫자순으로 정렬하도록 요청합니다. 세 번째 명령은 Splunk에 값을 사전순으로 정렬하도록 요청합니다. 힌트: 검색 결과의 기본 정렬 순서는 오름차순입니다. 결과의 순서를 뒤집으려면 결과를 정렬하기 위해 사용되는 필드 앞에 빼기 기호를 사용하십시오. 그림 4-1에 두 번째 예가 나와 있습니다. 가격을 기준으로 오름차순, 평 가를 기준으로 내림차순으로 정렬하겠습니다. 첫 번째 결과는 사용자 평가가 가장 높고 가장 저렴한 품목입니다. 34
4장: SPL: 검색 처리 언어 9.99 9.88 22.50 22.50 48.88 9.99 9.99 48.88 22.50 1 2 2 3 3 4 4 5 5 9.88 9.99 9.99 9.99 22.50 22.50 22.50 48.88 48.88 2 1 4 4 2 3 5 3 5 9.88 9.99 9.99 9.99 22.50 22.50 22.50 48.88 48.88 2 4 4 1 5 3 2 5 3 결과 필터링 where...,- 그림 4-1. sort 명령어 이 명령어들은 이전 명령의 검색 결과를 더 작은 결과의 집합으로 줄입 니다. 다시 말해, 데이터의 뷰를 좁혀 원하는 결과만 표시합니다. where 필터링 명령은 표현식을 평가하여 결과를 필터링합니다 평가가 성공적으로 완료되어 결과가 TRUE인 경우 결과가 유지되며, 그렇지 않 은 경우 결과가 제외됩니다. 예: source=job_listings where salary > industry_average 이 예에서는 채용 정보를 검색하여 급여가 업계 평균 급여보다 많지 않 은 결과를 제외합니다. 또한 salary 필드 또는 industry_average 필드 가 누락된 이벤트를 제외합니다. 이 예에서는 두 개의 필드, salary와 industry_average를 비교합니다. 이 작업은 where 명령어를 사용해 가능합니다. 필드 값을 문자 값과 비 교하는 경우 search 명령어를 사용하십시오. source=job_listings salary>80000 35
Exploring Splunk 표 4-3. where 명령어의 예 명령 where distance/time > 100 where like(src, 10.9.165.% ) OR cidrmatch( 10.9.165.0/25, dst) 결과 distance 필드 값을 time 필드 값으로 나눈 값이 100보다 큰 결 과를 유지합니다. IP 주소와 일치하거나 지정된 서 브넷에 포함되는 결과를 유지합 니다. 다. 50 100 200 300 300 100 500 그림 4-2에는 distance/time > 100인 명령이 예시되어 있습니 10 10 5 3 2 0.5 2 50 100 200 300 300 100 500 10 10 5 3 2 0.5 2 distance/time>100. FALSE. FALSE. FALSE. FALSE..TRUE..TRUE..TRUE 300 100 500 2 0.5 2 evaluate (distance/time>100) and keep only events for which the result is TRUE where 사용에 대한 도움말 dedup... where distance/time > 100 그림 4-2. where 명령어의 예 eval 명령어와 마찬가지로 where 명령어는 수많은 수식 평가 함수와 함 께 사용할 수 있습니다(전체 리스트는 부록 E를 참조하십시오). 중복된 데이터를 제거하는 일은 dedup 필터링 명령어의 역할입니다. 이 명령어는 지정된 기준과 일치하는 후속 결과를 제거합니다. 즉, 지정된 필드 값의 각각의 조합에 대해 지정된 count 만큼의 결과만 유지합니 다. count가 지정되지 않은 경우에는 1로 설정되어 처음 발견된(일반 적으로 가장 최근의) 결과를 반환합니다. 36
4장: SPL: 검색 처리 언어 명령 dedup host 표 4-4. dedup 명령어의 예 결과 각각의 고유한 host에 대해 첫 번째 결과를 유지합니다. dedup 3 source 각각의 고유한 host에 대해 처음 3 개의 결과를 유지합니다. dedup source sortby -delay dedup 3 source,host dedup source keepempty=true 결과를 delay 필드를 기준으로 내림 차순으로 먼저 정렬한 후 각각의 고 유한 source에 대해 첫 번째 결과 를 반환합니다. 이 명령은 각각의 고 유한 source에 대해 지연 값이 가장 큰 결과를 효과적으로 유지합니다. source 및 host 값의 각각의 고유한 조합에 대해 처음 3개의 결과를 유 지합니다. 각각의 고유한 source에 대해 첫 번 째 결과를 유지하고 source 필드가 없는 결과도 유지합니다. 그림 4-3에 dedup 3 source 명령어가 예시되어 있습니다. source source_a source_a source_b source_b source_a source_a source_a source_b source_b field2 f2_value1 f2_v alue2 f2_v alue3 f2_v alue4 f2_v alue5 f2_v alue6 f2_v alue7 f2_v alue8 f2_v alue9 <fields >. source source_a source_a source_b source_b source_a source_a source_a source_b source_b field2 f2_value1 f2_v alue2 f2_v alue3 f2_v alue4 f2_v alue5 f2_v alue6 f2_v alue7 f2_v alue8 f2_v alue9 <fields >. source source_a source_a source_b source_b source_a source_b field2 f2_value1 f2_v alue2 f2_v alue3 f2_v alue4 f2_v alue5 f2_v alue8 <fields >. for events with matching source field values, remove all except the first three... dedup 3 source 요점 그림 4-3. dedup 명령어의 예 모든 결과를 유지하지만 중복된 값을 제거하려면 keepevents 옵션 을 사용하십시오. 지정된 필드 값의 조합에 대해 첫 번째 발견된 결과, 일반적으로 가장 최근의 결과가 반환됩니다. 필요한 경우 정렬 순서를 변경하 려면 sortby 절을 사용하십시오. 37
Exploring Splunk head 지정된 필드가 전혀 존재하지 않는 필드는 기본적으로 유지됩니 다. 원할 경우 기본 동작을 재지정하려면 keepnull=<true/false> 옵션을 사용하십시오. head 필터링 명령어는 지정된 개수의 처음 결과를 반환합니다. head를 사용하면 원하는 수의 결과를 찾은 경우 디스크에서 이벤트 검색을 중 단할 수 있습니다. Heads 또는 Tails? head 명령어의 반대는 first가 아니라, 가장 최근 결과를 반환하는 tail 명령어입니다. 결과는 결과의 끝에서 시작하여 역순으로 반환됩니다. 처음은 일반적으로 시간 내림차순으로 표시된 이벤트의 입력 순서에 상대적입니다. 즉, 예를 들어 head 10은 최신 10개의 이벤트를 반환합니다. 표 4-5. head 명령어의 예 명령 결과 head 5 처음 5개의 결과를 반환합니다. head (action= startup ) 값이 startup인 action 필드가 없 는 이벤트에 도달할 때까지 처음 이 벤트를 반환합니다. 표 4-5의 첫 번째 예 head 5가 그림 4-4에 나와 있습니다. field1 1 2 3 4 5 6 7 8 9 <fields >. field1 1 2 3 4 5 <fields >. retrieve only the first five (5)... head 5 그림 4-4. head 명령어의 예 38
4장: SPL: 검색 처리 언어 결과 그룹화 transaction 명령어는 연관된 이벤트들을 묶어줍니다. transaction transaction 명령어는 다양한 제약조건을 충족하는 이벤트를 트랜젝 션, 즉 여러 소스의 이벤트 집합으로 그룹화합니다. 이벤트는 모든 트 랜잭션 정의 제약조건이 충족되는 경우 하나로 그룹화됩니다. 트랜잭 션은 각 구성 이벤트의 원시 텍스트(_raw 필드), 최초 구성 이벤트의 타 임스탬프(_time 필드), 각 구성 이벤트의 기타 모든 필드의 조합, duration 및 eventcount와 같이 트랜잭션을 기술하는 몇몇 추가 필드로 구 성됩니다. 표 4-6. transaction 명령어의 예 명령 transaction clientip maxpause=5s transaction clientip host maxspan=30s maxpause=5s 결과 동일한 클라이언트 IP 주소를 공유하고 5 초를 초과하는 간격이나 일시중지가 없는 이벤트를 그룹화합니다. 이 명령어를 사용하면 host 필드에 대한 검색 결과에 여러 값이 존재할 수도 있습 니다. 예를 들어, 여러 사람이 동일한 위치 에서 서버에 액세스하는 경우 단일 IP 주소 로부터의 요청들이 여러 호스트에서 나올 수 있습니다. 첫 번째와 마지막 이벤트 사이의 시간차 가 30초를 넘지 않고, 이벤트들 사이의 간 격이 5초를 넘지 않으며, 클라이언트 IP 주 소와 호스트가 같은 이벤트들을 그룹화합 니다. 첫 번째 예제와는 다르게, 시간 제약조건을 충족하면서 서로 다른 clientip과 host를 조합하는 결과를 얻게 됩니다. 따라서 하나 의 트랜잭션 내에서는 host 또는 clientip 주소 값이 다른 이벤트는 없습니다. 39
Exploring Splunk sourcetype=access* action=purchase transaction clientip maxspan=10m maxevents=3 transaction JSES- SIONID clientip startswith= signon endswith= purchase where duration>=1 action=purchase 값을 갖는 웹 액세스 이 벤트를 검색합니다. 이러한 이벤트는 동 일한 clientip를 공유하며 각 세션의 지 속 시간이 10분을 초과하지 않고 3개를 초과하는 이벤트를 포함하지 않을 경우 transaction 명령어에 의해 그룹화됩니 다. 세션 ID(JSESSIONID)가 동일하고, 동일한 IP 주소(clientip)를 가지고 있고, 첫 번째 이벤트에 signon 문자열이 포함되어 있 고, 마지막 이벤트에 purchase 문자열 이 포함되어 있는 이벤트를 하나로 그룹화 합니다. 이 검색에서는 startswith= signon 인 수를 사용하여 트랜잭션의 첫 번째 이벤트 를 signon 문자열을 포함하는 이벤트로 정의합니다. endswith= purchase 인수 는 트랜잭션의 마지막 이벤트에 대해 동일 하게 작동합니다. 이 예에서는 duration 필드를 사용하여 완료 시간이 1초 미만인 트랜잭션을 필터 링하여 제외하는 where 명령어로 트랜잭 션을 전달합니다. 표 4-6의 두 번째 예, transaction clientip maxspan=30s maxpause=5s 는 그림 4-5에 나와 있습니다. 그림 4-5. transaction 명령어의 예 40
4장: SPL: 검색 처리 언어 요점 모든 transaction 명령어의 인수는 선택 사항이지만 이벤트가 트랜잭 션으로 그룹화되는 방식을 정의하려면 일부 제약조건을 지정해야 합 니다. Splunk에서는 여러 필드 조건으로 정의된 트랜잭션을 꼭 필드간의 AND조건(즉, field1 AND field2 AND field3) 또는 필드간의 OR조건(즉, field1 OR field2 OR field3)로 간주하지 않습니다. <fields list>의 필드 사이에 서로 연결되는 관계가 있을 경우 transaction 명령어에서는 이 를 사용합니다. 예를 들어, transaction host cookie를 검색한 경우 다음과 같은 이벤 트가 단일 트랜잭션으로 그룹화될 수 있습니다. event=1 host=a event=2 host=a cookie=b event=3 cookie=b 처음 두 이벤트는 host=a가 공통으로 포함되어 있기 때문에 결합되며, 세 번째 이벤트는 두 번째 이벤트와 cookie=b를 공통으로 가지고 있기 때문에 결합됩니다. transaction 명령어는 두 개의 필드를 생성합니다. duration: 트랜잭션 내 첫 번째와 마지막 이벤트의 타임스탬프 간 의 차이. eventcount: 트랜잭션 내 이벤트의 수. stats 명령어(이 절의 뒷부분에서 설명)와 transaction 명령어 모두 이 벤트를 집계하는데 사용할 수 있지만 중요한 차이점이 있습니다. stats: 필드 값을 기준으로 그룹화된 이벤트에 대한 통계치를 계 산합니다(그런 다음 이벤트를 제외합니다). transaction: 이벤트를 그룹화하고, 이벤트 그룹화 방식에 대한 추 가 옵션을 지원하며 원시 이벤트 텍스트 및 원래 이벤트의 기타 필드 값을 유지합니다. 결과 보고 top 이 절에서는 top, stats, chart, timechart 등과 같은 보고 명령어에 대 해 설명합니다. 필드 리스트가 주어진 상태에서 top 명령어는 가장 자주 발생하는 필 드 값의 조합을 개수 및 백분율과 함께 반환합니다. by-clause를 이용 하여 필드들을 지정하면, by-clause로 지정된 필드들의 그룹별로 가장 빈번한 값을 반환합니다. 41
Exploring Splunk top의 반대는 rare입니다. top 명령어의 반대는 rare 명령어입니다. 때로는 필드의 (가장 일반적인 값 대신) 가장 드문 값을 알아야 할 수도 있습니다. rare 명령어가 정확히 이러한 기능을 합니다. 표 4-7. top 명령어의 예 명령 top 20 url top 2 user by host top user, host 결과 가장 일반적인 20개의 URL을 반환 합니다. 각 호스트에 대해 상위 2명의 user 값을 반환합니다. 상위 10개(기본값)의 user-host 조 합을 반환합니다. 표 4-7의 두 번째 예, top 2 user by host가 그림 4-6에 나와 있습니다. host-1 host-1 host-1 host-1 host-1 host-1 host-1 host-2 host-2 host-2 host-2 host-2 user user_a user_a user_b user_c user_c user_c user_d user_e user_e user_f user_g user_g <fields >............. host-1 host-1 host-1 host-1 host-2 host-2 host-2 user user_a user_b user_c user_d user_e user_f user_g 2 1 3 1 2 1 2 16.67 8.33 25.00 8.33 16.67 8.33 16.67 host-1 host-1 host-2 host-2 user user_c user_a user_e user_g 3 2 2 2 25.00 16.67 16.67 16.67... intermediate results: identifying count & percent of user values for each host value top 2 user by host 그림 4-6. top 명령어의 예 42
4장: SPL: 검색 처리 언어 stats stats 명령어는 데이터세트에 대해 SQL 집계와 유사한 집계 통계를 계 산합니다. 결과 테이블에는 전체 수신 결과 집합에 대한 집계를 나타내 는 하나의 행이 포함되거나, 또는 지정된 by-clause의 고유한 각 값마 다 하나의 행이 포함될 수 있습니다. 통계 계산을 수행할 수 있는 여러 가지의 명령어가 있습니다. stats, chart 및 timechart 명령어는 데이터에 대해 동일한 통계 계산을 수행 하지만 약간 다른 결과 집합을 반환하기 때문에 필요에 따라 더 쉽게 결과를 활용할 수 있습니다. stats stats 명령어는 group-by 필드 값들의 조합 별로 각 행이 표 시된 결과 테이블을 반환합니다. chart 명령어의 경우에도 지정된 임의의 필드들이 행으로 표시되 는 위와 동일한 결과 테이블을 반환합니다. timechart 명령어도 테이블 형태의 동일한 결과를 반환하지만 각 행이 내부 필드인 _time으로 설정되어 시간 범위에 따라 결과를 차트로 표시할 수 있습니다. 표 4-8에는 stats 명령어를 사용하는 몇 가지 예가 나와 있습니다. as 의 의미 참고: 표 4-14의 일부 명령어에서와 같이 키워드 as 사용. as는 필드의 이름을 바꾸기 위해 사용됩니다. 예를 들어, sum(price) as Revenue 는 모든 price 필드를 합한 후 결과 컬럼의 이름을 Revenue 로 지정한다는 의미입니다. 표 4-8. stats 명령어의 예 명령 stats dc(host) stats avg(kbps) by host stats count(eval(method= GET )) as GET, count(eval(method= POST )) as POST by host... top limit=100 referer_ domain stats sum(count) as total 결과 고유한 host 값의 개수를 반환합니 다. 각 호스트의 평균 전송율을 반환합 니다. 각 웹 서버(host)에 대해 서로 다른 요청 유형의 수를 반환합니다. 결과 테이블에는 각 호스트에 대한 행과 GET 및 POST 요청 방법 개수에 대 한 컬럼이 포함됩니다. referer_domain의 상위 100개 값 에서 총 히트 수를 반환합니다. 43
Exploring Splunk stats count, max(magnitude), min(magnitude), range(magnitude), avg(magnitude) by Region stats values(product_type) as Type, values(product_name) as Name, sum(price) as Revenue by product_id rename product_id as Product ID eval Revenue= $.tostring(revenue, commas ) USGS 지진 데이터를 사용하여 각 Region에 대한 지진 발생 수와 추가 통계치를 반환합니다. 매장에서 판매된 각 product_id에 대해 Type, Name 및 Revenue 컬럼이 포함된 테이블을 반환합니다. 또한 Revenue의 서식을 $123,456으로 지 정합니다. 호스트당 GET 및 POST 요청 개수를 검색하는 표 4-8의 세 번째 예는 그림 4-7에 나와 있습니다. 그림 4-7. stats 명령어의 예 표 4-9에는 stats 명령어와 함께 사용할 수 있는 통계 함수가 나열되어 있습니다. (이 함수들은 이후에 설명하는 chart 및 timechart 명령어에 도 사용할 수 있습니다.) avg(x) count(x) dc(x) max(x) median(x) min(x) mode(x) 표 4-9. stats 통계 함수 수학적 계산 필드 X 값의 평균을 반환합니다. mean(x) 참조. 필드 X의 발생횟수를 반환합니다. 일치하는 필드 값을 나타내기 위해 X 인수의 서식을 eval(field="value") 와 같은 표현식으로 지정합니다. 필드 X의 개별 값의 개수를 반환합니다. 필드 X의 최대값을 반환합니다. 값이 숫자가 아닌 경 우에는 최대값이 사전 순서에 따라 결정됩니다. 필드 X의 중앙값을 반환합니다. 필드 X의 최소값을 반환합니다. 값이 숫자가 아닌 경 우에는 최소값이 사전 순서에 따라 결정됩니다. 필드 X의 최빈값을 반환합니다. 44
4장: SPL: 검색 처리 언어 chart perc<percentnum>(x) range(x) stdev(x) sum(x) var(x) first(x) last(x) list(x) values(x) 필드 X의 <percent-num>번째 값을 반환합니다. 예를 들어 perc5(total)는 total 필드의 5백분위수를 반 환합니다. 필드 X의 최대값과 최소값 사이의 차이를 반환합니다( 값이 숫자인 경우). 필드 X의 표본표준편차를 반환합니다. 필드 이름을 지 정할 때 와일드카드를 사용할 수 있습니다. 예를 들어 "*delay"는 "delay"와 "xdelay" 둘 모두에 일치합니다. 필드 X의 값의 합을 반환합니다. 필드 X의 표본 분산을 반환합니다. 값 선택 필드 X의 첫 번째 값을 반환합니다. last(x)의 반대입 니다. 필드 X의 마지막 값을 반환합니다. first(x)의 반대입 니다. 일반적으로 필드의 마지막 값은 연대순으로 가 장 오래된 값입니다. 필드 X의 모든 값의 리스트를 다중값 항목으로 반환합 니다. 값의 순서는 입력 이벤트의 순서와 일치합니다. 사전 순으로 정렬된 필드 X의 모든 개별 값의 리스트 를 (다중값 항목으로) 반환합니다. timechart 전용(chart나 stats에는 해당되지 않음) per_day(x) 하루당 필드 X의 비율을 반환합니다. per_hour(x) 시간당 필드 X의 비율을 반환합니다. per_minute(x) 분당 필드 X의 비율을 반환합니다. per_second(x) 초당 필드 X의 비율을 반환합니다. 참고: timechart 전용 범주의 함수를 제외한 모든 함수는 chart, stats 및 timechart 명령어에 적용됩니다. chart 명령어는 차트에 사용할 수 있도록 테이블 형식의 데이터 결과를 생성합니다. over 또는 by를 사용하여 x축 변수를 지정합니다. 표 4-10에는 chart 명령어를 사용하는 몇 가지 예가 나와 있습니다. 자 세한 실제 시나리오는 6장을 참조하십시오. 45
Exploring Splunk 표 4-10. chart 명령어의 예 명령 chart max(delay) over host chart max(delay) by size bins=10 chart eval(avg(size)/ max(delay)) as ratio by host user... chart dc(clientip) over date_hour by category_id usenull=f chart count over Magnitude by Region useother=f chart count(eval(method= GET )) as GET, count(eval(method= POST )) as POST by host 결과 각 host 값에 대해 max(delay)를 반환합니다. size별로 최대 delay를 차트로 표 시합니다. 여기서 size는 최대 10개 의 같은 크기 버킷으로 분할됩니다. 각 개별 host 및 user 쌍에 대해 평 균 size 대 최대 delay의 비율을 차 트로 표시합니다. 시간당 고유한 clientip 값의 수 를 범주별로 차트로 표시합니다. usenull=f은 값이 없는 필드를 제 외합니다. 지진의 수를 Magnitude 및 Region 별로 차트로 표시합니다. 드문 Regions에 대해 "other" 값을 출력하 지 않으려면 useother=f 인수를 사 용하십시오. 각 웹 서버(host)에 대해 발생한 GET 및 POST 페이지 요청의 수를 차트로 표시합니다. 그림 4-8(테이블 형식의 결과) 및 4-9(로그 눈금의 막대 차트)는 표 4-10의 마지막 예의 실행 결과를 보여줍니다. 그림 4-8. chart 명령어의 예 - 테이블 형식의 결과 46
4장: SPL: 검색 처리 언어 그림 4-9. chart 명령어의 예 - 보고서 작성기 형식의 차트 timechart timechart 명령어는 시간을 x축으로 하여 필드에 적용된 통계 집계에 대한 차트를 만듭니다. 표 4-11에는 timechart 명령어를 사용하는 몇 가지 예가 나와 있습니 다. 6장에 이 명령어를 사용하는 예가 자세히 나와 있습니다. 표 4-11. timechart 명령어의 예 명령 timechart span=1m avg(cpu) by host timechart span=1d count by product-type timechart avg(cpu_seconds) by host outlier timechart per_hour(price) by product_name 결과 각 호스트의 분당 평균 CPU 사용량 의 평균값을 차트로 표시합니다. 각 제품 유형별 일일 구매 횟수를 차 트로 표시합니다. span=1d 인수는 주간 구매 횟수를 일별 청크에 넣습 니다. host별 평균 cpu_seconds를 차트로 표시하고 시간 차트의 y축을 왜곡하 는 이상값을 제거합니다. 어제 판매된 제품의 시간별 수익을 차트로 표시합니다. per_hour() 함 수는 각 항목 (product_name)의 가 격 필드의 값을 합하고 그 합을 각 버킷의 시간 범위에 따라 적절히 조 정합니다. 47
Exploring Splunk timechart count(eval(method= GET )) as GET, count(eval(method= POST )) as POST 시간별 페이지 요청의 수를 차트로 표시합니다. count() 함수 및 eval 서로 다른 페이지 요청 방식인 GET 및 POST의 개수를 세기 위해 사용됩 니다. timechart per_ hour(eval(method= GET )) as Views, per_ hour(eval(action= purchase )) as Purchases 전자상거래 웹 사이트의 경우 시간 당(per_hour) 제품을 본 횟수와 구 매 횟수를 차트로 표시하면, 제품을 검색하고 나서 구매로 이어지지 않 은 횟수를 알 수 있습니다. 표 4-11에서 제품 이름별 시간당 수익을 차트로 표시하는 네 번째 예는 그림 4-10과 4-11에 나와 있습니다. 그림 4-10. timechart 명령어의 예 - 테이블 형식의 결과 그림 4-11. timechart 명령어의 예 - 서식이 지정된 시간 차트 필드 필터링, 수정 및 추가 이 명령어들은 검색 결과에서 원하는 필드만을 추려내는 데 도움이 됩 니다. fields 명령어를 사용하여 일부 필드를 제거하여 결과를 단순화할 수도 있습니다. replace 명령어를 사용하여 필드 값을 사용자가 더 읽 48
4장: SPL: 검색 처리 언어 fields 기 쉽도록 만들 수 있습니다. 또는 eval, rex 및 lookup과 같은 명령어 를 이용하여 새 필드를 추가할 수도 있습니다. eval 명령어는 다른 필드간의 산술 계산이나 문자열의 연결, 또는 부울 논리 연산을 통해 새 필드의 값을 계산합니다. rex 명령어는 정규식을 사용해 다른 필드에서 패턴이 있는 데이터 를 추출하여 새 필드를 만드는데 사용할 수 있습니다. lookup 명령어는 이벤트의 값을 기준으로 룩업 테이블을 참조하 고, 룩업 테이블에서 일치하는 행의 필드를 해당 이벤트에 추가하 는 방식으로 필드를 추가합니다. 이 명령어들은 새 필드를 만들기 위해 사용하거나 기존 필드의 값을 덮 어쓰기 위해 사용할 수 있습니다. 이는 사용자의 선택에 달려 있습니다. fields 명령어는 검색 결과에서 필드를 제거합니다. 일반적인 명령어는 표 4-6에 나와 있습니다. 표 4-12. fields 명령어의 예 명령 결과 fields field1, field2 검색 결과에서 field1과 field2를 제 거합니다. fields field1 field2 field1과 field2만 유지합니다. fields field1 error* field1과 이름이 error로 시작하는 모든 필드만 유지합니다. fields field1 field2 fields - _* field1과 field2만 유지하고 (밑줄로 시작하는) 모든 내부 필드를 제거합 니다. (참고: 내부 필드를 제거하면 Splunk Web에서 결과를 잘못 표시 하고 다른 검색 문제가 발생할 수 있 습니다.) 표 4-12의 첫 번째 예 fields field1, field2가 그림 4-12에 나와 있습 니다. 49
Exploring Splunk field1 1 2 3 4 5 6 7 8 9 field1 A B C D E F G H I field1 a b c d e f g h i <fields > field1 1 2 3 4 5 6 7 8 9 field1 A B C D E F G H I field1 a b c d e f g h i <fields > field1 a b c d e f g h i <fields >... - field1 field2 요점 그림 4-12. fields 명령어의 예 내부 필드, 즉 이름이 밑줄로 시작하는 필드는 명시적으로 지정되지 않 는 한 fields 명령어에 영향을 받지 않습니다. replace replace 명령어는 대치 값을 사용하여 지정된 필드 값의 검색 및 바꾸 기를 수행합니다. 검색어나 대치어의 값은 대소문자를 구분합니다. 표 4-13. replace 명령어의 예 명령 replace *localhost with localhost in host replace 0 with Critical, 1 with Error in msg_level replace aug with August in start_month end_month replace 127.0.0.1 with localhost 결과 localhost로 끝나는 모든 host 값 을 localhost로 변경합니다. msg_level 값 0을 Critical로, msg_level 값 1을 Error로 변경합 니다. 모든 start_month 또는 end_month 값 aug를 August로 변경합니다. 모든 필드 값 127.0.0.1을 localhost로 변경합니다. 표 4-13의 두 번째 예 replace 0 with Critical, 1 with Error가 그 림 4-13에 나와 있습니다. 50
4장: SPL: 검색 처리 언어 msg_level 0 1 0 0 3 4 0 3 1 <fields > msg_level 3 4 3 <fields >... replace 0 with Critical, 1 with Error in msg_level 그림 4-13. replace 명령어의 예 eval eval 명령어는 표현식을 계산하고 결과 값을 새 필드에 넣습니다. eval 및 where 명령어는 동일한 표현식 구문을 사용합니다. 부록 E에 사용 가능한 모든 함수가 나열되어 있습니다. 표 4-14. eval 명령어의 예 명령 eval velocity=distance/ time eval status = if(error == 200, OK, Error ) eval sum_of_areas = pi() * pow(radius_a, 2) + pi() * pow(radius_b, 2) 결과 velocity를 distance 나누기 time으 로 설정합니다 error가 200이면 status를 OK로, 그 렇지 않은 경우 Error로 설정합니다. sum_of_areas를 두 원의 면적의 합 으로 설정합니다. 그림 4-14에 표 4-14의 첫 번째 예 eval velocity=distance/time가 나 와 있습니다. 51
Exploring Splunk 50 100 200 10 10 5 <fields > 50 100 200 10 10 5 velocity 5 10 40 <fields >... eval velocity=distance/time 그림 4-14. eval 명령어의 예 eval 명령어의 결과가 새 velocity 필드를 생성합니다. (velocity 필드 가 존재하느 경우 eval 명령어가 값을 업데이트합니다.) eval 명령어는 한 번에 하나의 필드만 만들거나 재지정합니다. rex rex 명령어는 지정된 PCRE(Perl Compatible Regular Expression)와 값 이 일치하는 필드를 추출합니다. (rex는 regular expression의 줄임말 입니다.) 정규식이란 무엇입니까? 정규식을 "광범위한 와일드카드'로 생각하십시오. 아마도 *.doc 또는 *.xls와 같은 표현을 사용하여 파일을 검색해 보셨을 것입니다. 정규식을 사용하면 기능과 유연성을 높일 수 있습니다. 정규식에 익숙한 경우 이 내용을 읽지 않아도 됩니다. 자세한 내용은 http://www.regular-expressions.info를 참조하십시오. 표 4-15. rex 명령어의 예 명령 rex From: (?<from>.*) To: (?<to>.*) rex field=savedsearch_id (?<user>\w+);(?<app>\w+); (?<SavedSearchName>\w+) 결과 정규식을 사용하여 from 및 to 필 드를 추출합니다. 원시 이벤트에 From: Susan To: Bob 이 포함되 어 있는 경우 from=susan 및 to=bob 입니다. savedsearch_id라고 하는 필드에 서 user, app 및 SavedSearchName 을 추출합니다. savedsearch_id = bob;search;my_saved_search 의 경우 user=bob, app=search 및 SavedSearchName=my_saved_ search입니다. 52
4장: SPL: 검색 처리 언어 rex mode=sed s/(\\d{4}-){3}/ XXXX-XXXX-XXXX-/g 정규식을 일련의 숫자와 일치시키 고 익명처리된 문자열로 대치하려면 sed 구문을 사용하십시오. 그림 4-15는 from 및 to 필드를 추출한 표 4-15의 첫 번째 예를 보여 줍니다. _raw From: Susan To: Bob Subject: current to-do list Message Hi Bob, I wanted to From: Meenu Subject: version 6 docs Message Hi Jan, Let's set up a time to From: John To: Miguel Message Here's what we need to arrange for the from Susan Meenu John to Bob Miguel _raw Subject: current to-do list Message Hi Bob, I wanted to Subject: version 6 docs Message Hi Jan, Let's set up a time to Message Here's what we need to arrange for the... rex "From: (?<from>.*) To: (?<to>.*) 그림 4-15. rex 명령어의 예 lookup lookup 명령어는 룩업 테이블에서 필드 룩업을 수동으로 호출하며, 이 명령어를 사용하여 외부 소스에서 필드 값을 추가할 수 있습니다. 예를 들어, 5자리 우편번호가 있는 경우 거리 이름을 조회하여 ZIP+4 9자리 우편번호를 적용할 수 있습니다. 표 4-16. 명령어의 예 명령 lookup usertogroup user as local_user OUTPUT group as user_group 결과 transform.conf 1 의 스탠자 이름 usertogroup에 지정된, user 및 group 필드가 있는 룩업 테이블에 대해 각 이벤트의 local_user 필드 의 값을 조회합니다. 일치하는 항목 의 경우 룩업 테이블의 group 필드 의 값이 이벤트의 user_group 필드 에 쓰여집니다. 1 룩업 테이블은 관리자» 룩업에서 구성할 수 있습니다. 53