Logstash 마이그레이션 Elasticsearch 데이터 방법 해독
우리는 logstash를 통해 데이터 이동 자체의 원리를 이해하기 쉽기를 희망합니다. logstash를 통해 원본 elasticsearch Cluster에서 데이터를 읽고 목표 elasticsearhCluster에 기록합니다. 상세한 조작은 다음과 같습니다.
logstash 디렉터리에 데이터 동기화를 위한 conf 파일을 만듭니다
vim ./logstash-5.5.3/es-es.conf
conf 파일을 설정합니다. index 이전만 하면 되기 때문에 대상 Cluster와 원본 Cluster의 index 이름은 같습니다.
input {
elasticsearch {
hosts => ["********your host**********"]
user => "*******"
password => "*********"
index => "logstash-2017.11.07"
size => 1000
scroll => "1m"
}
}
# , filter
filter {
}
output {
elasticsearch {
hosts => ["***********your host**************"]
user => "********"
password => "**********"
index => "logstash-2017.11.07"
}
}
conf 파일 설정 완료 후 logstash 실행
bin/logstash -f es-es.conf
이 지령을 실행할 때, 때때로 다음과 같은 오류 메시지가 나타날 수 있다
[FATAL][logstash.runner] Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting.
이것은 현재logstash 버전이 여러 개의 instance 공유 경로를 지원하지 않기 때문입니다.데이터, 따라서 시작할 때 명령줄에 "--path.data PATH"를 추가하여 서로 다른 실례에 다른 경로를 지정해야 합니다
bin/logstash -f es-es.conf --path.data ./logs/
만약 실행이 순조롭다면, 아래 명령을 실행하면 목표의elasticsearch에서 대응하는 index를 볼 수 있습니다
curl -u username:password host:port/_cat/indices
이상은logstash를 통해elasticsearch에서 지정한 index를 이동하는 방법을 소개했습니다. 다음은 실용적인 장면을 소개합니다.
** Elasticsearch를 자체 제작한 많은 고객들이 최근에 아리운 Elasticsearch라는 제품을 주목하고 있습니다.사용하려고 할 때 자체 구축된 데이터를 아리운 Elasticsearch로 어떻게 옮겨야 할지 곤혹스러웠다.logstash를 통해 클라우드에 구축된 Elasticsearch의 index 데이터를 신속하게 이전하는 방법을 소개합니다.**
이 방안의 논리는 매우 간단하다. 해체는 N개의es-to-es를 설정하는 conf 파일이지만, 이렇게 하는 것은 매우 번거롭다.사실logstash는 이 일을 대량으로 할 수 있는 능력을 제공했기 때문에 세 가지 중요한 개념을 미리 소개해야 한다.
참고 문서 Logstash Metadata로 Config Cleaner 및 Log Processing Faster 만들기
metadata의 특성 때문에 우리는 output에서 input의 index, type 정보를 직접 계승하고 목표 Cluster에서 원본 Cluster와 같은 index와 type, 심지어 id를 직접 만들 수 있습니다.
전체 과정에서 메타데이터 정보를 보고 클래스 debug 작업을 하려면 output에 설정을 추가해야 합니다.
stdout { codec => rubydebug { metadata => true } }
예제 구성 코드는 다음과 같습니다.
input {
elasticsearch {
hosts => ["yourhost"]
user => "**********"
password => "*********"
index => "*"# index
size => 1000
scroll => "1m"
codec => "json"
docinfo => true
}
}
# , filter
filter {
}
output {
elasticsearch {
hosts => ["yourhost"]
user => "********"
password => "********"
index => "%{[@metadata][_index]}"
}
stdout { codec => rubydebug { metadata => true } }
}
실행 후,logstash는 원본 Cluster의 모든 index를 목표 Cluster에 모두copy로 보내고,mapping 정보를 가지고 가서 index 내의 데이터 이동을 시작합니다.
건의: 정식으로 집행할 때
stdout { codec => rubydebug { metadata => true } }
이 설정 항목은 삭제하는 것을 권장합니다. 그렇지 않으면 화면이 가득 찬 메타데이터 정보를 삭제할 것입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
kafka 환경의 신속한 구축Step 3: Create a topic Let's create a topic named "test"with a single partition and only one replica: Kafka comes with a...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.