[ELK] 파이썬 API 서버, Logstash, Kibana, Elasticsearch 연동
설명하기 앞서, API 서버, ELK 설치가 되었다는 가정하에 연동을 진행한다.
https://victorygamestudio.tistory.com/29
[ELK] ELK 설치하기 윈도우
1. ELK 란? ELK 는 Elasticsearch + logstash + kibana 의 앞글자만 딴 단어다. Elasticsearch : 분석 및 저장 logstash : 수집할 로그를 선정하고, 지정된 서버(Elasticsearch) 에 인덱싱하여 전송함. kibana : 데이터를 시각
victorygamestudio.tistory.com
https://victorygamestudio.tistory.com/32
[ELK] 파이썬 로그 API 서버 구현
이 글은 ELK 와 연동하기 위한 로그를 생성하는 서버 구현이다. 만약 ELK 설치가 궁금하다면 아래 링크를 참고하는 것이 좋다. https://victorygamestudio.tistory.com/29 [ELK] ELK 설치하기 윈도우 1. ELK 란? ELK
victorygamestudio.tistory.com
1. Elasticsearch 설정
Elasticsearch 는 버전 8.x 대에 들어서서 ssl 보안 설정이 자동으로 되어있다.
따라서 curl 나 logstash 가 접근할 때, 401 에러 또는 Attempted to resurrect connection to dead ES instance 을
뱉어낼 수 있으니 ssl 설정을 해제한다.
elasticsearch.yml 에서 아래 사진처럼 수정한다.
2. Kibana 설정
kibana.yml
파일에서 아래 텍스트들을 찾으면 # 으로 처리되어 있을텐데, # 을 제거한다.
그리고 아래 처럼 데이터를 넣어준다.
server.host: "localhost"
server.port: 5601
elasticsearch.hosts: ["http://localhost:9200"]
이렇게 하면, 동작 안 하던 Kibana 도 살아난다.
3. Logstash 설정
위의 ssl 을 껐던 이유는 사실 Logstash 때문이다.
ssl 이 켜져있는 상태에서 logstash 접근 시, 인증서 부재로 인해서
401 에러 또는 Attempted to resurrect connection to dead ES instance 가 발생한다.
ssl 을 꺼주었기 때문에, 로컬에서라면 편하게 접근 가능하다.
.conf 파일을 생성해주자. 이름은 아무렇게나 상관없지만, logstash-conf.conf 로 지었다.
logstash-conf.conf
input{
file{
path => "로그파일경로/log/*.txt"
start_position=>"beginning"
}
}
output {
elasticsearch{
hosts => ["localhost:9200"]
index => "log-%{+YYYY.MM.dd}"
}
}
위 .conf 에서 중요한 것은 index 설정이다.
- index
- Kibana 에서 Elasticsearch 로 접근해서 시각화하려면 index 가 필요하다.
3 - 1 Discover Create a View
- Name
- Data View 를 구분할 이름을 적는다.
- 예를 들어, 개발한 게임이름으로 구분 짓는다던지 할 수 있겠다.
- Index pattern
- 요게 중요한데, 위에서 말했던 것 처럼 Kibana 는 Elasticsearch 에 index 를 통해서 가져온다.
- 중요한 것은 한 개의 index 로 너무 많은 데이터를 처리할 경우 과부하가 일어날 수 있기 때문에 Logstash 설정에서 index => "log-%{+YYYY.MM.dd}" 을 넣었었다.
- 우리는 log- 로 시작하는 것들을 시각화하여야하기 때문에 log-* 을 넣어준다.
위 2개만 설정하고 저장한다.
4. 시연
요약
- 로그를 생성하는 클라이언트를 실행한다.
- 로그 서버는 받은 정보를 log 파일에 저장한다.
- Logstash 는 Elasticsearch 로 전달한다.
- Kibana 는 index 를 통해서 로그를 출력한다.