User Tools

Site Tools


data:search

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
data:search [2015/03/19 10:59]
NamJungGu
data:search [2019/02/25 14:50] (current)
Line 12: Line 12:
 {{ :​data:​splunksearch_report_4.png |}} {{ :​data:​splunksearch_report_4.png |}}
 ====== SQL에서 Splunk로 전환 ====== ====== SQL에서 Splunk로 전환 ======
-메뉴얼 참고 +SQL 검색 명령어와 Splunk 검색 명령어 간에 완벽히 일치하는 점은 없지만, SQL에 익숙할 경우 다음과 같이 간단한 비교를 
-^a^b+통해 Splunk를 사용하는 데 도움을 받을 수 있습니다. 
-|aaa<​nowiki>​ +===== 개념 ===== 
-이 스트에는 ​http://www.splitbrain.org 과 같은 인터넷 주소나 **자동 ​형 기법**을 포함하지만,| 실제로는 ​아무것도 자동 변형 ​하지 않습니다. +데이터베이스 측면에서 Splunk는 내재된 시간적 차원을 이용하는 비관계형의 반구조적인 분산 데이터베이스입니다. 규범적 인 의미에서 Splunk는 데이터베이스(관계형 데이터베이스의 경우 모든 테이블 컬럼이 사전에 정의되어야 하고 새 하드웨어 에 연결하는 것만으로는 자동 확장되지 않음)가 아니지만 데이터베이스의 개념과 유사한 점이 많습니다. 
-</​nowiki>​bbb|aa+^DB개념^Splunk 개념^참고
 +|SQL쿼리 |<​nowiki>​Splunk 검색 </​nowiki>​|<​nowiki>​Splunk 검색은 인덱스 데이터를 검색하고 변환 및 보고 작업을 수행할 수 있습니다. 검색 결과를 명령어 간에 "​연결"​ 또는 전송하여 결과를 필터링하고 수정하며 순서를 변경하고 그룹화할 수 있습니다. </​nowiki>​| 
 +|테이블/​뷰 |<​nowiki>​검색 결과 </​nowiki>​|<​nowiki>​검색 결과를 컬럼이 있는 행 테이블로 동적 생성되는 데이터베이스 ​뷰로 볼 수 있습니 다. </​nowiki>​| 
 +|index |<​nowiki>​index </​nowiki>​|<​nowiki>​모든 값과 필드가 Splunk에서 인덱싱되므로 인덱싱 컬럼을 수동으로 추가하거나 업 데이트 및 삭제할 필요도 없습니다. 모든 데이터를 자동으로 신속하게 검색할 수 있습 니다. </​nowiki>​| 
 +|row |<​nowiki>​결과/​이벤트 </​nowiki>​|<​nowiki>​Splunk는 결과가 테이블 행에 해당되는 필드(컬럼) 값 리스트로 표시됩니다. 이 벤트는 타임스탬프와 원시 텍스트가 있는 결과입니다. 일반적으로 이벤트는 다음과 같은 로그 파일의 레코드입니다.  
 +173.26.34.223 - - [01/​Jul/​2009:12:05:27 -0700] "​GET ​/trade/app?​action=logout HTTP/1.1" 200 2953 </​nowiki>​| 
 +|column |<​nowiki>​field </​nowiki>​|<​nowiki>​Splunk의 필드는 검색에서 동적으로 반환됩니다다시 말해 검색마다 다른 필드 집합 이 반환될 수 있습니다. 원시 기본 데이터에서 더 많은 필드를 추출하도록 Splunk를 설정한 후 동일한 검색을 수행하면 이전 검색보다 더 많은 필드를 반환합니다. Splunk의 필드는 데이터 유형과 관련이 없습니다. </​nowiki>​| 
 +|데이터베이스/​스 키마 |<​nowiki>​덱스/앱 </​nowiki>​|<​nowiki>​Splunk에서 인덱스는 데이를 수집한 것으로, 데이터베이스에 테이블을 수집하는 것과 유사합니다. 해당 데이터의 도메인 정보, 데이터 추출 방법, 실행할 보고서 등이 Splunk 앱에 저장됩니다. </​nowiki>​| 
 +===== SQL에서 Splunk로 전환 ===== 
 +아래 예에서는 Splunk의 "​source"​ 필드 값을 "​테이블"​의 프록시로 사용합니다. Splunk에서 "​source"​는 특정 데이터의 출처 
 +가 되는 파일, 스트림 또는 입력으로,​ /​var/​log/​messages 또는 UDP:514를 예로 들 수 있습니다. 
 +다른 언어로 ​환할 경우 원래 언어에서 사용되는 관용적인 표현으로 인해 변환에 시간이 오래 걸리는 경우가 많습니다. 아래 에 제시된 Splunk 검색 예 중 일부는 더 간결하게 작성할 수 있지만 유사성과 명확성을 위해 테이블 및 필드 이름을 SQL과 동일하게 유지했습니다. 또한 사용자 인터페이스에서 더 편리한 방을 이용할 수 있기 때문에 컬럼을 추출하는 데 FIELDS 명령어를 거의 사용하지 않으며 검색어 사이에 "​AND"​ 연산자가 포함되어 있기 때문에 부울 검색에 "​AND"​를 사용할 필요가 없습니다. 
 +^SQL 명령어^SQL 예제^Splunk 예제^ 
 +|SELECT ​*|<​nowiki>​SELECT ​FROM mytable </​nowiki>​|<​nowiki>​source=mytable </​nowiki>​| 
 +|WHERE |<​nowiki>​SELECT *
