[Elasticsearch] Test Code 작성용 템플릿 Class.

Elastic/Elasticsearch 2015. 8. 12. 10:52

정말 단순히 제가 테스트 할 때 필요해서 기록해 두는 겁니다. ^^;

별로 도움 안될 확율이 높으니 관심있게 보지 마세요.


/**
 * Created by hwjeong
 * 이 템플릿은 Elasticsearch Test Code를 작성하는데 기본으로 사용하기 위해 작성 하였습니다.
 * 사용 방법은 두 가지 입니다.
 * settings.put("cluster.name", "elasticsearch") 를 통해서 기본적으로 구성 및 등록할 클러스터를 생성합니다.
 * settings.put("path.data", "data/index") 정보는 local 테스트 시 색인 데이터를 어디에 저장할지 설정을 하게 됩니다.
 *      client 노드를 구성해서 테스트를 할거라면 생성한 프로젝트 root 경로 아래 data/index 라는 폴더가 생성이 됩니다.
 * nodeBuilder를 통해서 테스트 및 생성할 노드의 특성을 정의 할 수 있습니다.
 *  .data(true) 설정 시 작성하시는 노드는 데이터 노드의 특성을 갖습니다.
 *  .local(true) 설정 시 같은 머신의 jvm 내부 노드간 통신이 이루어 지며 다른 jvm 노드간에는 통신이 되지 않습니다.
 *      false 로 설정 시 네트워크 분리가 되어 있지 않을 경우 운영 서버나 다른 클러스터 군으로 연결 되는 것을 주의 하셔야 합니다.
 *  .client(true)
 *      true 라는 의미는 client node 로 사용하겠다는 의미 이며, 어떠한 data 도 저장 하지 않겠다는 것입니다.
 *      즉, node.data 가 false 로 설정 되는 것과 같습니다.
 */
public class EsTestTemplate {

private static final Logger log = LoggerFactory.getLogger(EsTestTemplate.class);

private ImmutableSettings.Builder settings;
private Node node;
private Client client;

@Before
public void setup() throws Exception {
settings = ImmutableSettings.settingsBuilder();
settings.put("cluster.name", "elasticsearch");
// settings.put("node.name", "testNode");
// settings.put("path.data", "data/index");
// settings.put("gateway.type", "none");

node = NodeBuilder.nodeBuilder()
.settings(settings)
.data(true)
.local(false)
.client(false)
.node(); // included start() method.

client = node.client();
}

@After
public void tearDown() throws Exception {
client.close();
node.close();
}
}


※ 코드는 그냥 단순 nodebuilder 를 이용해서 테스트용 node 를 하나 생성 하거나 client를 생성 하는 내용입니다.


:

[Elasticsearch] 실행 및 중지 스크립트 테스트용.

Elastic/Elasticsearch 2015. 8. 12. 10:27

역시나 또 자꾸 까먹어서.. ^^

elasticsearch 뿐만 아니라 기타 다른 프로그램을 실행 시키고 중지 시킬 때 활용 하시면 됩니다.


[start.sh]

#!/bin/bash


DIR_NAME=`dirname "$0"`

DIR_HOME=`cd $DIR_NAME; cd ..; pwd`


$DIR_HOME/bin/elasticsearch > /dev/null 2>&1 & ES_PID=$!

echo $ES_PID > $DIR_HOME/bin/elasticsearch_daemon.pid


[stop.sh]

#!/bin/bash


DIR_NAME=`dirname "$0"`

DIR_HOME=`cd $DIR_NAME; cd ..; pwd`


ES_PID=`cat $DIR_HOME/bin/elasticsearch_daemon.pid`

kill -9 $ES_PID

echo "Elasticsearch Daemon($ES_PID) is killed"

rm -f $DIR_HOME/bin/elasticsearch_daemon.pid


참고로 위 실행 스크립트는 설정 최적화나 뭐 그런건 없습니다.

