Closed JoungMinJu closed 4 months ago
Elastic에서 배포하는 공식 상용 플러그. Security, Alerting, Monitoring, Reporting, Graph, Machine Learning 모듈을 가지고 있음. 근데 어차피 대부분 유료래서.. 일단 빼고 진행
엘라스틱서치의 한글 분석용 플러그인
참조 두 가지는 다르다. docker-compose는 container를 정의하는 것이고, docker-stack은 service를 정의한 것이다.
docker-compose는 컨테이너를 정의하는 것이기 때문에, docker-compose 명령이 실행되는 순간에만 컨테이너의 상태가 올바른지 확인 후, 컨테이너가 켜져 있지 않으면 컨테이너를 실행시키고 docker-compose의 몫은 끝난다. docker-compose는 상태를 지속적으로 모니터링 하지 않기 때문에 만약 컨테이너가 5분안에 예기치 않게 종료 되면, composer는 컨테이너를 다시 시작하지 못한다.
하지만 docker stack은 docker 엔진의 원하는 서비스 상태를 항상 알 수 있으며, 그렇기 때문에 엔진이 원하는 서비스 상태와 지금 서비스 상태가 다르다면 조치도 가능하다.
예로 컨테이너가 죽으면 다른 컨테이너를 호출 하거나, 전체 노드에서 컨테이너를 몇개 가져가면 엔진을 감지하여 컨테이너를 정상적인 노드로 다시 가져올 수 있다. 즉, docker stack은 docker-compose에서 지원하지 않는 모니터링과 그에 따른 조치 기능을 제공하는 것이 큰 차이점이다.
참조 블로그 기반 구축 -> 그냥 일단 ! 예제 그대로 따라하면서 띄워보기
해당 레포 클론 받기
.env 파일 열어서
logstash/pipeline/logstash.conf
수정
input {
beats {
port => 5044
}
tcp {
port => 50000
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
# filebeat에서 fields: index_name으로 넘어온 값을 인덱스로 전송
index => "%{[fields][index_name]}"
hosts => "elasticsearch:9200"
user => "logstash_internal"
password => "${LOGSTASH_INTERNAL_PASSWORD}"
}
}
docker-compose build && docker-compose up -d
localhost:5601
접속해서
해당 레포 아래 filebeat 폴더 만들고 filebeat.yml 생성
dockerfile 생성
filebeat.yml작성 -> filebeat.inputs:
type: log enabled: true paths:
output.logstash: hosts: ["logstash:5044"]
logstash.conf수정
띄우니까?
로그스태시 에러 발생 logstash-1 | [2024-03-13T14:07:47,714][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://logstash_internal:xxxxxx@elasticsearch:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :message=>"Got response code '401' contacting Elasticsearch at URL 'http://elasticsearch:9200/'"}
https://hstory0208.tistory.com/entry/ELK-Logstash-401-Unauthorized-%EC%97%90%EB%9F%AC
-> logstash.conf 기본계정 elastic 으로 바꿈
해결
띄웠더니?
이제 Elastic의 index를 설정을 위해 메뉴에서 Management의 Stack Management 클릭
Kibana의 index Patterns 로 진입한다. 아래와 같은 index patterns을 등록 할 수 있다
해주니까
요런 창이 뜸
근데 뭔지 모르겠음
http://localhost:9200/access-log/_search
쳐서 들어가보면 {"took":2,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":0,"relation":"eq"},"max_score":null,"hits":[]}}
이런 상황 뭔 정보가 없느 ㄴ느낌?
https://mangkyu.tistory.com/197
+백로그 : 로깅 메세지 파싱하기
인덱스 이름 바꿔봄
몰라
근데 걍 docker container 내에 log 폴더에? .log 파일들이 안잡힘
-> filebeat 컨테이너내에 폴더 이름이 ㅣogs네
참조해서 다시 up
- /Users/joungminju/IdeaProjects/excuse-me-backend/log:/usr/share/filebeat/log
이렇게 바꾸니까 log파일 잡힘
그럼 저거 바라보게 수정해야하지 않나
paths:
- usr/share/filebeat/log/*.log
.0.log 땜에 못잡나
logback 수정해도 뭐.. 안뜬다 ㅎ ㅎ. .
지금 문제 -> elk, filebeat 다 돌고 log 파일도 폴더내에 잡히는데 Filebeat -> stash로 보내주지 못하고 있음
위에꺼 함 보자
filebeat.yml 설정에서 logstash:5400 -> localhost:5400으로 변경 잘 되는지 확인해보려고 localhost:9200 접속 -> 에러 발생
로그스태시에 애초에 이벤트가 안와서 es에 index pattern이라는 메뉴가 안잡히는 것
이거 보고
에러 로그 찍힌거 보면서 해결해나가기
"logstash에서 2024-03-31T14:52:47,067][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error {:url=>"http://elastic:xxxxxx@localhost:9200/", :exception=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :message=>"Elasticsearch Unreachable: [http://localhost:9200/][Manticore::SocketException] Connect to localhost:9200 [localhost/127.0.0.1] failed: Connection refused"}" 에러나요
->
5601 접속하ㄱ니
ㅎㅎㅎ..
elasticsearch.yml에 xpack.security.ena
bled: false
kibana.yml에서 elasticsearch.ssl.verificationMode: "none"
해결 안됨
위의 문제 해결하기
그네 뭐 어쩌다보니 write EPROTO 1090D19AFFFF0000:error:0A00010B:SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:354: 에러가 떴고
그래서 elasticsearch.hosts; 주소 https -> http로 변경함
근데 여전히 kibana->index patterns가 안뜸
logstash Connect to elasticsearch:9200 [elasticsearch/172.21.0.2] failed: Connection refused
https://dgjinsu.tistory.com/34 얘도 똑같ㅇㅌ이 data stream이 아예 안잡힘
https://velog.io/@tks7205/LogStash-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95filebeat-in-m2-mac etc 내에 filebeat 폴더가 업슨ㄴ데.. (* docker에서 elk 띄우고 로컬에서 filebeat 띄우려고헀었음)
개요
로그 모니터링 툴인 키바나 학습.
키바나란
인터페이스를 이용해서 많은 데이터를 쉽게 검색, 시각화, 탐색할 수 있는 오픈소스 분석 및 시각화 도구.
키바나는 Elasticsearch, Logstash, Beats와 함께 엘라스틱스택의 핵심 구성 요소이다.
키바나를 사용해서 elasticsearch 색인에 저장된 데이터를 검색 및 조회하는 것!
ELK stack
Logstash
다양한 소스의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 elasticsearch로 전달
Elasticsearch logstash로 부터 받은 데이터를 검색 및 집계를 하여 필요한 관심있는 정보를 획득
Kibana Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링
참조 블로그 참조 블로그 참조 블로그