FROM mytable WHERE mycolumn=5 </​nowiki>​|<​nowiki>​source=mytable mycolumn=5 </​nowiki>​|"​ 
 +|SELECT |<​nowiki>​SELECT mycolumn1, mycolumn2 FROM mytable </​nowiki>​|<​nowiki>​source=mytable
| FIELDS mycolumn1, mycolumn2 </​nowiki>​|"​ 
 +|AND/OR |<​nowiki>​SELECT * FROM mytable  
 +WHERE (mycolumn1="​true"​ OR mycolumn2="​red"​) AND mycolumn3="​blue"​ </​nowiki>​|<​nowiki>​source=mytable
AND (mycolumn1="​true"​ OR mycolumn2="​red"​) AND mycolumn3="​blue"​ </​nowiki>​|"​ 
 +|AS (alias) |<​nowiki>​SELECT mycolumn AS column_alias FROM mytable </​nowiki>​|<​nowiki>​source=mytable
| RENAME mycolumn as column_alias | FIELDS column_alias </​nowiki>​|"​ 
 +|BET WEEN |<​nowiki>​SELECT *
FROM mytable WHERE mycolumn BETWEEN 1 AND 5 </​nowiki>​|<​nowiki>​source=mytable mycolumn>​=1 mycolumn<​=5 </​nowiki>​|"​ 
 +|GROUP BY |<​nowiki>​SELECT mycolumn, avg(mycolumn) FROM mytable
WHERE mycolumn=value
GROUP BY mycolumn </​nowiki>​|<​nowiki>​source=mytable mycolumn=value
| STATS avg(mycolumn) BY mycolumn | FIELDS mycolumn, avg(mycolumn) </​nowiki>​|"​ 
 +|H A V IN G |<​nowiki>​SELECT mycolumn, avg(mycolumn) FROM mytable
WHERE mycolumn=value
GROUP BY mycolumn  
 +HAVING avg(mycolumn)=value </​nowiki>​|<​nowiki>​source=mytable mycolumn=value
| STATS avg(mycolumn) BY mycolumn | SEARCH avg(mycolumn)=value
| FIELDS mycolumn, avg(mycolumn) </​nowiki>​|"​ 
 +|LIKE |<​nowiki>​SELECT *
FROM mytable
WHERE mycolumn LIKE "%some text%" </​nowiki>​|<​nowiki>​source=mytable mycolumn="​*some text*"  
 +참고: Splunk에서 가장 일반적으로 사용되는 검 색 방법은 실제로 SQL에서는 거의 불가능한 모 든 필드에서 하위 문자열을 검색하는 방법입니 다.다음은 "some text"​가 ​포함된 모든 행을 반 환는 검색입니다.  
 +source=mytable "some text" </​nowiki>​|"​ 
 +|ORDER BY |<​nowiki>​SELECT *
FROM mytable
ORDER BY mycolumn desc </​nowiki>​|<​nowiki>​source=mytable | SORT -mycolumn </​nowiki>​|"​ 
 +|SELECT DISTINCT |<​nowiki>​SELECT DISTINCT mycolumn1mycolumn2 FROM mytable </​nowiki>​|<​nowiki>​source=mytable
| DEDUP mycolumn1
| FIELDS mycolumn1, mycolumn2 </​nowiki>​|"​ 
 +|SELECT TOP |<​nowiki>​SELECT TOP 5 mycolumn1, mycolumn2 FROM mytable </​nowiki>​|<​nowiki>​source=mytable