단순 테스트 좀 빨리 해보기 위해서 copy & paste 의 시간 절약용 입니다. :)

:

[SHELL] 실행 스크립트의 HOME PATH 설정.

ITWeb/개발일반 2015. 8. 7. 10:33

start.sh 이나 stop.sh 같은걸 만들 때 필요했던건데 늘 작성하다 보면 잊어버리더라구요.

그래서 일단 남겨 보고자 합니다.


별 내용은 아닙니다. ㅡ.ㅡ;;


#!/bin/bash


DIR_NAME=`dirname "$0"`

DIR_HOME=`cd $DIR_NAME; cd ..; pwd`


보통 실행 스크립트가 위치한 곳들은 HOME/bin 이라는 곳에 위치를 하게 됩니다.

그래서 위와 같이 스크립트를 작성하면 HOME 경로를 잡을 수 있습니다.


실제 돌려 보시고 echo 로 찍어 보시면 이해가 쉽게 되실 거예요.

:

[Kibana] Kibana 에서 Index Alias 사용하기

Elastic/Kibana 2015. 8. 6. 18:38

보통 ELK 조합으로 처음 사용하시는 분들의 경우 index 수가 많아 질 수록 kibana chart 생성이 느려 지거나 shard failed  같은 메시지를 경험 하실수 있을 텐데요.


이유는 아주 가까운 곳에 있습니다.

이미 아시는 분들도 많을 테지만 첨 접하시는 분들에게는 유용할 수 있으니 올려 보겠습니다.


기본적으로 logstash를 사용하면 time based 로 index 가 생성 됩니다.

보통 아래와 같은 패턴으로 정의 됩니다.

logstash-%{+YYYY.MM.dd}


위와 같이 정의가 되어 있기 때문에 kibana 에서는 아래와 같이 설정이 되는데요.

logstash-*

- Settings -> Indices 에 있습니다.


즉, 이렇게 설정이 되기 때문에 생성된 모든 index 를 대상으로 질의를 하게 됩니다.

그럼 어떤 문제들이 발생 할지 예측 가능 하시겠죠.


전체 index를 대상으로 질의를 하기 때문에 search thread 가 생성되어 있는 shard 수 만큼 실행 되게 됩니다.

결국 시스템 리소스는 쭈욱 올라갈거고 이렇게 되다 보면 timeout 등이 발생을 하게 될 겁니다.

결국 shard failed 현상이 나오게 되는 것입니다.


이런 문제를 해결 하기 위해서는 index aliases 기능을 활용 하시면 됩니다.

어차피 보고 싶은 정보는 최신 정보이기 때문에 latest index 에 대해서만 alias 를 생성해 주시고 chart 및 dashboard 생성 시 생성한 alias 를 대상으로 만들어 주시면 됩니다.

하지만 하루가 지나면 alias 를 다시 latest index 를 바라 볼 수 있도록 바꿔 줘야 하기 때문에 이런 부분은 관리 기능을 만들어서 사용하시면 별 문제 없이 지속적으로 사용을 하실 수 있을 것입니다.


[Index Aliases]

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html


:

[Kibana4.x] Value format 설정하기

Elastic/Kibana 2015. 7. 29. 17:46

kibana를 이용하다 보면 화면에 보여지는 값에 대한 format 을 고치고 싶은 욕구가 생깁니다.

이걸 어디서 고쳐줘야 하나 싶은데 역시 매뉴 몇번 눌러 보면 찾을 수 있습니다.

귀찮아 하시는 분들을 위해 공유해 봅니다.


[참고문서]

https://www.elastic.co/blog/kibana-4-1-field-formatters


[매뉴 tree]

## Global 설정

GNB -> Settings -> Advanced


## 특정 인덱스의 field format을 바꾸고 싶을 경우

GNB -> Settings -> Indices -> Select Index Patterns -> controls 컬럼에서 수정하고자 하는 field 클릭


[Advanced 화면]



: