본문 바로가기
DevOps

AWS Elasticsearch 10MB 제한

by 헬로월드 2021. 9. 26.
반응형

AWS Elasticsearch는 인스턴스 유형에 따라 네트워크 제한이 있습니다.

https://docs.aws.amazon.com/opensearch-service/latest/developerguide/limits.html


프리티어나 가볍가 사용하려면 10MB 제한 내에서 사용해야되는데 Logstash 기본값은 20MB로 보내기 때문에 데이터가 많아지면 Elasticsearch에 저장이 되지 않습니다.

 

Logstash에서 보내는 용량을 조절하기 위해서는 https://github.com/awslabs/logstash-output-amazon_es 플러그인을 설치하면 보내는 용량을 조절할 수 있습니다.

 

저는 EC2에 Docker logstash를 설치 했었는데 플러그인 설치과정에서 에러가 발생했습니다. 그래서 도커를 사용하지 않고 직접 설치하였습니다.

 

logstash 설치

# java 설치
sudo yum install java-11-amazon-corretto

# logstash 설치
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-oss-7.12.1-linux-x86_64.tar.gz
sudo tar xvf logstash-7.12.1-linux-x86_64.tar.gz
sudo mv logstash-7.12.1 logstash

# 플러그인 설치
sudo bin/logstash-plugin install logstash-output-amazon_es

 

logstash/config/pipiline.yml 수정

- pipeline.id: main
  path.config: "/home/ec2-user/logstash/pipeline"

 

 

 

/logstash/pipieline/logstash.conf 생성

input {
 tcp {
  port => 5000
  codec => json_lines
 }
}

output {
 if [log_type] and [server_name]{
  amazon_es {
   hosts => ["https://....ap-northeast-2.es.amazonaws.com:443"]
   region => "ap-northeast-2"
   aws_access_key_id => ''
   aws_secret_access_key => ''
   max_bulk_bytes => 9999999
   index => "log-%{[server_name]}-%{[log_type]}-%{+YYYY.MM.dd}"
  }
 } else if [appname] and [profile]{
  amazon_es {
   hosts => ["https://....ap-northeast-2.es.amazonaws.com:443"]
   region => "ap-northeast-2"
   aws_access_key_id => ''
   aws_secret_access_key => ''
   max_bulk_bytes => 9999999
   index => "log-%{[appname]}-%{[profile]}-%{+YYYY.MM.dd}"
  }
 } else {
  amazon_es {
   hosts => ["https://....ap-northeast-2.es.amazonaws.com:443"]
   region => "ap-northeast-2"
   aws_access_key_id => ''
   aws_secret_access_key => ''
   max_bulk_bytes => 9999999
   index => "logstash-%{+YYYY.MM.dd}"
  }
 }
}

max_bulk_bytes 가 보내는 용량을 조절하는 옵션입니다.

 

실행

sudo logstash/bin/logstash &
728x90