2017년 6월 8일 목요일

[ES] elasticsearch Kibana Discover에서 사용하던 조건 그대로 DevTools 에서 사용하기

elasticsearch Kibana 에서 Discover에서 검색 한 조건 그대로 DevTools 에서 사용하기 위해서는 "query_string" 을 사용하면 된다. 아래는 예제이며, 검색 기간은 "range"로 적용하였다.
GET _search
{
  // 결과 값 개수
  "size" : 10,   

  // paging 의 start position
  "from" : 0,

  // 원하는 필드만 뽑을 수 있다.
  "_source" : ["referrer", "userAgent"],

  "query": {
    "bool": {
      "must" : [
        {
          // Discover에서 사용하던 query를 그대로 사용하고자 할 때 
          // "query_string" 사용 (쿼리 내용에 " 가 들어 갈 경우 \" 형식으로 치환해서 입력해주어야 한다)
          "query_string": {
            "query": "NAME:TOM"
            }
        },
        
        {
          // 검색 기간 설정 (한국시간 기준으로 뽑기 위해서 "time_zone" : "+09:00" 해주었다)
          "range": {
            "@timestamp" : {
              "gte" : "2017-03-21T00:00:00.000",
              "lte" : "2017-03-21T23:59:59.999",
              "time_zone": "+09:00"
            }
          }
        }
        
        
      ]
    }
  }
}

2016년 11월 30일 수요일

[javascript] get parameter from url

function getURLParameters(paramName)
{
    var sURL = window.document.URL.toString();
    if (sURL.indexOf("?") > 0)
    {
        var arrParams = sURL.split("?");
        var arrURLParams = arrParams[1].split("&");
        var arrParamNames = new Array(arrURLParams.length);
        var arrParamValues = new Array(arrURLParams.length);

        var i = 0;
        for (i = 0; i<arrURLParams.length; i++)
        {
            var sParam =  arrURLParams[i].split("=");
            arrParamNames[i] = sParam[0];
            if (sParam[1] != "")
                arrParamValues[i] = unescape(sParam[1]);
            else
                arrParamValues[i] = null;
        }

        for (i=0; i<arrURLParams.length; i++)
        {
            if (arrParamNames[i] == paramName)
            {
                return arrParamValues[i];
            }
        }
        return null;
    } else {
     return null;
    }
}

2016년 11월 16일 수요일

라즈베리파이3 (raspberry pi 3) 및 적외선 카메라 개봉기

개인적으로 집에서 컨텐츠를 만들기 위해서

그동안 눈 여겨보던 라즈베리파이를 구입하게 되었습니다.

어떤 키트를 살까? 어떤 모듈을 살까? 하고

몇일 고민한 끝에 라즈베리파이 키트를 구입하였습니다.

모델은 라즈베리파이3 이며

랜선, Micro SD카드, SD카드 리더기, HDMI 케이블, 어댑터, 

투명 케이스, 키트보관함 구성으로 구입하였습니다.





택배를 받았을 때 구성품 모습입니다.

1차적으로는 테스트 및 주요 기능 여부 확인을 위해

적외선 카메라 모듈 및 적외선 LED를

같이 구매하였습니다.

적외선 카메라 모듈의 경우 적외선 LED를 켜지 않을 경우

주간 카메라로 사용이 가능합니다.

일반 카메라, 적외선 카메라를 따로 구입하지 않으셔도 됩니다.


적외선 카메라 모듈 및 적외선 LED 모습입니다.

다음 포스팅은 라즈베리파이 구동 및 

카메라 테스트를 진행하겠습니다.




2016년 7월 12일 화요일

VisualVM jstatd

./rmiregistry 1099

./jstatd -p 1099  -J-Djava.security.policy=tools.policy -J-Djava.rmi.server.hostname=10.10.0.0

2016년 7월 11일 월요일

elasticsearch search query


GET _search
{
  
  "query": {
    "bool": {
      "must" : [
        { 
          "exists": { 
            "field": "exception.exception_class" 
          }
        },
        
        {
          "match": {
            "level": {
              "query" : "INFO"
            }
          }
        },
               
        {
          "range": {
            "@timestamp" : {
              "gte" : "now-1h",
              "lte" : "now",
              "time_zone": "+09:00"
            }
          }
        }
        
        
      ]
    }
  }
}

2016년 7월 6일 수요일

logstash output index naming daily

기존의 log4j 로그를 logstash를 이용하여 elasticsearch에 Indexing 하는 작업을 진행 하던 중 Index를 일별로 나누어서 관리를 하기 위해서 log-YYYY-MM-dd 형식으로 쌓기로 결정을 하게 되었음.

우선 아래의 depandency를 추가하여 기존 log4j 로그를 json형식으로 쌓이도록 하였음.

 net.logstash.log4j
 jsonevent-layout
 1.7

json형식으로 쌓인 로그를 아래와 같이 설정을 하였음

input {
  file {
    path => "/*"
    start_position => "beginning"
    type => "log4j-json"
    codec => json
  }
}

output {
  elasticsearch {
    index => "log-%{+YYYY-MM-dd}"
  }
}

위와 같이 설정을 하게 될 경우 logstash에서 output되는 current_time이 인덱스 명으로 사용이 되어 일 별 인덱스 생성이 가능하였다.

만약 실시간으로 로그를 전송하는 경우가 아니라 주기적으로 로그를 전송하게 된다면 index명에 들어가는 일자가 맞는 것일까?
로그가 실제로 쌓인 시간을 인덱스 날짜로 사용을 할 필요가 생겨 구글링을 통하여 아래와 같이 설정을 하였음

input {
  file {
    path => "/*"
    start_position => "beginning"
    type => "log4j-json"
    codec => json
  }
}

filter {
  ruby {
    code => "event['index_day'] = Time.at(event['@timestamp'].to_i).strftime('%Y-%m-%d')"
  }
}

output {
  elasticsearch {
    index => "log-%{index_day}"
  }
}

필터를 통하여 index_day라는 키에 @timestamp 값을 원하는 포맷으로 변경 한 값을 주어 index명에서 사용을 함으로서

로그에 있는 시간을 기준으로 index 설정이 가능해졌다.


====== 추가 ======

@timestame의 경우 한국 시간으로 표시 되지 않고 09:00 시간을 뺀 시간을 알려주고 있어 index명에서 한국 기준이 아닌 경우가 있어 아래와 같이 수정하여 해결함

code => "event['index_day'] = Time.at(event['@timestamp'].to_i).localtime.strftime('%Y-%m-%d')"


언제까지의 개인정보처리방침

1. 개인정보의 처리 목적 언제까지 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는...