Kibana index pattern 및 chart, alias로 변경하기

이 포스팅은 기존에 사용하던 Kibana 인덱스 패턴을 alias로 변경하고 사용 중인 모든 chart, dashboard를 변경된 인덱스 패턴으로 마이그레이션하는 과정을 담은 글입니다.

1. index alias 생성하기

Kibana 인덱스 패턴을 alias로 변경하기 위해서는 당연히 index alias를 먼저 생성해야 한다.
기존에 index-name-yyyy-mm-dd 형태의 인덱스로 들어오는 데이터의 차트를 그리기 위하여
index-name-* 이라는 인덱스 패턴을 생성하여 관리중이었다.
하지만 데이터의 특성 상 지나간 데이터보다는 오늘 날짜의 데이터가 중요하였고, 주로 보는 데이터 역시 오늘 날짜의 데이터였다.
그래서 매일 어제 날짜의 인덱스 alias를 지우고, 오늘 날짜의 인덱스 alias를 생성하도록 하였다.

예제
yesterday=$(date '+%Y-%m-%d' -d '1 day ago');
today=$(date '+%Y-%m-%d');
indices=("index-name" "index-name2")

for index in "${indices[@]}"; do
    echo $index
    curl -XPOST -H 'Content-Type: application/json' 'https://es_host:9200/_aliases?pretty' -d'
    {
        "actions" : [
            { "remove" : { "index" : "'$index'-'$yesterday'", "alias" : "'$index'" } },
            { "add"    : { "index" : "'$index'-'$today'", "alias" : "'$index'" } }
         ]
    }'
done  

2. Kibana에서 인덱스 패턴 alias로 생성하기

기존에 Kibana 인덱스 패턴을 생성했던 것처럼 생성한 alias로 index pattern을 잡고 신규로 생성한다.
생성하는 방법은 아래와 같다.
Kibana > Management > Index Patterns > +Create Index Pattern > index pattern에 생성한 alias 입력

3. 사용중인 Object들 Export 받기

이 메뉴는 키바나 서버를 옮기거나 새로 생성할 때 간편하게 할 수 있는 기능이다.
Kibana > Management > Saved Objects > Export Everything
위 순서로 사용중인 Object들 모두를 export 받는다.

4. 새로 생성한 index pattern으로 replace 하기

위에서 export를 실행하면 downloads 폴더에 export.json 파일이 생성 될 것이다.
혹시나 잘 못 수정하게되면 롤백을 해야하니 export.json 파일을 복사해두고
기존에 사용중이던 인덱스 uuid를 이번에 새로 생성한 alias index의 uuid로 모두 변경한다.
uuid는 index patterns 화면에서 해당 인덱스를 선택하면 url에서 확인할 수 있다.
https://your-kibana-url/app/kibana#/management/kibana/indices/your-index-uuid?_g어쩌구저쩌구….
대충 위와 같은 url을 보일 것이다.
파일 편집기를 열어 기존의 인덱스 uuid를 새로 생성한 uuid로 모두 replace하고 저장한다.

5. 편집한 export.json import 하기

3번에서 눌렀던 Export Everything 버튼 옆에 Import 버튼이 있다.
이 Import 버튼을 누르고 편집한 export.json을 업로드 한다.
주의사항으로는 혹시나 패턴에 Script를 생성했을 경우 오류가 발생할 수 있다.
오류가 발생한다면 복사해두었던 export.json_복사본을 재 업로드하고, 기존에 사용 중이던 인덱스와 같이 스크립트를 생성하여 다시 업로드하면 된다.

6. 기존에 사용하던 인덱스 패턴은 삭제하기

이제 사용하지 않는 인덱스 패턴은 정리한다.

comments powered by Disqus