표준 ELK 설정에서 ElasticSearch 클러스터에 기록되는 로그 메시지의 급증을 처리하는 가장 좋은 방법은 무엇입니까?ElasticSearch/Logstash/Kibana 로그 트래픽의 스파이크를 처리하는 방법
Google은 웹 사이트 로깅 요구 사항에 대해 AWS에서 표준 ELK (ElasticSearch/Logstash/Kibana) 설정을 사용합니다.
다른로드 밸런서 뒤에있는 자동 확장 그룹의 자동 확장 그룹에 로그하는 Logstash 인스턴스의 자동 확장 그룹이로드 밸런서 뒤에 있습니다. 그런 다음 Kibana를 제공하는 단일 인스턴스가 있습니다.
우리는 매일 2 개의 Logstash 인스턴스와 2 개의 ElasticSearch 인스턴스를 실행합니다.
당사 웹 사이트는 이벤트 중 단기간에 높은 수준의 트래픽을 경험합니다. 이러한 이벤트 중에 트래픽은 약 2000 % 증가합니다. 우리는 이러한 사건이 발생했을 때 사전에 잘 알고 있습니다.
현재 우리는 이벤트 중에 일시적으로 ElasticSearch 인스턴스의 수를 늘립니다. 그러나 우리는 우리가 너무 빨리 축소되어서 우리가 파편을 잃었고 우리의 색인을 손상 시켰음을 의미하는 문제를 가지고 있습니다.
auto_expand_replicas
설정을 "1-all"
으로 설정하여 각 노드에 모든 데이터의 복사본이 있는지 확인하려고 했으므로 크기를 얼마나 빠르게 확대 또는 축소 할 것인지 걱정할 필요가 없습니다. 모든 데이터를 새 노드로 전송하는 데 얼마나 많은 오버 헤드가 발생합니까? 우리는 현재 약 2 주간의 로그 데이터 만 보관합니다. 이는 약 50GB의 데이터를 처리합니다.
나는 데이터 노드의 수를 동일하게 유지하면서 검색 트래픽의 증가를 처리하기 위해 데이터 노드가 아닌 별도의 자동 크기 조정 그룹을 사용한다고 언급했습니다. 이전에 언급 한 사건과 같은 어려운 상황에서 도움이 될까요?
ES의 임시 자동 확장을 사용하는 특별한 이유는 무엇입니까? 클러스터에 필요한 노드의 수는 주로 인바운드 메시지 속도가 아니라 저장하려는 데이터의 양과 데이터를 쿼리하는 방법에 따라 달라집니다. –
ES 클러스터에서 노드 수를 늘리면 처리되는 인바운드 메시지 수를 늘릴 수 있다는 인상을 받았습니다. – bScutt
그건 사실 일지 모르지만 그다지 실용적이지 않다는 것을 스스로 발견했습니다. Logstash가 메시지를 가져올 수있는 중간 버퍼 (예 : 메시지 브로커)가있는 것처럼 스파이크를 다루는 더 나은 방법이 있다고 생각합니다. 이것은 분명히 로그 메시지의 가용성에 대한 까다로운 요구 사항을 요구하지 않습니다. –