Splunk를 사용하다 보면 위의 정보를 확인해야 할 때가 있다. 그런데 막상 정보를 어디서 확인해야 할지 모르겠다. CM이니 LM이니 접속을 했는데, 내가 생각하는 데이터가 안나온다.
그럴때 알아두면 유용한 명령어 이다. 그냥 search head에서 검색을 해도 결과가 나오기 때문에 숙지해두자.
아래의 1번부터 3번까지는 일반적인 Search Head에서도 실행할 수 있고 4번은 LM에서 실행하는 쿼리를 첨부했다.
dbinspect 명령어를 사용해서 index를 조회하면, 내가 확인하려는 인덱스의 대략적인 모든 정보가 나온다.
예를 들어 botsv1 인덱스의 정보를 보고싶다고 하자. 그러면 아래와 같이 입력해준다.
| dbinspect index=botsv1
각 필드에 대한 설명은 아래와 같다. 따라서, botsv1의 크기는 sizeOnDiskMB
에 보이는 3개의 값을 모두 합한 약 8845MB이다.
필드명 | 설명 |
---|---|
bucketId | "index~id~guId" 형식으로 구성된 문자열 (예: summary~2~4491025B-8E6D-48DA-A90E-89AC3CF2CE80) 버킷의 고유한 아이디이다. |
endEpoch | 버킷의 마지막 이벤트 타임스탬프 (UNIX epoch 시간, 초 단위) |
eventCount | 버킷 안의 이벤트 총 개수 |
guId | 인덱스를 관리하는 서버의 전역 고유 식별자(GUID), 인덱스 복제 관련 |
hostCount | 버킷 안의 고유한 호스트 수 |
id | 버킷의 로컬 ID 번호 (버킷이 생성된 인덱서에서 생성) |
index | 검색할 때 지정한 인덱스 이름 (예: index=*) |
modTime | 버킷이 마지막으로 수정되거나 업데이트된 시간 |
path | 버킷이 저장된 위치 (클러스터링 여부에 따라 다름) |
rawSize | 압축이나 인덱싱 전, 버킷의 원시 데이터 파일 크기 (바이트) |
sizeOnDiskMB | 버킷이 차지하는 디스크 공간 크기 (메가바이트, 압축된 원시 데이터 파일 및 인덱스 파일 포함) 즉, jornal파일이 된 후의 저장된 사이즈이다. |
sourceCount | 버킷 안의 고유한 소스 수 |
sourceTypeCount | 버킷 안의 고유한 소스 유형 수 |
splunk_server | 분산 환경에서 인덱스를 호스팅하는 Splunk 서버의 이름 |
startEpoch | 버킷의 첫 번째 이벤트 타임스탬프 (UNIX epoch 시간, 초 단위) |
state | 버킷의 상태 ('hot', 'warm', 'cold') |
tsidxState | 버킷의 tsidx 파일 상태 ('full'은 전체 크기, 'mini'는 축소됨) |
corruptReason | 버킷이 손상된 경우 그 이유 (corruptonly=true일 때만 나타남) |
그냥 빨리 이벤트 개수가 몇개인지 보고싶다. 상세한 정보는 필요없다.
그렇다면 아래의 명령어를 실행해보자.
| eventcount index=botsv1 report_size=true summarize=true list_vix=true
| eval size_bytes = size_bytes/1024/1024
이럴경우 botsv1 인덱스에 저장된 이벤트의 개수는 count에서, size_bytes에서 크기를 . 볼 수 있다.
sourcetype, host별로 이벤트가 언제부터 쌓여있고, 몇개나 쌓여있는지 확인할 수 있다.
| metadata type=sourcetypes index=botsv1
이것은 라이센스 마스터에서 실행해야 한다. 위의 1~3 명령어는 기본 검색 헤드에서도 결과가 나온다. 그 외 아래의 정보를 알고싶다면, 아래의 쿼리를 활용하기!
index=_internal source=*license_usage.log type=Usage idx="YourIndexHere"
| timechart span=1d sum(b) as Usage
| eval Usage=round(Usage/ 1024 / 1024,3)
index=_internal source=*license_usage.log idx=* type=Usage
| timechart span=1d sum(b) as Usage by idx
| foreach *
[ eval <<FIELD>>=round(<<FIELD>> / 1024 / 1024, 3) ]
index=_internal source=*metrics.log group="per_sourcetype_thruput"
| eval GB=kb/(1024*1024)
| timechart span=1d sum(GB) by series
| eval sourcetype=lower(series)
timechart의 범위 혹은 stats의 범위 등을 활용해서 일별, 시간별, 월별로 추출하면 되겠다.
splunk 관련된 좋은 정보들 감사합니다!