1. 문제 상황
AWS Managed OpenSearch 클러스터를 운영하던 중, Fluent Bit을 통해 수집되던 로그가 어느 순간부터 인덱싱되지 않는 현상이 발생. 매일 날짜 기반으로 daily-logs-YYYY-MM-DD 형태의 인덱스가 생성되어야 하지만, 특정 시점부터 새로운 인덱스가 더 이상 생성되지 않는 상황.
환경 정보:
- 클러스터: AWS Managed OpenSearch
- 노드 수: 4개 (Data Nodes)
2. 트러블슈팅 과정
1) Fluent Bit 상세 로그 활성화
문제의 원인을 정확히 파악하기 위해, 가장 먼저 데이터 수집기인 Fluent Bit에서 OpenSearch로 전송 시 발생하는 로그를 상세히 확인해야 한다. 이를 위해 Fluent Bit의 [OUTPUT] 설정에 Trace_Error On 및 Trace_Output On 옵션을 추가하여 배포한다.
fluent-bit.conf 설정 예시:
[SERVICE]
...
Log_Level debug
Log_File /var/log/fluent-bit.log
...
2) 로그 분석 및 원인 파악
Fluent Bit Pod의 로그를 확인하면, OpenSearch API가 반환하는 상세한 오류 메시지를 볼 수 있다. 클러스터의 최대 shard 개수 제한을 초과했다는 내용 로그 확인.
오류 로그:
{
"type": "illegal_argument_exception",
"reason": "Validation Failed: 1: this action would add [5] total shards, but this cluster currently has [3998]/[4000] maximum shards open;"
}
분석:
- AWS OpenSearch는 노드 사양에 따라 노드당 최대 shard 개수가 정해져 있다. (예: 1,000개)
- 현재 클러스터는 4개 노드이므로, 총 4,000개의 shard를 가질 수 있다.
- 별도의 인덱스 템플릿이 없으면 OpenSearch는 인덱스 생성 시 기본적으로 5개의 Primary Shard와 1개의 Replica(총 10개 shard)를 생성한다.
3) 인덱스 템플릿을 이용한 shard 개수 최적화
근본적인 문제 해결을 위해, 앞으로 생성될 인덱스들이 1개의 shard만 갖도록 인덱스 템플릿을 생성한다. 이렇게 하면 shard 수를 효율적으로 관리하여 클러스터의 리소스를 절약하고 동일한 노드 수에서 훨씬 더 많은 인덱스를 관리할 수 있다.
OpenSearch Dev Tools 콘솔에서 아래와 같이 API 요청을 실행하여 인덱스 템플릿을 생성한다.
참고: https://opensearch.org/blog/optimize-opensearch-index-shard-size/
인덱스 템플릿 생성 API:
PUT _index_template/daily_logs_template
{
"index_patterns": ["daily-logs-*"],
"template": {
"settings": {
"number_of_shards": "1",
"number_of_replicas": "1"
}
},
"priority": 200,
"_meta": {
"description": "Template for daily logs"
}
}
4) 적용된 인덱스 설정 확인
템플릿을 적용한 후 새로 생성된 인덱스의 설정을 확인하여 shard 개수가 의도대로 지정되었는지 확인.
인덱스 설정 확인 API:
GET /daily-logs-2025-07-08/_settings
출력:
{
"daily-logs-2025-07-08": {
"settings": {
"index": {
"creation_date": "1751986686728",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "...",
"version": {
"created": "..."
},
"provided_name": "daily-logs-2025-07-08"
}
}
}
}
number_of_shards가 "1"로 설정된 것을 확인할 수 있다.
3. 결론
OpenSearch 클러스터 운영 시에는 데이터의 양과 성격에 맞춰 반드시 인덱스 템플릿으로 shard 전략을 미리 수립하는 것이 중요하다. 이를 통해 예기치 않은 장애를 예방하고 클러스터 리소스를 효율적으로 사용할 수 있다.
'Data > OpenSearch' 카테고리의 다른 글
| Fluent Bit를 사용하여 로그 시간 파싱 후 OpenSearch로 전송하기 (0) | 2025.09.17 |
|---|