2021년 10월 30일 토요일

하위 디렉토리 재귀 접근

C:\log 하위 디렉토리의 모든 로그를 가져와보자.
C:\log>dir /b/s
C:\log\1001
C:\log\1002
C:\log\1003
C:\log\1004
C:\log\1005
C:\log\1001\1001.log
C:\log\1002\1002.log
C:\log\1003\1003.log
C:\log\1004\1004.log
C:\log\1005\1005.log
C:\log\1005\last
C:\log\1005\last\last.log

2021년 10월 24일 일요일

디렉토리 및 파일 동시 생성

윈도우
C:\log>for /l %i in (1001, 1, 1023) do (mkdir %i && echo %i > %i\%i.log)
C:\log>dir /s/b *.log
C:\log\1001\1001.log
C:\log\1002\1002.log
C:\log\1003\1003.log
C:\log\1004\1004.log
C:\log\1005\1005.log
C:\log\1006\1006.log
C:\log\1007\1007.log
C:\log\1008\1008.log
C:\log\1009\1009.log
C:\log\1010\1010.log

2021년 10월 17일 일요일

엘라스틱의 key-value 처리

스플렁크는 key-value 구조를 갖는 데이터에 대한 동적 필드 생성을 자동으로 처리해준다. 이게 싫으면 props.conf의 KV_MODE 설정을 바꾸면 됨.


2021년 10월 11일 월요일

엘라스틱 Runtime field - 4th

읽기 스키마 맛을 본 뒤론 가급적 런타임 필드를 사용하려고 한다. 다음은 URI 필드에서 url과 변수 정보를 런타임 필드로 추출하는 구문.
PUT test/_mapping
{
  "runtime": {
    "url": {
      "type": "keyword",
      "script": "emit(grok('(?<url>[^?]+)').extract(doc['uri.keyword'].value).url)"
    },
    "param": {
      "type": "keyword",
      "script": "emit(grok('[^?]+\\\\??(?<param>.*)').extract(doc['uri.keyword'].value).param)"
    }
  }
}

2021년 10월 5일 화요일

엘라스틱 Runtime field - 3rd

다음은 url 필드에서 추출한 파일과 확장자 정보를 이용해서 런타임 필드를 만드는 painless 스크립트. 정보 추출 범위는 .을 포함한 url만으로 제한했다.
PUT iislog/_mapping
{
  "runtime": {
    "file": {
      "type": "keyword",
      "script": """
        if (doc['url'].value.contains('.')) {
          String result = grok('.*\\/(?<file>.*)').extract(doc['url'].value).file;
          emit(result);
        }
      """
    },

2021년 10월 4일 월요일

블로그 접속 추이 변화(feat. 코로나)

본격적으로 블로그를 시작한 게 15년이니 햇수로 7년이 되어간다. 나름 우상향하는 페이지뷰 보는 재미에 꾸준할 수 있었지 않나 싶다. 17년부터 시작한 엘라스틱 관련 포스팅이 유입을 늘리는 데 도움이 됐다는 게 개인적인 생각. 그런데 20년 이후 하향세가 두드러진다(..)


크리에이티브 커먼즈 라이선스