삽질하면서 느낀 점 나열.... 딱히 해결책은 아닌거같다ㅎ
1. Logstash의 ouput plugin에서 elastisearch 와 amazon_es 구분해야함
elasticsearch - 서버에 엘라스틱서치 설치해서 쓸 경우
amazon_es - 말그대로 아마존 엘라스틱서비스 사용하고 있는 경우 - optional 이라고 공식 문서에서 설명하지만...
access_key와 secret key 를 다 넣어주어야 함
- 그리고 저 둘 사이에 버전차이가 있는듯 했다,, amazon_es가 업데이트가 좀 늦어서 버전 6을 인스톨 하라는 사람들이 있어서 인스톨 해줬는데
bin/logstash-plugin install --version 6.0.0 logstash-output-amazon_es (버전 6으로 다시)
그런데 굳이 플러그인을 인스톨을 해야되는건가 여전히 의문이 듬.. 이게 그렇게 큰 효과가 있었는지는 모르겠다
2. logstash output에 인덱스를 지정해주지 않으면 자동으로 logstash 날짜별 인덱스가 생성됨
반대로 만들어놓지 않은 인덱스를 써주면 인덱스가 생성됨
3. 템플릿으로 엄청 고생
인덱스를 설정 안해주고(로그스태시 날짜별 자동 생성된 인덱스 사용) logstash 실행하면
[ERROR] 2020-01-30 13:53:26.307 [[main]-pipeline-manager] amazones - Failed to install template: [400]
{"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"Root mapping definition has unsupported parameters:
[_default_ : {dynamic_templates=[{message_field={path_match=message, mapping={norms=false, type=text},
템플릿을 저렇게 지정하라고 나오는데,, 그래서 친절하게 누군가 올려준 json 형식 템플릿을 가져다가 그대로 썼었다.
>>> https://stackoverflow.com/questions/48682000/logstash-conf-error-amazon-es/48687996#48687996
하지만 딱히 도움이 되지는 않앗다,,,ㅎㅅㅎ
템플릿 에러도 계속 떴었고, 저 템플릿을 조금씩 수정하면 어쩌다 에러가 없어지기도 했는데, 인덱스 안에 그 어떤 값도 들어가잇지 않아서 그냥 계속 삽질했었음
4. 지금까지의 결론
여튼 logstash stdin input plugin을 통해서 amazon_es에 인덱스 생성하고 데이터 넣는 것을 성공함.
인덱스는 새로 만들어 주었고, 템플릿은 기존에 있는것을 사용중. 그러니까 잘 들어간다