Splunk를 효과적으로 사용하기 위해서는 SQL문법과 Linux 명령어에 대한 기본적인 이해가 필요하다. 이 두가지는 Splunk의 검색 및 분석 기능을 보다 효율적으로 활용하는 데 도움이 된다.
이번 글은 Splunk 학습 전에 알아두면 좋을 SQL 문법과 Linux 명령어의 핵심 내용을 정리하는 글이다.
Linux 명령어는 파일 관리, 시스템 모니터링, 텍스트 처리 등 다양한 작업을 수행하는 데 사용된다. Splunk 에서도 이러한 명령어에 기반한 검색 및 분석 기능을 제공하므로 기본적인 리눅스 명령어를 숙지하는 것이 중요하다.
명령어 | 설명 | 사용예시 |
---|---|---|
cd | Change Directory의 약자로 디렉토리를 이동하는 명령 | cd /parents/test - test 디렉토리로 이동cd .. - 상위 디렉토리로 이동 |
ls | List의 약자로 디렉토리 내 파일 목록을 나열하는 명령 | ls -al - 숨김파일을 포함하여 목록 자세히 출력ls -alRr - 하위 디렉토리까지 숨김파일을 포함한 목록을 자세히 역순으로 출력 |
pwd | Print Working Directory의 약자로 현재 디렉토리의 경로를 표시 | pwd - 현재 작업 중인 디렉토리의 경로를 출력 |
mkdir | Make Directory의 약자로 새로운 디렉토리를 생성 | mkdir abc - 현재 디렉토리에 abc 디렉토리 생성mkdir -p /a/b - 부모 디렉토리가 없을 경우 자동 생성 |
rmdir | Remove Directory의 약자로 빈 디렉토리를 삭제 | rmdir old_folder - old_folder 디렉토리 삭제 |
명령어 | 설명 | 사용예시 |
---|---|---|
mv | Move의 약자로 파일이나 디렉토리의 이름을 변경하거나 위치 이동 | mv a.txt b.txt - a.txt의 이름을 b.txt로 변경mv a.txt b.txt ddd - a, b파일을 ddd 디렉토리로 이동 |
rm | Remove의 약자로 파일이나 디렉터리를 삭제 | rm abc.txt - 해당 파일 삭제rm -i abc.txt - 삭제 시 확인 메시지 표시rm -rf abc - abc 디렉토리와 하위 내용 강제 삭제 |
cp | Copy의 약자로 파일이나 디렉터리를 복사 | cp a.txt b.txt - a.txt 파일을 b.txt 이름으로 복사cp -r source_dir dest_dir - 디렉토리와 하위 내용 모두 복사 |
touch | 파일 생성 또는 타임스탬프 갱신 | touch new_file.txt - 새로운 파일 생성 또는 기존 파일 시간 갱신 |
명령어 | 설명 | 사용예시 |
---|---|---|
cat | Concatenate의 약자로 파일 내용 출력 또는 파일 연결 | cat file.txt - 파일 내용 표시cat file1.txt file2.txt > combined.txt - 두 파일 내용 합쳐서 저장 |
grep | 특정 문자열 검색 | grep 'error' 파일명 - 특정 파일에서 'error' 문자열 찾기grep -i 'error' * - 대소문자 구분없이 모든 파일에서 검색 |
tail | 파일 마지막 부분 출력 | tail -f a.log - a로그 파일을 실시간으로 보기tail -n 50 file.txt - 마지막 50줄 보기 |
find | 파일, 디렉토리 검색 | find . -name "*.txt" - 현재 디렉토리에서 .txt 확장자 모두 찾기find . -name "*abc*" - abc가 포함된 파일 찾기 |
chmod | Change Mode의 약자로 파일/디렉토리 권한 변경 | chmod 755 file.sh - 실행 권한 부여 |
SQL은 데이터베이스에서 데이터를 관리하고 조작하는 언어이다. Splunk에서도 SQL과 유사한 쿼리 문법을 사용하므로 SQL의 기본 문법을 이해면 Splunk 사용이 더 쉬워진다.
작성 순서 : SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY - LIMIT
실행 순서 : FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY - LIMIT
SELECT 컬럼명1, 컬럼명2
FROM 테이블명
WHERE 조건;
LIKE 'PARK%'
: PARK으로 시작하는 데이터 검색LIKE '%PARK'
: PARK으로 끝나는 데이터 검색LIKE '%PARK%'
: PARK이 포함된 데이터 검색SELECT CATEGORY, PRICE, PRODUCT_NAME
FROM FOOD_PRODUCT
WHERE CATEGORY IN ('과자', '국', '김치', '식용유');
SELECT 그룹화할_컬럼, COUNT(집계할_컬럼)
FROM 테이블명
GROUP BY 그룹화할_컬럼
HAVING 집계_조건;
집계 함수: SUM, COUNT, MIN, MAX, AVG 등
SELECT A.컬럼명, B.컬럼명
FROM 테이블A A JOIN 테이블B B
ON A.키컬럼 = B.키컬럼;
SELECT 컬럼명,
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 기본결과
END AS 새컬럼명
FROM 테이블명;
SELECT IF(조건, 참값, 거짓값)
SELECT IFNULL(컬럼명, 대체값)
Splunk는 머신 데이터를 수집, 저장, 분석, 시각화할 수 있는 빅데이터 플랫폼이다. 서버/네트워크 로그, 애플리케이션 로그, 설비 데이터 등 다양한 형태의 머신 데이터를 처리할 수 있으며, 정형/ 비정형 데이터 모두 수용 가능하다.
Splunk는 SPL 이라는 자체 언어를 사용하지만, 이는 SQL과 유사한 파이프라인(|) 기반 구문을 가지고 있다. SQL의 SELECT, WHERE, GROUP BY 와 같은 개념이 SPL에도 유사하게 적용된다.
카테고리 | 명령어 |
---|---|
데이터 나열, 변환 | table, rename, fields, dedup |
통계 계산 | stats, top, rare, len(x) |
차트 시각화 | timechart, chart |
비교분석 | eval, case, cidrmatch, if, like, match |
다중문자열과 시간 | mvindex, split, substr, round, ruldecode, strftime, strptime, now |