각 상태에 대한 설명은 아래와 같습니다.
상태 | 설명 |
---|---|
green | 프라이머리와 레플리카 샤드가 모두 노드에 정상적으로 배치되어있는 상태 |
yellow | 레플리카 샤드가 정상적으로 배치되어 있지 않은 상태 (색인에는 영향을 주지 않으나, 검색 성능에 영향을 줍니다.) |
red | 프라이머리 샤드가 정상적으로 배치되어 있지 않은 상태 (색인과 검색에 영향을 주며, 문서 유실을 발생시킬 수 있음.) |
어떤 인덱스가 yellow or red 인지 확인하는 것이 필요합니다.
cat indices 요청을 통해, 아래와 같이 각 인덱스 별 상태를 확인할 수 있습니다.
curl -X GET "<ES url>:<port>/_cat/indices" | grep -i red
curl -X GET "<ES url>:<port>/_cat/indices" | grep -i yellow
날짜별로 인덱스를 생성하고 있고 하루가 지나면 해당 인덱스에 대한 스냅샷을 찍어두는 상황에서는, 장애 상황이라고 할 수 없습니다. 과거 날짜의 문서를 담고 있는 idnex가 red이더라도 스냅샷을 이용해 다시 문서를 사용할 수 있도록 만들 수 있기 때문입니다.
또한, 날짜별로 인덱스를 만들고 있기 때문에, 해당 날짜가 지난 경우에는 문서가 추가되지 않는 상황이기 때문에 문서유실도 발생하지 않습니다.
따라서 해당 경우는 장애 수준은 아니라는 뜻이 됩니다.
위 상황에서 하나만 바꾸어서 오늘 날짜의 index가 red인 경우를 생각해 봅시다.
이 경우에는 프라이머리 샤드의 일부 혹은 전체가 제대로 배치되지 않은 상태이기 때문에 문서유실이 발생합니다.
curl -X GET "<ES url>:<port>/_cat/shards?h=idx,sh,pr,st,docs,unassigned.reason" | grep -iv started
위 명령어를 통해 어떤 샤드에 어떤문제가 있는 지 확인할 수 있습니다.
나오는 샤드의 개수를 통해 문서유실이 얼마나 일어나고 있는지 확인할 수 있습니다.
ELK를 사용해서, Logstash를 이용해 쌓고 있는 상황인 경우에는 source가 되는 log 파일을 이용해 인덱싱을 다시해주어야 할 수 있습니다.