| TOP mycolumn1, mycolumn2 </​nowiki>​|"​ 
 +|INNER JOIN |<​nowiki>​SELECT *
FROM mytable1
INNER JOIN mytable2
ON mytable1.mycolumn=mytable2.mycolumn </​nowiki>​|<​nowiki>​source=mytable1  
 +| JOIN type=inner mycolumn [ SEARCH source=mytable2 ]  
 +참고: 다음과 같은 두 가지 조인 방법이 더 있습 니다.  
 +lookup 명령어를 사용하여 외부 테이블 의 필드 추가:  
 +... | LOOKUP myvaluelookup mycolumn OUTPUT myoutputcolumn  
 +하위 검색 사용: source=mytable1 [    
SEARCH source=mytable2 mycolumn2=myvalue  
 +|FIELDSmycolumn2 ] </​nowiki>​|"​ 
 +||<​nowiki></​nowiki>​|<​nowiki></​nowiki>​| 
 +|LEFT (OUTER) JOIN |<​nowiki>​SELECT *
FROM mytable1
LEFT JOIN mytable2
ON mytable1.mycolumn=mytable2.mycolumn </​nowiki>​|<​nowiki>​source=mytable1  
 +| JOIN type=left mycolumn [ SEARCH source=mytable2 ] </​nowiki>​|"​ 
 +|SELECT INTO |<​nowiki>​SELECT *
INTO new_mytable IN mydb2 FROM old_mytable </​nowiki>​|<​nowiki>​source=old_mytable
| EVAL source=new_mytable | COLLECT index=mydb2  
 +참고: COLLECT는 일반적으로 많은 비용을 들 여 계산되는 필드를 향후에 보다 신속하게 액세 스할 수 있록 Splunk로 다시 저장는 데 사 용됩니다. 이 예는 일반적이지 않지만 SQL 명령 어와 비교하기 위해 제공되었습니다. ​source 이 름은 orig_source로 바뀝니다. </​nowiki>​|"​ 
 +|TRUNCATETABLE |<​nowiki>​TRUNCATE TABLE mytable ​</​nowiki>​|<​nowiki>​source=mytable | DELETE </​nowiki>​
 +|INSERT INTO |<​nowiki>​INSERT INTO mytable
VALUES (value1, value2, value3,​....) </​nowiki>​|<​nowiki>​참고:​ SELECT INTO를 참조하십시오.개별 레 코드는 검색 언어를 통해 추가되지 않지만 필요 한 경우 API를 통해 추가할 수 있습니다. </​nowiki>​|"​ 
 +|UNION |<​nowiki>​SELECT mycolumn
FROM mytable1
UNION
SELECT mycolumn FROM mytable2 </​nowiki>​|<​nowiki>​source=mytable1
| APPEND [ SEARCH source=mytable2] | DEDUP mycolumn </​nowiki>​|"​ 
 +|UNIONALL |<​nowiki>​SELECT *
FROM mytable1
UNION ALL
SELECT * FROM mytable2 </​nowiki>​|<​nowiki>​source=mytable1
| APPEND [ SEARCH source=mytable2] </​nowiki>​|"​ 
 +|DELETE |<​nowiki>​DELETE FROM mytable WHERE mycolumn=5 </​nowiki>​|<​nowiki>​source=mytable1 mycolumn=5 | DELETE </​nowiki>​| 
 +|UPDATE |<​nowiki>​UPDATE mytable
SET column1=value,​ column2=value,​... WHERE some_column=some_value </​nowiki>​|<​nowiki>​참고:​ Splunk에서 레코드를 업데이트할 경우 몇 가지 고려할 점이 있습니다. 첫째, Splunk는 항 상 가장 최근의 결과를 먼저 반환하므로 새 값을 Splunk에 추가할 수 있고(INSERT INTO 참조) 이전 값을 삭제하는 것에 대해서는 신경쓸 필요 가 없습니다. 둘째, 검색 시 항상 중복된 결과를 제거하여 가장 최근의 값만 사용되도록 할 수 있 습니다(SELECT DISTINCT 참조).마지막으로,​ 이전 레코드를 실제로 삭제할 수 있습니다 (DELETE 참조). </​nowiki>​|"​
 ====== 검색 기초 ====== ====== 검색 기초 ======
   *와일드카드지원   *와일드카드지원
data/search.txt · Last modified: 2019/02/25 14:50 (external edit)