'ALIAS'에 해당되는 글 3건

  1. 2020.05.25 [Filebeat] setup.ilm & setup.template 잘 쓰려면.
  2. 2015.08.06 [Kibana] Kibana 에서 Index Alias 사용하기
  3. 2014.02.24 [elasticsearch] alias 설정 시 주의 사항.

[Filebeat] setup.ilm & setup.template 잘 쓰려면.

Elastic/Beats 2020. 5. 25. 17:09

가끔 설정은 yml 에 잘 했는데 안될 때가 있습니다.

이게 어디에서 뭘로 했느냐에 따라 다른데요.

 

보통 beats 를 이용할 경우 자동으로 alias 생성 및 설정이 됩니다.

이 경우 elasticsearch 에서 동일하게 사용 하기 위한 ilm 과 template 설정을 하게 되면 동작이 잘 안되는 경우가 있는데요.

 

큰 차이는 is_write_index 설정 때문 입니다.

뭐 이것도 경우에 따라 다르게 나올 수 있지만 일반적이라면 저 설정 때문이다 생각 하시면 됩니다.

 

beats 에서는 libbeat 에서 자동으로 설정을 해줍니다.

 

// CreateAlias sends request to Elasticsearch for creating alias.
func (h *ESClientHandler) CreateAlias(alias Alias) error {
	// Escaping because of date pattern
	// This always assume it's a date pattern by sourrounding it by <...>
	firstIndex := fmt.Sprintf("<%s-%s>", alias.Name, alias.Pattern)
	firstIndex = url.PathEscape(firstIndex)

	body := common.MapStr{
		"aliases": common.MapStr{
			alias.Name: common.MapStr{
				"is_write_index": true,
			},
		},
	}

	// Note: actual aliases are accessible via the index
	status, res, err := h.client.Request("PUT", "/"+firstIndex, "", nil, body)
	if status == 400 {
		// HasAlias fails if there is an index with the same name, that is
		// what we want to check here.
		_, err := h.HasAlias(alias.Name)
		if err != nil {
			return err
		}
		return errOf(ErrAliasAlreadyExists)
	} else if err != nil {
		return wrapErrf(err, ErrAliasCreateFailed, "failed to create alias: %s", res)
	}

	return nil
}

하지만, elasticsearch 에서 수동으로 설정을 한다고 하면 꼭 "is_write_index:true" 설정을 해주셔야 alias 생성 및 등록이 잘 된다는거 알고 넘어 가자고요.

 

:

[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


:

[elasticsearch] alias 설정 시 주의 사항.

Elastic/Elasticsearch 2014. 2. 24. 13:46

[참고문서]

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html


elasticsearch에서 제공하고 있는 alias 기능은 매우 유용하게 사용할 수 있습니다.


1. 기본기능 - 별칭

- 분리 구성된 여러개의 인덱스를 묶어 하나의 인덱스처럼 사용이 가능합니다. 물론 검색 시 여러 인덱스로 질의할 수 있으나 매개변수로 지정해야 하는 불편함이 존재 하게 됩니다.

- 말 그대로 alias 기능의 별칭은 검색 목적에 맞게 인덱스 구성을 할 수 있다는 장점을 제공해 줍니다.


2.검색기능 - 필터

- 별칭 지정 후 filter 기능을 이용하여 별도 색인 또는 데이터 가공없이 가상의 인덱스를 구성할 수 있게 됩니다. 어디서 활용이 가능 할까요? 실시간 분석이나 사전 색인데이터 필터링을 통해 기능 확장이 가능해 보입니다.

- 검색 조건에서 사용하는 필터와 같은 기능을 제공하기 때문에 활용 범위는 다양합니다.


3. 분산/게이트웨이기능 - 라우팅

- 색인 시 지정한 샤드로만 데이터를 모을수도 있고, 검색 시 지정한 샤드로만 검색 질의를 수행할 수 있습니다.

- 즉, 불필요한 데이터 분산(샤딩) 작업을 줄일 수 있는 기능 입니다.

※ 샤드 지정 시 string 으로 지정해야 정상적으로 설정이 됨.


전에도 언급한적이 있지만 별칭을 통해 전체색인한 인덱스를 변경할 경우 서비스 다운타임 없이 적용하는데 유용한 기능이니 참고 하시면 좋을 것 같습니다.

: