Tomcat의 catalina.out 을 filebeat를 통해 logstash로 전송 후 이걸 ES에 저장.

그리고 키바나에서 분석 및 기타 등등 하고 싶은 작업을 하는...

 

이걸 하게된 계기는 그냥 유부트 영상보다가 하게 된...

 

https://www.youtube.com/watch?v=J2PIBQgEpC4&list=PLVNY1HnUlO24LCsgOxR_eK2Yi4sOgH9Pg

허민석 님의 유투브 강의 인데, 이것만 보면 나도 이제 데이터사이언티스트 ㅋㅋㅋㅋ라고 생각하며 정독 했어요.

 

이 영상은 5.6 기반의 영상인데 나는 7.0 환경에서 하다보니 약간의 문제 아닌 문제들을 만나게 되었어요.

 

일단 E가 실행중이어야 L이 데이터를 보낼 수 있으며, L 또한 실행중이어야 F가 데이터를 보낼 수 있겠죠?

 

E는 그냥 켜있기만 하면 되고요!

 

L은 input과 output에 대한 정보가 기록된 conf 파일이 필요해요.

 

모든 내용을 다 알어야 하는건 아닌데

 

output 부분에서 if를 사용가능하더라고요.

output {
  if [host][hostname] == "www1" or [host][hostname] == "www2" {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      manage_template => false
      index => "front-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
    }
  }
  else if [host][hostname] == "batch" {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      manage_template => false
      index => "batch-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
    }
  }
  else {
    elasticsearch {
      hosts => ["http://localhost:9200"]
      manage_template => false
      index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
      document_type => "%{[@metadata][type]}"
    }
  }
}

 

if 에 조건부에 쓰인 부분이 정확히 뭔지도 모르고 그냥 예제 따라 했더니,

자꾸 else로 빠져서 내가 원하는 인덱스에 데이터를 안넣더군요!

 

그러다가 E에 쌓인 데이터를 보니 ...

조건절에 쓰인내용을 필드를 가리키는 거였...뭔지도 잘 모르고 계속 해보니 안될 수 밖에...

무슨 차이인지 모르겠으나(버전차이?) 필드 이름이 예제와는 다르게 넘어오고 있던...

 

그리고 filebeat는 tomcat이 설치된 서버에 설치를 하는데...

dpkg 설치를 해서 설정 파일은 /etc/filebeat에 있어요.

filebeat.yml을 열어보면

 

filebeat.inputs 와 output.logstash

부분을 수정 하면 되는데요.

 

일단 inputs 부분은

enabled 부분을 true로 변경하고

paths 부분을 톰캣의 catalina.out으로 변경하면 되겠죠?

 

그리고 예제에서는 멀티라인이 알아서 잘 처리가 되던데...버전에 따른 기본값의 차이인지 모르겠으나, 

저 부분이 주석이 걸린 상태에서는 작동이 안되어서, 한줄한줄 도큐멘트로 다 쌓이는...ㅎㅎ

순식간에 용량이 어마어마 해지더라고요~!!

 

pattern 부분은 본인 로그에 알맞게 수정해서 사용하면 될거 같아요!

보통 톰캣로그가 시작부분이 [시간]으로 시작을 해서 저렇게 하면 잘 처리되는듯 합니다!

 

그리고 두번째로 만난 문제!

curator에 대한 부분인데요. curator가 5.6버전까지만 있어요.

근데 뭣도 모르고 이거 설치하고 사용하려고 하니 버전차이로 인해 안되는거 있죠.

 

그래도 오래된 쓸모없는 로그자료는 지워야 하기에...찾아보니...

https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index-lifecycle-management.html

 

Getting started with index lifecycle management | Elasticsearch Reference [7.0] | Elastic

Getting started with index lifecycle managementedit Let’s jump into index lifecycle management (ILM) by working through a hands-on scenario. This section will leverage many new concepts unique to ILM that you may not be familiar with. The following section

www.elastic.co

 

이런게 있더라고요!

 

일단 정책? 을 만들어주고, 그 정책을 사용할 템플릿을 만들어 주고 해당 템플릿에는 여러 인덱스가 속하겠고요.

그럼 알아서 작동하는건데~~

기존에 있던 인덱스는 적용이 안되더라고요? 이 부분은 저도 잘 모르겠어요. 좀더 찾아봐야 할까 했는데...

어차피 새로 만드는 인덱스만 적용되면 저는 만족 하는 부분이라...ㅎㅎ

 

Kibana DEV Tool Console

 

정책은 위처럼도 가능하지만, Kibana > Management > Index Lifecycle Policies에서도 작성이 가능해요

작성한 정책을 인덱스템플릿과 연결하는것도 kibana에서 가능합니다.

 

그리고 직면하는 또 새로운 문제 ㅋㅋㅋㅋㅋ

 

https://discuss.elastic.co/t/index-lifecycle-error/171254/4

 

Index lifecycle error

I have the same error. @dakrone the indices are being created by Metricbeat. The template does not contain an alias: { "metricbeat-6.6.0": { "order": 0, "index_patterns": [ "metricbeat-6.6.0*" ], "settings": { "index": { "lifecycle": { "name": "Metricbeat"

discuss.elastic.co

이 부분은 공식문서에도 나오는 부분인데 인덱스를 alias를 지정해야하는 문제다.

근데 인덱스가 logstash를 통해 데이터를 받으며 자동으로 생성이 되는건가 어찌해야할까...

위 내용을 잘 읽어보면 해결책이 있다.

 

처음에 한번만 수동으로 인덱스를 생성하면 문제가 안된다고 하네요.

공식문서에도 비슷한 내용이 적혀있긴한데 영알못인 나한테는 너무 어렵게 다가옴...

 

그리도 또 한가지 문제를 만남...

 

 

인덱스 이름의 패턴은 -뒤에 숫자만 가능...하다는...그렇다면 . 빼고 숫자만 남겨주면 되려나?..

+ Recent posts